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