关键字查询
一:只有一个文本框输入关键字查询
输入关键字 : “奥迪”
<!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,查询如下
注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!注意空格!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!