要做一个多条件查询的功能,例如:姓名 = littlewolf
年龄 > 15
性别 = 男。
每个程序条件都不同 ,所以用到了数组提交,源代码如下
<form id=\"formsearch\" name=\"formsearch\" action=\"$searchConditionAdd\" method=\"post\" >
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#5274A2\">";
for ($i=0;$i<count($searchCondition);$i++)
{
$mainhtml .= " <tr>
<td><select name=\"titleName[]\">
<option value=\"\"></option> ";
for (reset($searchCondition);list($key1,$value1)=each($searchCondition);)
{
$mainhtml .= "<option value=\"$value1\">$key1</option>";
}
$mainhtml .= " </select></td>
<td><select name=\"termName[]\">
<option value=\"like\">like</option>
<option value=\"<=\"><=</option>
<option value=\">=\">>=</option>
<option value=\"=\">=</option>
<option value=\"<>\"><></option>
</select></td>
<td><input name=\"searchListName[]\" type=\"text\"></td>
</tr>";
}
$mainhtml .= "
<tr>
<td><input type=\"submit\" name=\"searchlist\" value=\"Submit\" /></td>
<td><input class=\"searchclose\" name=\"searchclose\" type=\"button\" value=\"Close\"></td>
<td> </td>
</tr>
</table>
<input type=\"hidden\" name=\"searchAction\" value=\"searchList\" />
</form>
其中,$searchCondition = array(
"TableName" => "tablename",
"TableAge" => "tableage"
);
$searchConditionAdd = url('datatablefieldall', 'Index'); //查询提交的表单,如要修改,只需要修改第一个参数,参数名和文件名相同
---------------------------------------------------------
然后,在控制层那里将数据接受过来,并且进行数据库查询 。这个时候,问题出现了:
/*******************************************************
1.如果查询的数据超过了当页的显示量,那么下一页就不会显示查询的数据了,因为是POST方式 ,在新的一页就会显示无查询状态 。
2,如果用cookies保存提交的数据,这样删除数据的时候,当页却仍然保存了当页的数据 。所以用起来也非常的不方便 。
**************************************************************/
请问,有更好的解决办法么? 如果这种形式不行,换种也行 。
我后台接收表单post过来的数据如下
if($_POST['searchAction'] == "searchList")
{
foreach( $_POST["titleName"] as $i=>$a )
{
$titleNameArr[$i] = $a;
}
foreach( $_POST["termName"] as $i=>$a )
{
$termNameArr[$i] = $a;
}
foreach( $_POST["searchListName"] as $i=>$a )
{
$searchListNameArr[$i] = trim($a);
}
foreach($titleNameArr as $i=>$a)
{
if(!empty($titleNameArr[$i]) && !empty($termNameArr[$i]) && !empty($searchListNameArr[$i]) )
{
if($termNameArr[$i] == "like")
$conditions1 ="$titleNameArr[$i] $termNameArr[$i] '%$searchListNameArr[$i]%'";
else
$conditions1 ="$titleNameArr[$i] $termNameArr[$i] '$searchListNameArr[$i]'";
array_push($conditions, $conditions1);
}
}
} 用的框架是fleaphp ,所以需要用符合它类型的数组形式
年龄 > 15
性别 = 男。
每个程序条件都不同 ,所以用到了数组提交,源代码如下
<form id=\"formsearch\" name=\"formsearch\" action=\"$searchConditionAdd\" method=\"post\" >
<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#5274A2\">";
for ($i=0;$i<count($searchCondition);$i++)
{
$mainhtml .= " <tr>
<td><select name=\"titleName[]\">
<option value=\"\"></option> ";
for (reset($searchCondition);list($key1,$value1)=each($searchCondition);)
{
$mainhtml .= "<option value=\"$value1\">$key1</option>";
}
$mainhtml .= " </select></td>
<td><select name=\"termName[]\">
<option value=\"like\">like</option>
<option value=\"<=\"><=</option>
<option value=\">=\">>=</option>
<option value=\"=\">=</option>
<option value=\"<>\"><></option>
</select></td>
<td><input name=\"searchListName[]\" type=\"text\"></td>
</tr>";
}
$mainhtml .= "
<tr>
<td><input type=\"submit\" name=\"searchlist\" value=\"Submit\" /></td>
<td><input class=\"searchclose\" name=\"searchclose\" type=\"button\" value=\"Close\"></td>
<td> </td>
</tr>
</table>
<input type=\"hidden\" name=\"searchAction\" value=\"searchList\" />
</form>
其中,$searchCondition = array(
"TableName" => "tablename",
"TableAge" => "tableage"
);
$searchConditionAdd = url('datatablefieldall', 'Index'); //查询提交的表单,如要修改,只需要修改第一个参数,参数名和文件名相同
---------------------------------------------------------
然后,在控制层那里将数据接受过来,并且进行数据库查询 。这个时候,问题出现了:
/*******************************************************
1.如果查询的数据超过了当页的显示量,那么下一页就不会显示查询的数据了,因为是POST方式 ,在新的一页就会显示无查询状态 。
2,如果用cookies保存提交的数据,这样删除数据的时候,当页却仍然保存了当页的数据 。所以用起来也非常的不方便 。
**************************************************************/
请问,有更好的解决办法么? 如果这种形式不行,换种也行 。
我后台接收表单post过来的数据如下
if($_POST['searchAction'] == "searchList")
{
foreach( $_POST["titleName"] as $i=>$a )
{
$titleNameArr[$i] = $a;
}
foreach( $_POST["termName"] as $i=>$a )
{
$termNameArr[$i] = $a;
}
foreach( $_POST["searchListName"] as $i=>$a )
{
$searchListNameArr[$i] = trim($a);
}
foreach($titleNameArr as $i=>$a)
{
if(!empty($titleNameArr[$i]) && !empty($termNameArr[$i]) && !empty($searchListNameArr[$i]) )
{
if($termNameArr[$i] == "like")
$conditions1 ="$titleNameArr[$i] $termNameArr[$i] '%$searchListNameArr[$i]%'";
else
$conditions1 ="$titleNameArr[$i] $termNameArr[$i] '$searchListNameArr[$i]'";
array_push($conditions, $conditions1);
}
}
} 用的框架是fleaphp ,所以需要用符合它类型的数组形式
统一使用$_REQUEST接受参数