2017-01-01 3 views
1

Я работаю над поиском флажка. Я новичок в PHP. Я был бы признателен, если бы кто-нибудь мог мне помочь. В основном пользователь проверяет необходимые параметры, отображает показы и отображает результаты, соответствующие параметрам флажка. Флажки имеют значение M для Male и F для Female, которое соответствует данным в таблице MYSQL.PHP MYSQL checkbox поиск

Так что если пользователь проверяет флажок «Мужчина» (см. Код ниже), все данные с «Male», которые имеют значение «M» в таблице MYSQL, возвращаются. И любые флажки, которые не были отмечены, должны просто игнорироваться, так как пользователю интересен только параметр «Мужской», являющийся «М» (true).

Подводя итог, мне нужен только поиск, чтобы принять во внимание флажки, которые были отмечены, и эхо, которые выбрали пользователи (более похоже на фильтрацию) через PHP. Любая помощь оценивается. Благодаря

таблица выглядит следующим образом:

id  name  address gender race 
------------------------------------------- 

1. 1 Lee  NY   M  French 
2. 2 James LA   M  Colombian 
3. 3 Kashi JAPAN  F  Japanese 

и у меня есть форма с флажками, как это:

<form action="shortlist.php" method="post"> 
<label for="sel1">Gender:</label> 
Male:<input name="keyword[]" type="checkbox" value="M" /> 
Female:<input name="keyword[]" type="checkbox" value="F" /> 
<button name = "myBtn" type="submit" class="btn btn- default">Search</button> 
</form> 

SQL:

$sql="SELECT name, address,gender,race FROM talent1 WHERE gender = $gender'"; 

Я предположу, что эхо что-то вроде этого:

echo "<table width='100%'>\n"; 
//if (mysqli_num_rows($result) > 0){ 
//$row=mysqli_fetch_assoc($result); 
//$muchneededid = $row["talent_id"]; 
    while ($row=mysqli_fetch_assoc($result)) 
     echo'<tr>'."\n"; 
     echo '<tr>'; 
     echo '<th>Name</th>'; 
     echo '<th>Address</th>'; 
     echo '<th>Gender</th>'; 
     echo '</tr>'; 
     echo "<td>{$row["name"]}</td>\n" . "<td>{$row["address"]}</td>\n" . "<td>{$row["gender"]}</td>\n"; 
     echo '</tr>'."\n"; 
     echo "</table>\n"; 
     } 
     else 
     { 
     echo "0 results"; 
     } 
     mysqli_close($conn); 
     } 
+0

Есть _no_ флажки в вашем html. Вы имеете в виду 'select-options'? – Jeff

+0

, но в основном это было бы что-то вроде 'if checkbox 'm', а затем добавить в sql" ИЛИ GENDER = 'M' "' – Jeff

+1

извините, я вставил неправильный код. – struppy

ответ

2

дали информацию, которую мы получили, было бы что-то вроде этого:

<?php 
//$_POST['keyword'] = array("M", "F"); 
$sql_addon = ''; // EDIT: this was one line below first, which of course created an 'undefined' error. 
if(isset($_POST['keyword'])) { 

    foreach($_POST['keyword'] as $k => $val) { 
     $sql_addon.= " OR gender='$val'"; 
    } 
} 
$sql="SELECT name, address,gender,race FROM talent1 WHERE 1=1 "; 
if($sql_addon) { 
    $sql .= " AND (1=2 ".$sql_addon.")"; 
} 
echo $sql; 
// SELECT name, address,gender,race FROM talent1 WHERE 1=1 AND (1=2 OR gender=M OR gender=F) 
?> 

Те 1 = 1 и 1 = 2 может выглядеть глупо, но это (ИМХО) самый простой способ для создания этой SQL. 1 = 2, чтобы создать значение фальшивки, чтобы никакие записи не показывались, если ни одна из этих опций не нажата.

+1

Отлично, я написал комментарий о 1 = 2 части, которую вы добавили. Кроме того, я думаю, что вы должны заключить '$ val' в одинарной кавычке, так как это символ ... – EhsanT

+0

да, вы абсолютно правы ... Я изменю его, спасибо! – Jeff

+0

Спасибо за ответ. Я немного потерял при устранении этой неопределенной неопределенности: sql_addon в строке 18 SELECT имя, адрес, пол, раса FROM talent1 WHERE 1 = 1 – struppy