这是我的表单:我有三个字段按密码,类别和名称搜索。
<form name="f1" action="" method="post">
<input type="text" name="pincode" id="zipsearch" value='<?php echo $pincode;?>' class="buttonlengths" placeholder="Search By pincode,Area,State" required/><br/><br/>
<select name="categorypincode" ize="40" class="buttonlengths" />
<option value="">select the subject</option>
<option value="Class I-V Tuition" <?php if($categorypincode=='Class I-V Tuition') { echo 'selected'; }?>>Class I-V Tuition</option>
<option value="Class VI-VIII Tuition" <?php if($categorypincode=='Class VI-VIII Tuition') { echo 'selected'; }?>>Class VI-VIII Tuition</option>
</select><br/><br/>
<input type="text" name="tutorname" value="<?php echo $tutorname; ?>" class="buttonlengths" placeholder="Search By Tutor Name"/><br/><br/>
<input type="submit" id="tbx2" name="submitpincode" value="Search"/>
</form>
<?php
$pincode=$_POST['pincode'];
$categorypincode=$_POST['categorypincode'];
$tutorname=$_POST['tutorname'];
if($pincode!='' && $categorypincode!='' && $tutorname!='')
{
$sql=mysql_query("SELECT tr.*, t.* FROM tinfo t left join tutorregistration tr on tr. tid=t.tsid where pincode LIKE '%$pincode%' and classconducted LIKE '%$categorypincode%' and name LIKE '%$tutorname%'");
}
else if($pincode!='' && $categorypincode!='' )
{
$sql=mysql_query("SELECT tr.*, t.* FROM tinfo t left join tutorregistration tr on tr. tid=t.tsid where pincode LIKE '%$pincode%' and classconducted LIKE '%$categorypincode%'");
}
else if($pincode!='')
{
$sql=mysql_query("SELECT tr.*, t.* FROM tinfo t left join tutorregistration tr on tr. tid=t.tsid where
pincode LIKE '%$pincode%'");
}
?>
注意: 我想在此之前进行分页工作,输出应该提供单个查询。如何连接成单个sql查询。我希望你理解我的疑问 如何处理我将处理的其余事情。他们首先使用pincode搜索,第二次使用pincode搜索,使用categorypincode搜索第三个名称。如果你看到我的话,你可以理解。 接下来我需要在这里做分页。为此我才打破了我的头脑。我的表单中还有五个参数。任何想法如何执行此操作并连接到单个查询。对于示例我已经提供了表单和数据。任何人都可以指导我如何做到这一点?此外,我想知道如何使用分页进行多次搜索。看到总数我给了200条记录。每个页面我需要显示20条记录。 我除了像这样的输出: 显示总共200条记录中的1到2o, 接下来是第二页 它应该显示200的21到40.任何人都可以指导如何首先连接到单个查询然后分页
答案 0 :(得分:0)
简单,从最简单的查询形式或其默认值开始:...但对于chrissake不要执行它!
$sql = "SELECT tr.*, t.* FROM tinfo t left join tutorregistration tr on tr. tid=t.tsid where pincode LIKE '%$pincode%'";
然后添加其他条件,作为字符串,也不要执行它们。
if($pincode!='' && $categorypincode!='' ){
$sql .= " and classconducted LIKE '%$categorypincode%'");
}
if($pincode!='' && $categorypincode!='' && $tutorname!=''){
$sql .= " and name LIKE '%$tutorname%'");
}
注意:我已经删除了if...else if
嵌套,根据编号不需要它们(如果第二个为真,则第一个条件永远不能评估为false)。
所以完整的代码是:
<?php
$sql = "SELECT tr.*, t.* FROM tinfo t left join tutorregistration tr on tr. tid=t.tsid where pincode LIKE '%$pincode%'";
if($pincode!='' && $categorypincode!='' ){
$sql .= " and classconducted LIKE '%$categorypincode%'");
}
if($pincode!='' && $categorypincode!='' && $tutorname!=''){
$sql .= " and name LIKE '%$tutorname%'");
}
$sql = mysql_query($sql);
?>
构建代码的方式存在一些重大缺陷,安全性明显,并且不能从重新开始。但那不是我的B / S.
编辑:如果您打算进行分页,请使用sql limit
。只是指出。