【淘寶客】根據淘客聯盟精選清單(淘寶天貓內部優惠券)搜索淘寶天貓優惠券dome-分頁版

這篇文章,多是淘寶天貓內部優惠券最後一篇了,中間也遇到許多問題,畢竟本身也就會寫一點點前端,因此給這篇文章先來個總結:javascript

一、excel轉dat文件類型,把dat文件作數據庫,php操做dat數據庫;php

二、dat文件讀取編碼問題(會亂碼);css

三、dat文件讀取內容(foreach循環),文件的打開和關閉操做就不提了;html

四、多個關鍵字和數據庫中的信息比對,提取須要的信息(strstr用法);前端

五、重點來了,咱們要開始分頁了(array_slice用法);java

六、分頁問題,分頁第一頁正常,點擊第二頁開始,後面都沒有數據;jquery

針對【分頁失敗】問題主要是因爲關鍵字查詢是post過來,點擊分頁後是get方法,致使數據不一致;解決方法以下:c++

一、在搜索框下來一個隱藏的input作頁碼接收(默認值是頁碼1);web

二、在分頁連接上接收搜索關鍵字和頁面參數;數據庫

三、用jq接收分頁連接中的關鍵字和頁碼,並取消分頁連接的點擊事件的默認動做,把提早到的數據修改到form表單中,並提交表單,模擬post過程;

四、若有更好的分頁解決方式,歡迎回復。

七、以上提到的問題,均在代碼上加註釋了,若有其餘好的方法,歡迎提供其餘好方法。

<?php

ini_set("error_reporting","E_ALL & ~E_NOTICE");
function webalert($Key){
	$html="<script>\r\n";
	$html.="alert('".$Key."');\r\n";
	$html.="history.go(-1);\r\n";
	$html.="</script>";
	exit($html);
}

function charaget($data){
    if(!empty($data) ){    
		$fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ;   
		if( $fileType != 'UTF-8'){   
			$data = mb_convert_encoding($data ,'UTF-8' , $fileType);   
		}   
    }   
    return $data;    
}




if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	$trimmed = array_map('trim', $_POST);
	$key=$trimmed['key'];
	$page=$trimmed['page'];

	if(empty($key)) {
		webalert('親,您確認下輸入!');
	}
	$keyword = explode(" ", $key); //拆分關鍵字爲數組
    $keycount = count($keyword); //統計關鍵字個數

	$files = "taobao.dat";
	
	$filer = fopen($files, "r") or webalert('沒法打開文件!');
	
	$data = []; // 最終的數據
	
	while (!feof($filer)) {//檢測是否已到達文件末尾

		$row = fgets($filer);//從文件指針中讀取一行
        $rows = trim(charaget($row));//轉UTF-8,並移除字符串兩側的空白字符或其餘預約義字符
		//var_dump($rows);
		if ($rows) {
			$e_rows = explode("\t", $rows);
	
			$b=0;	//初始化關鍵字,比對次數

			foreach($keyword as $val){ 				
				if (strstr( $e_rows[0] , $val ) !== false ){	//搜索框中的關鍵字和數據庫中的標題匹配			

					$b++;
					
					if ($b == $keycount) {//篩選出多個關鍵字出如今同一個標題中
						$c++;//篩選後,查詢結果進行編號
						
						//var_dump($e_rows);
					
						array_push($data,$e_rows);
						
					}						 
				}	
			}						
		}
	}
	//echo "$c";
	if ($c < 1) {
		echo '<table cellspacing="0"><tr>';
		echo "<td colspan=2>沒有查詢到相關信息哦。<br>";
		echo "<strong>可能緣由及建議:</strong><br>";
		echo "1. 若是沒有結果請嘗試減小或更換查詢關鍵詞。<br>";
		echo "2. 多關鍵詞用空格隔開,參考:毛衣 加厚 男。<br>";
		echo "3. 只涵蓋部分類目:有些類目的商品查詢不到。</td>";
		echo '</tr></table>';
	}	
	fclose($filer);
	
}	
	//var_dump($data);

	//計算篩選出來的數組條數
	$num = count($data); 
	
	//規定每頁顯示的條數
	$display = 5;
	
	//計算總頁面數 
	$countpage = ceil($num/$display);
	//判斷當前頁面是否爲空 若是爲空就表示爲第一頁面 
	$page=(empty($page))?'1':$page;   
	//計算每次分頁的開始位置 
	$start = ($page-1)*$display;
	$pagedata=array();
	$pagedata = array_slice($data,$start,$display,true); 
	//var_dump($pagedata);exit;
	//echo "$num == $display === $countpage";
	//exit; 
?>




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>淘寶天貓優惠券dome-分頁版</title>
</head>

<body>
<form class="navbar-form navbar-left" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
	<div class="form-group">
		<input type="text" name="key" id="key" class="form-control" placeholder="Search">
		<input type="hidden" name="page" value="1" id="page">
	</div>
	<button type="submit" class="btn btn-default">搜索</button>
</form>

<?php


foreach($pagedata as $k => $v){	
?>	
	<table>
	<tbody>
	<tr>

		<td><?php echo  $v['0']; ?></td>
		<td><img src="<?php echo  $v['1']; ?>" width="100" /></td>
		<td><a target="_blank" href="<?php echo  $v['2']; ?>">購買連接</a></td>
		<td>商品價格(單位:元):<?php echo  $v['3']; ?></td>
		<td>商品月銷量:<?php echo  $v['4']; ?></td>
		<td>店鋪名稱:<?php echo  $v['5']; ?></td>
		<td>平臺類型:<?php echo  $v['6']; ?></td>
		<td>優惠券面額:<?php echo  $v['7']; ?></td>
		<td>優惠券開始時間:<?php echo  $v['8']; ?></td>
		<td>優惠券結束時間:<?php echo  $v['9']; ?></td>
		<td><a target="_blank" href="<?php echo  $v['10']; ?>">商品優惠券推廣連接</a></td>		
	</tr>
	</tbody>
	</table>

<?php
}
?>	
	
<?php
	
	if($page>1){

		echo '<p><a href="?page=1&key='.$key.'">首頁</a></p>';
		
		echo '<p><a href="?page='.($page-1).'&key='.$key.'">上一頁</a></p>';
	}
	if($page<$countpage)
	{
		echo '<p><a href="?page='.($page+1).'&key='.$key.'">下一頁</a></p>';
		
		echo '<p><a href="?page='.$countpage.'&key='.$key.'">末頁</a></p>';
	} 	

?>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script language="javascript">  
$(function(){
    $("p a").click(function(event) {
        // 獲取這個a標籤的href中的url
        url = $(this).attr("href");
		page=url.split('=')[1];
		key=url.split('=')[2];
		
        // 取消點擊事件的默認動做
        event.preventDefault();
        // 修改form中的action動做
        $("#page").attr("value", page);
		$("#key").attr("value", key);
		
        // 提交表單
        $("form").submit();
    });
});

</script>
</body>
</html>
相關文章
相關標籤/搜索