2015-05-14 3 views
1

Я пытаюсь создать функцию поиска, которая позволяет пользователю выбирать несколько категорий, выбрать submit, а затем php вернет результаты mysql, соответствующие выбранным категориям.Использовать несколько флажков для возврата результатов MySQL

Я хотел бы сделать это без AJAX или jQuery, но я буду использовать их, если потребуется. Я новичок в мире PHP, поэтому я думаю, что я на правильном пути, но мне бы очень хотелось получить правильное решение.

HTML

<form action="filter.php" method="post"> 
 
    <p class="searching">Filter by category</p> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Arts/Culture"/><img class="lilIcon" src="img/anc.png"><h5>Arts/Culture</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Seniors"/><img class="lilIcon" src="img/senior.png"><h5>Seniors</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Youth"/><img class="lilIcon" src="img/youth.png"><h5>Youth</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Animals"/><img class="lilIcon" src="img/pet.png"><h5>Animals</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Community"/><img class="lilIcon" src="img/comm.png"><h5>Community</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Crisis Support"/><img class="lilIcon" src="img/cs.png"><h5>Crisis Support</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Environment"/><img class="lilIcon" src="img/leaf.png"><h5>Environment</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="Faith Based"/><img class="lilIcon" src="img/pray.png"><h5>Faith Based</h5></section> 
 
    <section class="box"><input type="checkbox" name="fill" class="check" value="People with Disabilities"/><img class="lilIcon" src="img/chair.png"><h5>People with Disabilities</h5></section> 
 
    <input type="submit" name="submit" id="filter" value="Filter"/>  
 
</form>

PHP

<?php 
$variable=$_POST['fill']; 
$i = 0; 
foreach ($variable as $variablename) { 
    $i++; 
    $variablename[number]; 
} 

$result = "SELECT * FROM opportunity WHERE `Category`=$variablename"; 
$num_rows = mysql_num_rows($result); 
    echo "<div class='holder'>"; 

    if(mysql_num_rows($result) > 0) 
    { 
     while($results = mysql_fetch_array($result)); 
    } 
+3

Вы должны назвать свои флажки по-разному (например, каждое из них - уникальное имя), или используйте '[]' naming hack - прямо сейчас, вы получаете только последний выбранный флажок, поскольку имена одинаковы. Тогда ваше построение запроса совершенно неверно: уязвимо для [SQL-инъекций] (http://bobby-tables.com) и делает '' WHERE 'Category' = Array'', поскольку вы используете массив в строке контекст. –

ответ

0

Я изменил значение отправке 1

<input type="submit" name="submit" id="filter" value="1"/> 

if (intval($_POST['submit') == 1){ 
    $count = 0; 
    $sql = "SELECT * FROM opportunity WHERE `Category` IN ("; 
    $chk = $_POST['chk']; 
    foreach($chk as $value){ 
    $sql .= "'$value'," 
    $count++; 
    } 
    if ($count > 0){ 
    $sql = substr($sql,0,-1) . ');'; // remove trailing comma and close 

    // your sql and output go here 

    } 
} 

Если YOUT ч и животные были выбраны $sql бы:

SELECT * FROM opportunity WHERE `Category` IN ('Youth','Animals'); 

HTML

<form action="filter.php" method="post"> 
<p class="searching">Filter by category</p> 
<section class="box"><input id="chk1" type="checkbox" name="chk[]" class="check" value="Arts/Culture"/><img class="lilIcon" src="img/anc.png"><h5>Arts/Culture</h5></section> 
<section class="box"><input id="chk2" type="checkbox" name="chk[]" class="check" value="Seniors"/><img class="lilIcon" src="img/senior.png"><h5>Seniors</h5></section> 
<section class="box"><input id="chk3" type="checkbox" name="chk[]" class="check" value="Youth"/><img class="lilIcon" src="img/youth.png"><h5>Youth</h5></section> 
<section class="box"><input id="chk4" type="checkbox" name="chk[]" class="check" value="Animals"/><img class="lilIcon" src="img/pet.png"><h5>Animals</h5></section> 
<section class="box"><input id="chk5" type="checkbox" name="chk[]" class="check" value="Community"/><img class="lilIcon" src="img/comm.png"><h5>Community</h5></section> 
<section class="box"><input id="chk6" type="checkbox" name="chk[]" class="check" value="Crisis Support"/><img class="lilIcon" src="img/cs.png"><h5>Crisis Support</h5></section> 
<section class="box"><input id="chk7" type="checkbox" name="chk[]" class="check" value="Environment"/><img class="lilIcon" src="img/leaf.png"><h5>Environment</h5></section> 
<section class="box"><input id="chk8" type="checkbox" name="chk[]" class="check" value="Faith Based"/><img class="lilIcon" src="img/pray.png"><h5>Faith Based</h5></section> 
<section class="box"><input id="chk9" type="checkbox" name="chk[]" class="check" value="People with Disabilities"/><img class="lilIcon" src="img/chair.png"><h5>People with Disabilities</h5></section> 
<input type="submit" name="submit" id="filter" value="1"/>  
</form> 
+0

'$ _POST ['chk []'];' неверно. он должен быть '$ _POST ['chk'];' без '[]'. – Sean

+0

@Sean Спасибо, я получил коррумпированный взгляд на чужой код. – Misunderstood

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