做一个数据搜索的网站,往四个文本框或者只往其中任意文本框中输入,按提交,相应的结果就会以网页的形式出来。 以下是四个文本框的代码:
form.php<form action="data.php " method="get" name="form1" >
<p><input name="township" type="text" size="8"></p></th>
<p><input name="range" type="text" size="8"></p>
<p><input name="dir" type="text" size="8"></p>
<p><input name="section" type="text" size="8"></p>
<input type="submit" name="submit" value="Submit">
</form>
data.php<?php$map=array('Township'=>'township','Range'=>'range', 'dirid'=>'dir', 'Section'=>'section'); $where=''; $and=''; foreach ($map as $k => $v) { if (!empty($_GET[$v])) { $where.=$and.$k.'='.$_GET[$v]; $and=' and '; } } $query =" SELECT Business_Owner,Business_Name,Mailing_Address,Phone_Number,Crop_Type,Crop_Location,Section,Township,Range,Quarter,Acreage,County FROM pesticide_sensitive_crop ORDER BY Township"; if (!empty($where)) { $query.=' WHERE '.$where; }?>
因为其他三个文本框(name="township",name="range",name="section")输入的都是整数,只有这个'name' 为'dir'文本框中是输入"E"或"W", 我在数据库中增加了一列('dirid'),用'1'代表"E", 用'2' 代表"W", 这样做的话往文本框输入 1 或 2 可以搜索出数据,可是怎么做,能直接往'dir'文这个本框直接输入 E 或者 W , 也可以得到相同的结果呢?谢谢大家帮忙!
form.php<form action="data.php " method="get" name="form1" >
<p><input name="township" type="text" size="8"></p></th>
<p><input name="range" type="text" size="8"></p>
<p><input name="dir" type="text" size="8"></p>
<p><input name="section" type="text" size="8"></p>
<input type="submit" name="submit" value="Submit">
</form>
data.php<?php$map=array('Township'=>'township','Range'=>'range', 'dirid'=>'dir', 'Section'=>'section'); $where=''; $and=''; foreach ($map as $k => $v) { if (!empty($_GET[$v])) { $where.=$and.$k.'='.$_GET[$v]; $and=' and '; } } $query =" SELECT Business_Owner,Business_Name,Mailing_Address,Phone_Number,Crop_Type,Crop_Location,Section,Township,Range,Quarter,Acreage,County FROM pesticide_sensitive_crop ORDER BY Township"; if (!empty($where)) { $query.=' WHERE '.$where; }?>
因为其他三个文本框(name="township",name="range",name="section")输入的都是整数,只有这个'name' 为'dir'文本框中是输入"E"或"W", 我在数据库中增加了一列('dirid'),用'1'代表"E", 用'2' 代表"W", 这样做的话往文本框输入 1 或 2 可以搜索出数据,可是怎么做,能直接往'dir'文这个本框直接输入 E 或者 W , 也可以得到相同的结果呢?谢谢大家帮忙!
都可以搜索到?
那你可以判断GET传过来的是数字还是字母,是字母,则对dir进行搜索,是数字,则对dirid进行搜索。请参考:
is_bool()
is_float()
is_numeric()
is_string()
is_array()
is_object()
$map=array('Township'=>'township','Range'=>'range', 'dirid'=>'dir', 'Section'=>'section');
$where='';
$and='';
$dir_array['1']=1;$dir_array['E']=1;$dir_array['2']=2;$dir_array['W']=2;
foreach ($map as $k => $v) {
if (!empty($_GET[$v])) {
$value =$_GET[$v];
if ($k=='dirid')$value=$dir_array[$value];
$where.=$and.$k.'='.$value;
$and=' and ';
}
}
$query =" SELECT Business_Owner,Business_Name,Mailing_Address,Phone_Number,
Crop_Type,Crop_Location,Section,Township,Range,Quarter,Acreage,County
FROM pesticide_sensitive_crop ORDER BY Township";
if (!empty($where)) {
$query.=' WHERE '.$where;
}试试看