2013-07-29 3 views
1

Я пытаюсь отфильтровать результаты поиска моей базы данных MySQL, я хочу отфильтровать результаты, выбирая значения из двух выпадающих ящиков, причем первым ящиком является Club, а второй - подразделением поэтому я могу отфильтровать результаты по разделу и клубу.Не удалось получить результаты поиска для фильтра

Моя проблема заключается в том, что когда я делаю выбор в поле клуба, ничего не происходит, я могу выбрать из поля «Дивизия», и результаты отобразят выбранное подразделение, но ничего не происходит, когда я выбираю клуб.

<?php 
include("config.php"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Club Search</title> 
<style> 
.style1 { 
    text-align: center; 
} 
</style> 
</head> 
<body> 
<fieldset style="width: 327px"><legend>Filter Results</legend> 
<form id="filter" name="filter" method="post" action="search.php" style="width: 316px"> 
<label for="club">Club</label> 
<select name="club"> 
<option value="">--</option> 
<?php 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY club ORDER BY club"; 
    $sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
    while ($row = mysql_fetch_assoc($sql_result)) { 
     echo "<option value='".$row["club"]."'".($row["club"]==$_REQUEST["club"] ? " selected" : "").">".$row["club"]."</option>"; 
    } 
?> 
</select> 

    <label>Division</label> 
<select name="division"> 
<option value="">--</option> 
<?php 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY division ORDER BY division"; 
    $sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
    while ($row = mysql_fetch_assoc($sql_result)) { 
    echo "<option value='".$row["division"]."'".($row["division"]==$_REQUEST["division"] ? " selected" : "").">".$row["division"]."</option>"; 
    } 
?> 
</select> 
<input type="submit" name="button" id="button" value="Filter" /> 

    <a href="search.php"> 
    reset</a> 
</form></fieldset> 
<br /><br /> 
<fieldset style="width: 720px"><legend>Search Results</legend> 
<br/> 
<table width="700" border="1" cellspacing="0" cellpadding="0" align="center"> 
    <tr> 
    <td bgcolor="#CCCCCC" class="style1"><strong>Division</strong></td> 
    <td bgcolor="#CCCCCC" class="style1"><strong>Club</strong></td> 
    <td bgcolor="#CCCCCC" class="style1"><strong>Last Name</strong></td> 
    <td bgcolor="#CCCCCC" class="style1"><strong>First Name</strong></td> 
    <td bgcolor="#CCCCCC" class="style1"><strong>ID</strong></td> 
    </tr> 
<?php 
if ($_REQUEST["club"]='') { 
    $search_string = " AND (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%' OR (division LIKE '%".mysql_real_escape_string($_REQUEST["division"])."%')"; 
} 
if ($_REQUEST["division"]<>'') { 
    $search_division = " AND division='".mysql_real_escape_string($_REQUEST["division"])."'"; 
} 

if ($_REQUEST["club"]='' and $_REQUEST["division"]='') { 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE club = '".mysql_real_escape_string($_REQUEST["club"])."' AND division = '".mysql_real_escape_string($_REQUEST["division"])."'".$search_string.$search_division; 
} else { 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_division; 
} 

$sql_result = mysql_query ($sql, $connection) or die ('request "Could not execute SQL query" '.$sql); 
if (mysql_num_rows($sql_result)>0) { 
    while ($row = mysql_fetch_assoc($sql_result)) { 
?> 
    <tr> 
    <td class="style1"><?php echo $row['division']?></td> 
    <td class="style1"><?php echo $row['club']?></td> 
    <td class="style1"><?php echo $row['last_name']?></td> 
    <td class="style1"><?php echo $row['first_name']?></td> 
    <td class="style1"><?php echo $row['id']?></td> 
    </tr> 
<?php 
    } 
} else { 
?> 
<tr><td colspan="5">No results found.</td></tr> 
<?php 
} 
?> 
</table> 
<br/> 
</fieldset> 
</body> 
</html> 

UPDATE: Я изменил следующий код из этого:

if ($_REQUEST["club"]='') { 
$search_string = " AND (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%' OR (division LIKE '%".mysql_real_escape_string($_REQUEST["division"])."%')"; 

}

к этому:

if ($_REQUEST["club"]<>'') { 
    $search_club = " AND (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%' OR (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%')";  
} 

и теперь это позволит мне фильтровать клуб и деление, но я все еще не могу сделать только один клуб!

+0

Я настоятельно рекомендую удалить весь свой код базы данных и поместить его в функции, а затем перебрать данные из этих функций, а не напрямую перебирать результат db – Zak

+1

@ Zak, как это поможет? – user2587858

+0

Прежде всего, если вы захотите снова получить одни и те же данные, вам не придется переписывать код в другом месте ... он будет удобно упакован в функцию. во-вторых, после того, как код находится в функции, вы можете написать небольшие тесты (даже если вы хотите использовать единичные тесты), чтобы проверить правильность получения ваших данных и, в-третьих, одним словом, ремонтопригодность. – Zak

ответ

1

Изменить это:

if ($_REQUEST["club"]='') { 
$search_string = " AND (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%' OR (division LIKE '%".mysql_real_escape_string($_REQUEST["division"])."%')"; 

и это:

$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_division; 

К следующему:

if ($_REQUEST["club"]<>'') { 
    $search_club = " AND club='".mysql_real_escape_string($_REQUEST["club"])."'"; 
} 

И это:

$sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_club.$search_division; 

И это будет работать!

+0

Спасибо, что это было! – user2587858

+0

@ пользователь2587858 no беспокойство! – Jason

0

Вы используете = оператор в ваших if заявления, вы хотите использовать == оператор сравнения, как следует:

if ($_REQUEST["club"] == '') { 
    $search_string = " AND (club LIKE '%".mysql_real_escape_string($_REQUEST["club"])."%' OR (division LIKE '%".mysql_real_escape_string($_REQUEST["division"])."%')"; 
} 
if ($_REQUEST["division"] <> '') { 
    $search_division = " AND division='".mysql_real_escape_string($_REQUEST["division"])."'"; 
} 

if ($_REQUEST["club"] == '' and $_REQUEST["division"] == '') { 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE club = '".mysql_real_escape_string($_REQUEST["club"])."' AND division = '".mysql_real_escape_string($_REQUEST["division"])."'".$search_string.$search_division; 
} else { 
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_division; 
} 
+0

, который до сих пор не работает, выбирая из выпадающего списка, отображает все данные в базе данных, а не только название выбранного клуба, и теперь я не могу даже фильтровать по делению – user2587858

Смежные вопросы