0

例... ">" より大きいオプションが選択されていても、このクエリは表示されます

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>
&nbsp;
<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);
4

3 に答える 3

1

コードにタイプミスがあります:

else if ($select2 == 'contain');
// ----------------------------^

これでifブロックが終了します。次の{}ブロックは常に実行されます。

于 2013-03-20T20:03:18.433 に答える
1

これは、行にセミコロンがあるためです。

else if ($select2 == 'contain');

成功する

else if ($select2 == 'contain')
于 2013-03-20T20:07:40.423 に答える
0

あなたの中にこれを書いてくださいsearch_new.php

var_dump($_POST); exit();

値を確認してくださいclauses。また、値の別の表現にも行きます。if/else私は数字を使って構造をブロックに減らす傾向がありswitchますが、とにかくあなたは何にでも固執することができます。ただのアドバイス。<と>はxml構造の一部であり、ブラウザがそれを理解するのに問題がある可能性があるため、>、<、および=の代わりに、「より大きい」、「低い」、「等しい」、または別の単語を使用します。作成したコードブロックを確認すると、>が実際にはうまく機能していないことがわかります。ブラウン/レッドではなく、ブラックに塗装されています。

総括する:

  • の値を確認してください$_POST
  • オプションの値を記号ではなく数字または単語に変更します。
于 2013-03-20T20:01:36.517 に答える