搜索来源:mysql数据库有三个搜索条件。条件1:分类一。条件2:分类二。条件2:关键字。求教实现思路和较为关键的代码部分。300分求。

解决方案 »

  1.   

    SELECT * FROM 数据表名 WHERE `分类一`='条件1' AND `分类二`='条件2' AND `关键字`='条件3';
      

  2.   

    根据传过来的值判断连接出来他的查询条件
    $where = '';
    if(条件1)
    $where = 条件一
    if(条件2)
    $where .= 条件2
    if(条件3)
    $where .=条件3当然 了,说的比较粗,没有具体的东西也说不出什么来,还可以进行扩展
      

  3.   

    首先你要确定搜索哪些表 哪些字段 
    如果是全匹配 WHERE 字段='条件'
    如果是模糊匹配 WHERE 字段 LIKE '%条件%' 
      

  4.   

    分类即是筛选条件优化SQL语句
      

  5.   

       嘿嘿,不自量力一下,也来讨教讨教!!!
       说实话,真的是不知道如何对楼主的这个问题下手,楼主可否给出具体的 sql条件要求,你那“分类一”,“分类二”太模糊啦!
       如果就是这样的,那支持  bing19870624 的!!!  哈哈
      

  6.   

    根据 get过来的参数作不同的select就行了
      

  7.   

    如果查询条件处于不同的表中,也可以创建视图,mysql5.1及以上版本支持
      

  8.   

    $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%')";......
      

  9.   

    给你个我做的,你改改~
    关键就是这句sql
    $str="select * from base where representative like '%$keywork%' and (type like '%$type%' and state like '%$state%')
      

  10.   

    你是做全站搜索嗎?
    你要先確定你要搜索要用到的表寫出來,跟著 寫出關聯字段,條件...拼寫sql,程序處理..就是這樣...
      

  11.   

    其实只是从一个表中搜索。
    这个表主要构成:type01(分类01),type02(分类02),title(标题),text(文章)等。我的难点是:第一、这三个条件组合有8种,是不是每一种组合要搜一次。如分类1为空、其他两个不为空……第二是:前两个类别,0表中字段已经有了,直接判断相等就可以。关键字搜索却要从标题和文章两个地方进行模糊搜索。这个就不会了第二是关键字显红色。我不会做。
      

  12.   

    $sqladd = array();
    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";...八種情況都在裏面了... 
      

  13.   

    $wheresql = empty($sqladd)?"1":implode('AND',$sqladd);
    ————————————————
    这一句能写个注释吗?俺看不懂。菜鸟的悲哀啊!
      

  14.   

    $wheresql = empty($sqladd)?"1":implode(' AND ',$sqladd);如果用戶沒有給搜索條件, 就把全部數據查詢
    如果用戶有給出搜索條件, 就按查詢條件來查詢注意:   ' AND ' 中 AND的兩端是有空格的,如果少了一個空格都會出錯
      

  15.   

    按逻辑来说:
    $sqladd[] = "title like '%$keyword%' or text like '%$keyword%'";
    应该加括号吧:
    $sqladd[] = "(title like '%$keyword%' or text like '%$keyword%')";
      

  16.   

    str_replace($key,"<font color=red>$key</font>",$title);
      

  17.   

    还是不行啊。
    不知道哪里有问题。
    表结构:
    表名: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;
    }
    ?>
      

  18.   

    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当没有搜素条件是搜索全部。
      

  19.   

    改为if($sonum<1){echo "搜索不到相关内容";}else{
    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;
    }
    }
    也是一样的错误
      

  20.   

    $sqladd[] ="(title like '%$keys%' or text like '%$keys%')";改为:$sqladd[] ="wen_title like '%$keys%'";你的表里都没有title,text字段!!!
      

  21.   

    用sql找出原文,在匹配关键字前后n个长度字符即可
      

  22.   

    好 ,现在开始结帖子。
    ghostxyz0和dingsongtao请在后面我发的散分贴中各拿100分。