关键字查询

一:只有一个文本框输入关键字查询

输入关键字 : “奥迪”

<!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>无标题文档</title>
</head>

<body>
<form action="AMlianxi.php" method="post">
<div>
    名称:
    <input type="text" name="name" />
    <input type="submit" value="查询" />


</div>
</form>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
    <td>代号</td>
    <td>名字</td>
    <td>价格</td>

</tr>

<?php
    include("DBDA.php");
    $db= new DBDA();
    
    $str="";
    if(!empty($_POST["name"]))    //判断是不是空
    {
        $name =$_POST["name"];
        if($name !="")            //判断是不是空字符串
        {
            $str =$str." where name like '%{$name}%' ";
            }
        }
    
    
    $sql = "select code,name,price from car".$str;
    
    $attr = $db->Query($sql,$type=1,$db="xinjian");
    
    for($i=0;$i<count($attr);$i++)
    {
        echo "<tr><td>{$attr[$i][0]}</td><td>{$attr[$i][1]}</td><td>{$attr[$i][2]}</td></tr>";
        }

?>


</table>
</body>
</html>

二:两个文本框 输入关键字查询

注意:可能出现4种情况

    1.第一个条件符合,第二个也符合

    2.第一个条件符合,第二个不符合

    3.第一个条件不符合,第二个符合

    4.第一个条件不符合,第二也不符合

思路:在第一种方法的sql语句中加where,分别查询两列,重点是两个条件需要用and链接

<!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>无标题文档</title>
</head>

<body>
<form action="AMlianxi.php" method="post">
<div>
    名称:
    <input type="text" name="name" />
    价格:
    <input type="text" name="price" />
    <input type="submit" value="查询" />


</div>
</form>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
    <td>代号</td>
    <td>名字</td>
    <td>价格</td>

</tr>

<?php
    include("DBDA.php");
    $db= new DBDA();
    
    @$name=$_POST["name"];
    @$price=$_POST["price"];  //定义两个变量接收input输入的内容
    
    
    $str=" where";    //先定义一个变量等于where
    
    $tj1 ="";
    $tj2 ="";        //定义两个变量 tj1,tj2
    
    //开始判断第一个条件
    if($name !="")
    {
        $tj1=" name like '%{$name}%'" ;    //如果输入的内容不为空,tj1等于where后面的一半select语句 
        }
    else
    {
        $tj1 = " 1=1";                //如果输入的内容是空,因为有个and,所以随便加一个绝对成立的条件
        }
        
    //判断第二个条件
    if($price !="")
    {
        $tj2 = " price = '{$price}'";    //price这一个列等于输入进来的$price
        }
    else
    {
        $tj2 = " 1=1";
        }
    
    //判断完之后
    $str = $str.$tj1." and".$tj2;//这句话的意思是,假如name没输,是个空的,那么这句话就等于 $str=where 1=1 and price = '{$price}'
                                //把$str并到下面sql语句中就完整了
    
    $sql = "select code,name,price from car".$str;
    
    $attr = $db->Query($sql,$type=1,$db="xinjian");
    
    for($i=0;$i<count($attr);$i++)
    {
        $mc = str_replace($name,"<span style='color:red'>{$name}</span>",$attr[$i][1]);        //关键字高亮显示
        $mc1 = str_replace($price,"<span style='color:red'>{$price}</span>",$attr[$i][2]);    
        
        echo "<tr><td>{$attr[$i][0]}</td><td>{$mc}</td><td>{$mc1}</td></tr>";        //把$attr[$i][1]换成$mc 
        }

?>


</table>
</body>
</html>

名称输入“奥迪”,查询如下

名称什么也不输入,价格输入30.00,查询如下

注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

原文地址:https://www.cnblogs.com/zhanghaozhe8462/p/5340388.html