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)." ";
}
Цитата (Kusss @ 24.01.2017 - 09:56) |
неверно написано условие isset |
$sql = "SELECT ... FROM `table` WHERE ".implode(' OR ', $search)." ";ему нужно оператор И, а не ИЛИ
Цитата |
как реализовать например поиск только по имени или по фимилии |
$sql = "SELECT ... FROM `table` WHERE ".implode(' AND ', $search)." ";Это будет более правильно, потому что можно будет делать запросы по фильтрам:
Цитата (Kusss @ 24.01.2017 - 09:56) |
перечислите ваши данные через OR А если вы хотите сделать отдельный поиск, то сделайте разные кнопки. Каждая будет отвечать за свой поиск. Только по : фамилии, имени, году |
Цитата (Kusss @ 24.01.2017 - 09:56) |
Можно ещё отталкиватся от того что ввели. По этим параметрам и искать $search = [];// или $search = array(); P.S. для MySQLi используйте mysqli_real_escape_string() |
<?
//подключение к БД
//данные в выпадающий список вывожу из БД
$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'];
}
}