[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: выпадающий список
Gost12345
Добрый день. Есть 3 выпадающих списка:Имя(name),Фамилия(fam),год рождения(year). И кнопка поиск. Я организую поиск по этим записям. Данные в выпадающий список выводятся select'om, все работает. $_GET['name'], $_GET['fam'],$_GET['year'] передает данные, которые мы выбрали в выпадающих списках. Когда я выбираю поиск по всем значениям то работает, а как реализовать например поиск только по имени или по фимилии. Помогите пожалуйста, Спасибо.
Gost12345
Поиск по ключевому слову. Чтобы например выбрать только имя и по нему искать, а в других выпадающих списках ничего не выбирать, просто пустые значения.
if(isset($_GET['name']) and (isset($_GET['fam'])) and (isset($GET['year'])))
{
//здесь запрос к БД и выборка данных, все работает
}

а дальше вот не получается, если после пишу
if(isset($_GET['name']))
{
//то выводит и по первому условию и по второму все вместе
}
Kusss
перечислите ваши данные через OR
А если вы хотите сделать отдельный поиск, то сделайте разные кнопки. Каждая будет отвечать за свой поиск. Только по : фамилии, имени, году

И кстати, у вас неверно написано условие isset. Значения нужно перечислять через запятую.
if (isset($_GET['name'], $_GET['fam'], $_GET['year'])) {

}


Можно ещё отталкиватся от того что ввели. По этим параметрам и искать
$search = [];// или $search = array();

$name = trim($_GET['name']);
if (!empty($name))
$search[] = "name = '". mysql_real_escape_string($name). "' ";

$fam = trim($_GET['fam']);
if (!empty($fam))
$search[] = "fam = '". mysql_real_escape_string($fam). "' ";

if (count($search)){
$sql = "SELECT ... FROM `table` WHERE ".implode(' OR ', $search)." ";
}

P.S. для MySQLi используйте mysqli_real_escape_string()
Invis1ble
Цитата (Kusss @ 24.01.2017 - 09:56)
неверно написано условие isset

твоё условие ничем не отличается от приведенного выше

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

walerus
Kusss
Тоже добавлю
$sql = "SELECT ... FROM `table` WHERE  ".implode(' OR ', $search)." ";
ему нужно оператор И, а не ИЛИ

Цитата
как реализовать например поиск только по имени или по фимилии

$sql = "SELECT ... FROM `table` WHERE  ".implode(' AND ', $search)." ";
Это будет более правильно, потому что можно будет делать запросы по фильтрам:

1) имя, фимилия, год
2) имя, фимилия
3) имя, год
3) имя
4) фимилия, год
5) фимилия
6) год
Gost12345
Цитата (Kusss @ 24.01.2017 - 09:56)
перечислите ваши данные через OR
А если вы хотите сделать отдельный поиск, то сделайте разные кнопки. Каждая будет отвечать за свой поиск. Только по : фамилии, имени, году


через OR тоже ничего не выводит. Скорее всего буду делать отдельный поиск, разные кнопки.
Gost12345
Цитата (Kusss @ 24.01.2017 - 09:56)

Можно ещё отталкиватся от того что ввели. По этим параметрам и искать
$search = [];// или $search = array();

$name = trim($_GET['name']);
if (!empty($name))
$search[] = "name = '". mysql_real_escape_string($name). "' ";

$fam = trim($_GET['fam']);
if (!empty($fam))
$search[] = "fam = '". mysql_real_escape_string($fam). "' ";

if (count($search)){
$sql = "SELECT ... FROM `table` WHERE ".implode(' OR ', $search)." ";
}

P.S. для MySQLi используйте mysqli_real_escape_string()

Этот вариант пробую, но также пусто.
Kusss
И как ты хочешь чтобы тебе помогли, если не показываешь свой код, который не работает ?
В твоём коде, есть хоть запрос в базу и вывод данных, вывод ошибкок Mysql ?
Если запостить то, что мы пишем - реально ничего не будет ))
Gost12345
Вот мой код. Если выбирать поиск по всем значениям сразу то работает, а если только что то одно или два то нет.

<?
//подключение к БД
//данные в выпадающий список вывожу из БД

$query="select * from `Teacher`";
$res=mysql_query($query);
?>
<form action="" method="GET">
<
select name=name>
<
option value='Выберите имя:'</option>
<?
while($row=mysql_fetch_array($res))
{
echo "<option value='".$row['name']."'>.$row['name']."</option>";
}
?>
</select>
//далее вывожу так же список фамилий и год(fam,year)

//обрабатываем выбранные данные
<?
if(isset(
$GET['name']) and isset($_GET['fam']) and isset($_GET['year']))
{

$name=$_GET['name'];
$fam=$_GET['fam'];
$year=$_GET['year'];

$query1="select * from `Teacher` where name='$name' and fam='$fam' and year='$year' ";
$res1=mysql_query($query);

while(
$row1=mysql_fetch_array($res1))
{
echo
$row1['name'];
echo
$row1['fam'];
echo
$row1['year'];
}
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.