做一个数据搜索的网站,往四个文本框或者只往其中任意文本框中输入,按提交,相应的结果就会以网页的形式出来。  以下是四个文本框的代码:
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 , 也可以得到相同的结果呢?谢谢大家帮忙!

解决方案 »

  1.   

    你现在数据库里既有dir,又有dirid?
    都可以搜索到?
    那你可以判断GET传过来的是数字还是字母,是字母,则对dir进行搜索,是数字,则对dirid进行搜索。请参考:
    is_bool() 
    is_float() 
    is_numeric() 
    is_string() 
    is_array() 
    is_object() 
      

  2.   


    $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;
    }试试看
      

  3.   

    根据二楼的代码试了下,往township文本框中输入 ‘12’,dir文本框中输入 ‘E’;query结果出错: Could not query: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Township=12 and dirid=1' at line 3怎么改啊?
      

  4.   

    将SQL语句输出来看看。 怕是少了个空格。