$sql="SELECT * FROM 数据表名 WHERE 1";$class1 && $sql.=" and `class1`='$class1'"; $class2 && $sql.=" and `class2`='$class2'"; $key && $sql.=" and (`key` like '%$key%' or `key1` like '%$key%')";......
给你个我做的,你改改~ 关键就是这句sql $str="select * from base where representative like '%$keywork%' and (type like '%$type%' and state like '%$state%')
还是不行啊。 不知道哪里有问题。 表结构: 表名:wen 结构:id,wen_title,da_id,hang_id, <?php error_reporting(0); require("conn.php"); $type=$_GET["type"]; $htype=$_GET["htype"]; $keys=$_GET["keys"]; /*echo $type; echo $htype; echo $keys;*/$sqladd = array(); if($type){ $sqladd[] = "da_id='$type'"; } if($htype){ $sqladd[] = "hang_id='$htype'"; } if($keys){ $sqladd[] ="(title like '%$keys%' or text like '%$keys%')"; } $wheresql = empty($sqladd)?"1":implode(' AND ',$sqladd); $sql = "SELECT * FROM wen WHERE $wheresql"; $str=mysql_query($sql,$id); $sonum=mysql_num_rows($str); for($i=1;$i<=$sonum;$i++){ $info=mysql_fetch_array($str); $wid=$info["id"]; $wen_title=$info["wen_title"]; $wen_text=$info["wen_text"];echo $wen_title; } ?>
error_reporting(0); require("conn.php"); $type=$_GET["type"]; $htype=$_GET["htype"]; $keys=$_GET["keys"]; /*echo $type; echo $htype; echo $keys;*/ 这个是没有错的,就下面,错误情况:当有搜索条件时,错误提示:mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\PHPnow\htdocs\xiezuo\so.php on line 24当没有搜素条件是搜索全部。
$where = '';
if(条件1)
$where = 条件一
if(条件2)
$where .= 条件2
if(条件3)
$where .=条件3当然 了,说的比较粗,没有具体的东西也说不出什么来,还可以进行扩展
如果是全匹配 WHERE 字段='条件'
如果是模糊匹配 WHERE 字段 LIKE '%条件%'
说实话,真的是不知道如何对楼主的这个问题下手,楼主可否给出具体的 sql条件要求,你那“分类一”,“分类二”太模糊啦!
如果就是这样的,那支持 bing19870624 的!!! 哈哈
$class2 && $sql.=" and `class2`='$class2'";
$key && $sql.=" and (`key` like '%$key%' or `key1` like '%$key%')";......
关键就是这句sql
$str="select * from base where representative like '%$keywork%' and (type like '%$type%' and state like '%$state%')
你要先確定你要搜索要用到的表寫出來,跟著 寫出關聯字段,條件...拼寫sql,程序處理..就是這樣...
这个表主要构成:type01(分类01),type02(分类02),title(标题),text(文章)等。我的难点是:第一、这三个条件组合有8种,是不是每一种组合要搜一次。如分类1为空、其他两个不为空……第二是:前两个类别,0表中字段已经有了,直接判断相等就可以。关键字搜索却要从标题和文章两个地方进行模糊搜索。这个就不会了第二是关键字显红色。我不会做。
if($type01){
$sqladd[] = "type01='$type01'";
}
if($type02){
$sqladd[] = "type02='$type02'";
}
if($keyword){
$sqladd[] = "title like '%$keyword%' or text like '%$keyword%'";
}
$wheresql = empty($sqladd)? "1" : implode(' AND ', $sqladd);
$sql = "SELECT * FROM yourtable WHERE $wheresql";...八種情況都在裏面了...
————————————————
这一句能写个注释吗?俺看不懂。菜鸟的悲哀啊!
如果用戶有給出搜索條件, 就按查詢條件來查詢注意: ' AND ' 中 AND的兩端是有空格的,如果少了一個空格都會出錯
$sqladd[] = "title like '%$keyword%' or text like '%$keyword%'";
应该加括号吧:
$sqladd[] = "(title like '%$keyword%' or text like '%$keyword%')";
不知道哪里有问题。
表结构:
表名:wen
结构:id,wen_title,da_id,hang_id,
<?php
error_reporting(0);
require("conn.php");
$type=$_GET["type"];
$htype=$_GET["htype"];
$keys=$_GET["keys"];
/*echo $type;
echo $htype;
echo $keys;*/$sqladd = array();
if($type){
$sqladd[] = "da_id='$type'";
}
if($htype){
$sqladd[] = "hang_id='$htype'";
}
if($keys){
$sqladd[] ="(title like '%$keys%' or text like '%$keys%')";
}
$wheresql = empty($sqladd)?"1":implode(' AND ',$sqladd);
$sql = "SELECT * FROM wen WHERE $wheresql";
$str=mysql_query($sql,$id);
$sonum=mysql_num_rows($str);
for($i=1;$i<=$sonum;$i++){
$info=mysql_fetch_array($str);
$wid=$info["id"];
$wen_title=$info["wen_title"];
$wen_text=$info["wen_text"];echo $wen_title;
}
?>
require("conn.php");
$type=$_GET["type"];
$htype=$_GET["htype"];
$keys=$_GET["keys"];
/*echo $type;
echo $htype;
echo $keys;*/
这个是没有错的,就下面,错误情况:当有搜索条件时,错误提示:mysql_num_rows(): supplied argument is not a valid MySQL result resource in D:\PHPnow\htdocs\xiezuo\so.php on line 24当没有搜素条件是搜索全部。
for($i=1;$i<=$sonum;$i++){
$info=mysql_fetch_array($str);
$wid=$info["id"];
$wen_title=$info["wen_title"];
$wen_text=$info["wen_text"];echo $wen_title;
}
}
也是一样的错误
ghostxyz0和dingsongtao请在后面我发的散分贴中各拿100分。