Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выборка из таблици
 
 автор: Sajmon   (02.03.2009 в 13:12)   письмо автору
 
 

Всем Привет!
Затруднения у меня в следующем:
Есть определенная таблица с данными о ФОИ препадов, семестре, предмете и уровни низкий , средний, достаточний, высокий (поля (id, name, semestr, predmet, uroven1, uroven2, uroven3, uroven4 )) мне нужно сделать выборку из каждого поля. Пример (Нужно из всей таблици найти и отобразить такие данные Степура М 2 семестр фызыка ну и его достижения по уровням) одним запросом а то я тишу отдельно чтоб сделать выборку по имени отдельно по предмету отдельно по симестру. Как сделать чтоб это было одним запросом (скриптом)

  Ответить  
 
 автор: Trianon   (02.03.2009 в 13:15)   письмо автору
 
   для: Sajmon   (02.03.2009 в 13:12)
 

показывайте, как пишете сейчас.

  Ответить  
 
 автор: Sajmon   (02.03.2009 в 13:43)   письмо автору
 
   для: 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; семестр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'>Выбирете&nbsp; предмет&nbsp;</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";
...
?>

а как сделать один запрос?

  Ответить  
 
 автор: Trianon   (02.03.2009 в 13:58)   письмо автору
 
   для: 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);

Далеее исполняем один запрос.

  Ответить  
 
 автор: Sajmon   (02.03.2009 в 14:20)   письмо автору
 
   для: Trianon   (02.03.2009 в 13:58)
 

А можно как то обойтися без масивов то я с ними не очень дружу?

  Ответить  
 
 автор: Trianon   (02.03.2009 в 14:29)   письмо автору
 
   для: Sajmon   (02.03.2009 в 14:20)
 

можно.
Те же самые фрагменты добавляете в строку. Сразу с AND .
Первый AND меняете на WHERE

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования