Если я правильно понял вопрос правильно, вы хотели бы, чтобы быть в состоянии найти все результаты, которые соответствуют флажков, которые вы проверили.
Я не уверен, какие результаты вы бы искали, поэтому вместо этого я дам вам несколько разных вариантов и позволю вам взять их оттуда.
Во-первых, для того, чтобы передать ФУНКЦИЮ БОЛЬШЕ ТОГО, чтобы ваш PHP-скрипт, вам нужно определить ваши флажки по-разному.
<form role="form" action="R.php" method="post">
<div class="form-group">
<input type="checkbox" value="a" name="search[]" />a
<input type="checkbox" value="b" name="search[]" />b
<input type="checkbox" value="c" name="search[]" />c
<input type="checkbox" value="d" name="search[]" />d
<input type="checkbox" value="e" name="search[]" />e
</div>
<input class="btn btn-default glyphicon-align-right" type="submit" value=">>"/>
Обратите внимание на скобки после "поиск" .. название = "поиск []". Это позволяет вашим флажкам пропускать COLLECTION значений, а не только один.
Во-вторых, на вашей стороне PHP.
После того, как вы отправите свои флажки, вы хотите, чтобы получить их так же, как сейчас это делают:
$searches = $_POST['search'];
$ поиска теперь будет массив заполняется значениями, которые были проверены в вашей форме.
В зависимости от вашего желаемого результата, то, что вы делаете дальше, будет выглядеть примерно так.
Давайте рассмотрим случай, когда были проверены A и B.
Если вы хотите, чтобы получить все результаты, где слово начинается с буквой А или слово начинается с буквой B:
<?php
$searches = $_POST['searches'];
$Squery = "SELECT * FROM database";
$Swhere = "";
//add all your individual searches by looping through the checkbox values
foreach($searches as $search){
$Swhere .= " OR name LIKE '%$search' ";
}
//remove the first OR case, because it is not needed for the first search query
$Swhere = ltrim($Swhere, ' OR');
//add your dynamic where statement to your query
$Squery .= $Swhere
$result = mysql_query($Squery);
//...... run the query and get the results the same way you are
С помощью функции Еогеаспа, ваш может добавить все флажки, которые требуются ваш поиск, но запрос на стороне PHP не придется менять вообще.
На аналогичной ноте, если выбрано выбранное A и B, если вы хотите получить все слова, начинающиеся с буквы A, начинайте с B, или начинайте с AB, тогда ваш код будет скорректирован так:
<?php
$searches = $_POST['searches'];
//this takes your array of values and combines them into one word.
//your searches variable remains an array, but your stringSearch is now
//a word with the combined values
$stringSearch = implode($searches,'');
$Squery = "SELECT * FROM database";
$Swhere = " name LIKE '%$stringSearch%' ";
//add all your individual searches by looping through the checkbox values
foreach($searches as $search){
$Swhere .= " OR name LIKE '%$search' ";
}
//add your dynamic where statement to your query
$Squery .= $Swhere
$result = mysql_query($Squery);
//...... run the query and get the results the same way you are
Надеюсь, вы можете принять этот пример и приспособиться к вашим фактическим потребностям.
Следует отметить, что НЕ ДОЛЖНО использовать mysql_query. Он открывает ваш код до основных проблем с SQL-инъекциями. Я использовал его только выше, чтобы показать, как вы это сделаете с помощью вашего текущего кода. Посмотрите на функции mysqli
Если выбраны a, b и c, вы хотите найти, где name = '% abc%' или где name = a ИЛИ name = b ИЛИ name = c? – xJoshWalker
, когда выбраны значения a, b и c. Например, выбирая букву A, я дам мне некоторые результаты, начиная с буквы A, выбрав B, даст мне результаты, заканчивающиеся буквой B, но если я проверю A и B, мне нужны результаты, начинающиеся с буквы A и буквы B.это просто пример того, как этот вид работ –
нашел причину, по которой может быть, что он может читать только одно слово за один раз ... но все равно не может найти решение. :) –