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

Форум MySQL

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

 

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

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

тема: Не могу изменить запрос - не выводит данные
 
 автор: Alessandro   (16.03.2006 в 17:35)   письмо автору
 
 

У меня есть отлично работающий запрос(код с запросом) который в выпадающий список выводит название объектов.


Выберите название объекта : </br> 
<select name ="name"> 
<?php 
 $res 
mysql_query("SELECT * FROM object ORDER BY name"); 
  while (
$row mysql_fetch_array($res))  
  { 
  print 
"<option value='".$row["name"]."'>".$row["name"];      
  } 
 
?> 

</select> 


Далее с помощью POST название объекта (name) передается в другой файл. В другой файл оно (название объекта) приходит верно. Далее мне нужно выбрать фамилию из выпадающего списка с учетом названия объекта (Все рабочие с объекта - А).
Я пишу:

Выберите фамилию работника, работающего на объекте: <?php echo("".$name.""); ?></br> 

Т.е. как я и говорю название объекта приходит верно.
А далее пишу почти такой же код только добавляю WHERE


<select name ="familiya"> 
<?php
 $res 
mysql_query("SELECT * FROM zar ORDER BY familiya WHERE name='".$name."';"
);

while (
$row mysql_fetch_array($res))  
  { 
  print 
"<option value='".$row["familiya"]."'>".$row["familiya"];      
  }
 
?> 
</select>


И ничего не выводится хотя если убрать WHERE тогда появится полный список всех фамилий в базе. Может где-то ошибка в запятой или точки ??? Или что-то в printe неверно ???

   
 
 автор: elenaki   (16.03.2006 в 19:56)   письмо автору
 
   для: Alessandro   (16.03.2006 в 17:35)
 

в запросе: $res = mysql_query("SELECT * FROM zar ORDER BY familiya WHERE name='".$name."';");
сначала идет конструкция where, а потом order, не наоборот, как у вас.

   
 
 автор: Trianon   (16.03.2006 в 20:17)   письмо автору
 
   для: Alessandro   (16.03.2006 в 17:35)
 

порядок записи инструкций в операторе SELECT должен быть таким:
SELECT.... FROM....WHERE....GROUP BY.... HAVING.... ORDER BY....LIMIT

Заметьте, что самим сервером БД инструкции в операторе SELECT обрабатываются в следующем порядке:
FROM .... WHERE .... GROUP BY ..... HAVING .....SELECT .... ORDER BY .... LIMIT

И еще. Пока Вы не научились писать запросы, вызов mysql_query() у Вас должен появляться только в следующем контексте:

  $query = "SELECT.....";  /* или  INSERT.... DELETE.....UPDATE  */
  if(($res = mysql_query($query)) == 0) die("Error in $query due to ".mysql_error());

И ни в каком другом. Иначе Вы просто не видите, почему рушится запрос.

А когда научитесь, Вы эти инструкци сами будете вставлять. :)

   
 
 автор: Alessandro   (16.03.2006 в 21:04)   письмо автору
 
   для: Trianon   (16.03.2006 в 20:17)
 

Да спасибо за ответ я уже понял свою ошибку. А когда пытался вывести ее то почему вообще после запроса остальной весь код просто не работал и ошибка не выводилась. Типа break )).

   
Rambler's Top100
вверх

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