|
|
|
| Всем Привет!
Затруднения у меня в следующем:
Есть определенная таблица с данными о ФОИ препадов, семестре, предмете и уровни низкий , средний, достаточний, высокий (поля (id, name, semestr, predmet, uroven1, uroven2, uroven3, uroven4 )) мне нужно сделать выборку из каждого поля. Пример (Нужно из всей таблици найти и отобразить такие данные Степура М 2 семестр фызыка ну и его достижения по уровням) одним запросом а то я тишу отдельно чтоб сделать выборку по имени отдельно по предмету отдельно по симестру. Как сделать чтоб это было одним запросом (скриптом) | |
|
|
|
|
|
|
|
для: Sajmon
(02.03.2009 в 13:12)
| | показывайте, как пишете сейчас. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2009 в 13:15)
| |
<form method="post" action="script1.php">
<input type="text" name="a">
<input type="submit" name="submit">
</form>
<form method="post" action="script2.php">
<select name="fix">
<option value='0'>Выбирете семестрnbsp;</option>
<option value='1'>1 семестр</option>
<option value='2'>2 семестр</option>
</select>
<input type="submit" name="submit2">
</form>
<form method="post" action="script3.php">
<select name="fix">
<option value='0'>Выбирете предмет </option>
<option value='1'>гиодезия</option>
<option value='2'>Вышка</option>
<option value='3'>сопромат</option>
<option value='4'>и т д</option>
</select>
<input type="submit" name="submit3">
</form>
<?php
//script1.php
...
$name=$_POST['name'];
$sql = "SELECT * From $dtable Where osvita like '%$name%'
...
?>
<?php
//script2.php
...
$g=$_POST['g'];
$sql = "SELECT * From $dtable Where uroven1 between 1 and 3 Order by 2";
...
?>
|
а как сделать один запрос? | |
|
|
|
|
|
|
|
для: Sajmon
(02.03.2009 в 13:43)
| | объединить все формы в одну. Указать в ней соответствующие имена полей.
Далее можно по-разному. Например, так.
создать массив условий. Изначально пустой. $conds = array();
обрабатывая очередной параметр фильтра, дописывать в этот массив фрагмент условия.
if($_POST['name'] ) $conds[] = "`name` LIKE '%".mysql_escape_string($_POST['name'])."%'";
if($_POST['semestr']) $conds[] = "`semestr` = ". intval($_POST['semestr']);
if($_POST['predmet']) $conds[] = "`predmet` = ". intval($_POST['predmet']);
if($_POST['lev1min'] ) $conds[] = "`uroven1` >= ". floatval($_POST['lev1min']);
| и т.д.
в конце все условия соединить через ' AND ' и дописать к запросу.
$sql = "SELECT * FROM $dtable ";
if(!empty($cond)) $sql .= ' WHERE '. implode(' AND ', $conds);
|
Далеее исполняем один запрос. | |
|
|
|
|
|
|
|
для: Trianon
(02.03.2009 в 13:58)
| | А можно как то обойтися без масивов то я с ними не очень дружу? | |
|
|
|
|
|
|
|
для: Sajmon
(02.03.2009 в 14:20)
| | можно.
Те же самые фрагменты добавляете в строку. Сразу с AND .
Первый AND меняете на WHERE | |
|
|
|