Связь тегов <select>

azovl

Новичок
Добрый день. Вот такая ситуация, не получается связать теги select. Вроде бы логически все правильно делаю, ан нет... Все как было так и остается, идея такова:
Страница для редактирования товара подгружает форму для редактирования.

Код выборки категории товара:
PHP:
        $cat_forms = mysql_query("SELECT id,name_cat FROM cat ORDER BY name_cat", $id);
        $cat_forms_e = mysql_fetch_array($cat_forms);
        $cat = (int)$_GET['id'];
Пример выбора категории:
PHP:
                <SELECT name="cat">
      <? 
      while($cat_forms_e = mysql_fetch_array($cat_forms));
         {
               $selected_cat = ($cat_forms_e['id']==$cat)?' selected="true" ':'';
               printf ("<OPTION value='%s%s'>%s</OPTION>",$cat_forms_e["id"],$selected_cat,$cat_forms_e["name_cat"]);
         }
      	
      ?>
                </SELECT>
Тоесть, кликнув на редактирование данного товара, хотелось бы чтобы был выделен элемент (в моем случае - категория) которая соответствует записи из БД.
Возможно не правильно программирую, так что критикуйте, буду признателен "осмысленным" замечаниям.
Спасибо Вам.
 

Adelf

Administrator
Команда форума
А ты посмотри лучше, что в HTML готовом у тебя. Сам легко найдешь причину.

З.Ы. Я конечно и так вижу, что ты с одинарной кавычкой напутал :)
 

azovl

Новичок
Adelf,
PHP:
$selected_cat = ($cat_forms_e['id']==$cat)?' selected="true" ':'';
Я так понимаю в данной строке, да вроде бы все правильно. Ой, если честно, бывает такое что и палку под ногами не видишь, а другой посмотрит и сразу все как на ладони.
А синтаксис правильный, как вообще код, так хоть пишут )))?
 

workOnFood

Новичок
Напиши строк двести хотябы, и чтобы они делали что-нибудь полезное, а желательно еще и интересное кому-то кроме тебя. Тогда можешь попробовать похвастаться, да и то не советую)
 

azovl

Новичок
Какое хвастовство? Я начинающий.
Я не могу сделать так, чтобы мой select выделял значение из БД, можешь подсказать что я не так сделал?
 

Adelf

Administrator
Команда форума
azovl
Не обращаем внимание на workOnFood.

Ошибка у тебя в другом месте. Но повторю - посмотри какой HTML получился в итоге. И мгновенно поймешь в чем ошибка.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
azovl
Не обращаем внимание на workOnFood.

Ошибка у тебя в другом месте. Но повторю - посмотри какой HTML получился в итоге. И мгновенно поймешь в чем ошибка.
Там не одна ошибка — вторая ошибка куда интересней, поскольку логическая :)
 

azovl

Новичок
Вот умничка Adelf, только-что посмотрел и увидел вот такую картину:
PHP:
<OPTION value='13 selected="true" '>
...
флоппик, подскажи, что я не так сделал?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Сколько у тебя option в результате получилось? )
 

workOnFood

Новичок
А ну да у тебя ошибка с одинарными ковычками - selected="true" вставляется в value свойство <option>

Просто исходя из твоего -
Возможно не правильно программирую, так что критикуйте, буду признателен "осмысленным" замечаниям.
Спасибо Вам.
и
А синтаксис правильный, как вообще код, так хоть пишут )))?
Сделал вывод что ты просто свой код показываешь.
 

workOnFood

Новичок
Раз уж я так обознался выступлю в роли капитана "очевидность"=)
Не <OPTION value='%s%s'>%s</OPTION> a <OPTION value='%s' %s>%s</OPTION>

И как заметил флоппик у тебя вот эта штука массив возвращает - mysql_fetch_array($cat_forms), а ты ее в условие цикла засунул.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
workOnFood, возможно стоит воспользоватся собственным советом, и не «хвастаться» при наличии лишь поверхностных знаний. Проще говоря — Дирол, Орбит?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Даю подсказку — блок не исполняется в цикле :)
 

Andkorol

Новичок
PHP:
$cat_forms_e = mysql_fetch_array($cat_forms);
Это зря - один из результатов запроса ушел "в никуда"..:)
 

workOnFood

Новичок
Ааааааа!=)))))

PHP:
while($cat_forms_e = mysql_fetch_array($cat_forms));
Просто никто не ожидал такого баяна-бабаяна=))
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Это очень опасная ошибка — т.к. синтаксически все верно, и более того — при тестировании на запросе возвращающем одну запись результат будет правильным. И в густом коде ее можно будет искать долго.
Из хороших решений, позволяющих избежать таких ошибок — обертка типа dbFetchAll($sql) — возвращающая все строки результирующего набора.
 

azovl

Новичок
флоппик, извиняюсь
не было времени все доделать до рабочего конца. Сегодня все написал, получил необходимый результат, вот код:
PHP:
 <SELECT name="cat">
      <? 
         do
         {
               $selected_cat = ($cat_forms_e['id']==$edit_var_res["cat"])?' selected="true" ':'';
               printf ("<OPTION value='%s'%s>%s</OPTION>",$cat_forms_e["id"],$selected_cat,$cat_forms_e["name_cat"]);
         }
      	     while($cat_forms_e = mysql_fetch_array($cat_forms));
      ?>
                </SELECT>
Option -ов получается столько, сколько и категорий. Просто не могу понять какой запрос уходит?
 
Сверху