zoukankan      html  css  js  c++  java
  • 【淘宝客】根据淘客联盟精选清单(淘宝天猫内部优惠券)搜索淘宝天猫优惠券dome-分页版

    这篇文章,可能是淘宝天猫内部优惠券最后一篇了,中间也遇到许多问题,毕竟自己也就会写一点点前端,所以给这篇文章先来个总结:

    1、excel转dat文件类型,把dat文件做数据库,php操作dat数据库;

    2、dat文件读取编码问题(会乱码);

    3、dat文件读取内容(foreach循环),文件的打开和关闭操作就不提了;

    4、多个关键字和数据库中的信息比对,提取需要的信息(strstr用法);

    5、重点来了,我们要开始分页了(array_slice用法);

    6、分页问题,分页第一页正常,点击第二页开始,后面都没有数据;

    针对【分页失败】问题主要是由于关键字查询是post过来,点击分页后是get方法,导致数据不一致;解决方法如下:

    1、在搜索框下来一个隐藏的input做页码接收(默认值是页码1);

    2、在分页链接上接收搜索关键字和页面参数;

    3、用jq接收分页链接中的关键字和页码,并取消分页链接的点击事件的默认动作,把提前到的数据修改到form表单中,并提交表单,模拟post过程;

    4、如有更好的分页解决方式,欢迎回复。

    7、以上提到的问题,均在代码上加注释了,如有其他好的方法,欢迎提供其他好方法。

    <?php
    
    ini_set("error_reporting","E_ALL & ~E_NOTICE");
    function webalert($Key){
    	$html="<script>
    ";
    	$html.="alert('".$Key."');
    ";
    	$html.="history.go(-1);
    ";
    	$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("	", $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>
    

      

  • 相关阅读:
    数字视频基础(四) 分类: 生活百科 2014-07-01 11:19 388人阅读 评论(0) 收藏
    数字视频基础(三) 分类: 生活百科 2014-07-01 11:19 357人阅读 评论(0) 收藏
    数字视频基础(二) 分类: 生活百科 2014-07-01 11:18 398人阅读 评论(0) 收藏
    数字视频基础(一) 分类: 生活百科 2014-07-01 11:17 345人阅读 评论(0) 收藏
    PCI-X总线 分类: 浅谈PCI 2014-07-01 08:28 697人阅读 评论(2) 收藏
    Mfc Tips
    windows 桌面开发 (zz)
    备 忘
    编程坑爹的注意
    虚拟机安装后的基本操作
  • 原文地址:https://www.cnblogs.com/huige728/p/9082196.html
Copyright © 2011-2022 走看看