一个选择不发布所选选项
问题描述:
例......即使“>”,大于选项被选中一个选择不发布所选选项
SELECT *
FROM sr_rounds
WHERE cir1 LIKE '%2.4%'
ORDER BY sr_id asc
任何想法,显示此查询?
<form action="search_new.php" method="post" name="exchanges" id="exchanges">
<select name="circuits" id="circuits" onclick="searchIt()" onblur="searchIt()">
<option value="select" selected="selected">Select Search Field</option>
<option value="cir1">Circuit 1</option>
<option value="cir2">Circuit 2</option>
<option value="cir3">Circuit 3</option>
<option value="cir4">Circuit 4</option>
<option value="vch">VCH-1-5</option>
</select>
<select name="sorting" id="sorting" onclick="searchIt()" onblur="searchIt()">
<option value="select1" selected="selected">Sort By</option>
<option value="sr_id">Sector</option>
<option value="date">Date</option>
//This select always returns a "like" clause regardless of which option you select
</select>
<select name="clauses" id="clauses" onclick="searchIt()" onblur="searchIt()">
<option value="select2" selected="selected">Clause</option>
<option value="=">Equals</option>
<option value="like">Like</option>
<option value=">">Greater Than</option>
<option value="<">Less Than</option>
<option value="date">Date</option>
</select>
<select name="sortorder" id="sortorder" onclick="searchIt()" onblur="searchIt()">
<option value="select3" selected="selected">Order</option>
<option value="asc" name="1">Asc</option>
<option value="desc" name="2">Desc</option>
</select>
<?php
$select = $_POST['circuits'];
$searchdb = $_POST['searchdb'];
$select1 = $_POST['sorting'];
$select2 = $_POST['clauses'];
$select3 = $_POST['sortorder'];
//To display friendly field name instead of actual field name
if ($select == 'cir1')
{
$boxresult = 'Circuit 1';
}
if ($select == 'cir2')
{
$boxresult = 'Circuit 2';
}
if ($select == 'cir3')
{
$boxresult = 'Circuit 3';
}
if ($select == 'cir4')
{
$boxresult = 'Circuit 4';
}
if ($select == 'vch')
{
$boxresult = 'VCH-1-5';
}
//To use different queries while searching
if ($select2 == '=')
{
$queres = "SELECT * FROM sr_rounds WHERE $select = '$searchdb' ORDER BY $select1 $select3";
}
else if ($select2 == 'like')
{
$queres = "SELECT * FROM sr_rounds WHERE $select LIKE '$searchdb' ORDER BY $select1 $select3";
}
else if ($select2 == '>')
{
$queres = "SELECT * FROM sr_rounds WHERE $select > '$searchdb' ORDER BY $select1 $select3";
}
else if ($select2 == '<')
{
$queres = "SELECT * FROM sr_rounds WHERE $select < '$searchdb' ORDER BY $select1 $select3";
}
else if ($select2 == 'contain');
{
$queres = "SELECT * FROM sr_rounds WHERE $select LIKE '%$searchdb%' ORDER BY $select1 $select3";
}
$query = $queres;
$result = @mysql_query($query);
$num = @mysql_num_rows($result);
答
写在你的search_new.php
:
var_dump($_POST); exit();
检查值是多少clauses
。我也想去另一个值的表示。我倾向于使用数字并将if/else
结构减少到switch
块,但无论如何,您可以坚持。只是一个建议。而不是>,<和=,请使用“更大”,“更低”和“等于”或其他词,因为<和>是xml结构的一部分,您的浏览器可能会遇到问题。如果你检查你写的代码块,你会看到>实际上表现不佳。它被涂成黑色,而不是棕色/红色。
综上所述:
- 检查
$_POST
- 更改选项值,以数字或单词,而不是符号的价值。
答
你在你的代码一个错字:
else if ($select2 == 'contain');
// ----------------------------^
此结束,如果块。下一个{}
块总是执行。
+0
+1为了解释为什么最后一个块总是被执行(我们所有的人的眼睛都集中在''like''条件而不是最后一个。 – Korcholis 2013-03-22 13:15:53
检查您的形式被传递到正确的数据 - 你的价值观可能会得到转化成HTML实体 – andrewsi 2013-03-20 19:55:57
这是被传递什么阵列 ( [电路] => CIR1 [排序] => sr_id [子句] => => [排序顺序] => ASC(6){[“circuits”] => string(4)“cir1”[“sorting”] => string(5)“sr_id” [“clauses”] => string(2)“=>”[“sortorder”] => string(3)“asc”[“searchdb”] => string(3)“2.4”[“submit”] =>字符串(6)“搜索”} – bech64 2013-03-20 20:00:49