以下是引用片段: 制作个标签,从后台随便标签位置添加都可以标签代码 <table width="100%" cellpadding="0" cellspacing="0" border="0"> <form name="formsearch" method="post" action="http://www.qibomb.com/do/search.php"> <tr> <td height="14"> 标题:<input type="text" name="keyword" size="10"> 关键字:<input type="text" name="keyword1" size="10"> <input type="submit" name="Submit32" value="搜索"> <input type="hidden" name="searchTable" value="article"> </td> </tr> </form> </table>
然后针对/do/search.php进行修改 从10行到14行 if( ($_GET[type]||$_POST[type]) && !($keyword||$keyword1) ) //没写入任何搜索字段时执行它 { showerr("关键字不能为空"); }
17行 if( $_GET[keyword] || $_POST[keyword] || $keyword1 )//如果填写标题或关键词的任意一个的时候从这里开始执行,这里$_POST[keyword] 和$keyword1是对应表单写法不同判断效率是一样的,把$_POST[keyword]改成$keyword也是可以的,但可能会影响到独立搜索页
然后进入if语句我们看到从24行开始有一段代码 [code]if(!$type) { $type='title'; }
我们回过来看一下我们制作的表单,它发送的值中没有$type对应的值,所以$type是空的,执行此段之后,$type=='title' 好啦,那我们就开始往下找,找到 elseif($type=='title') //因为$type=='title'满足条件,务必执行此段代码,很显然从这段代码下手 { $SQL.=" AND BINARY A.title LIKE '%$keyword%' "; }
修改成以下代码 elseif($type=='title') { $SQL.=" AND BINARY A.title LIKE '%$keyword%' "; //这个就不用多讲了,就是对标题模糊查询 if($keyword1) { //echo 'test';exit; unset($array);//清空数据 $query = $db->query("SELECT B.aid FROM {$pre}keywordid B LEFT JOIN {$pre}keyword A ON A.id=B.id WHERE A.keywords='$keyword1'"); //上面这一行乍一看感觉一头雾水,没关系哥也是猜测不是很理解,大概意思从p8_keywordid表里获取符合$keyword1的文章id。从上一个elseif中抄袭的[s:29] //p8文章模型关联各种数据表,挺复杂的,如果你把这些数据表都理清了,你就[s:30] 很NB了 while($rs = $db->fetch_array($query)){ $array[]=$rs[aid];//对应文章aid放到$array数组 } if($array){ $SQL.=" AND A.aid IN (".implode(',',$array).") "; //把$array的数据用逗号分隔放到一个字符串,然后关联文章aid来查找 }else{ $SQL.=" AND 0 "; //没找到关键词 } } }
请替换do/search.php文件别忘了备份 |