Не могу понять: Есть две таблицы: 1)Имена обьектов - |id|object_name| 2)Связь обьектов с атрибутами- |id|object_name|atribut_name| Нужно что бы информация выводилась на странице пользвователя так: Страна-выпадающий список(Россия,Америка) Город-выпадающий список(Москва,Питер) Ну и тд. количество обьектов может любое: Вот что написал но вытягиваеться только одно значение обьект-атрибут PHP: <?php require_once('php/mysql_conect.php'); $use_db=mysql_query("use simply;"); //Вытягиваем имяна обьектов $select=mysql_query("select * from objects"); for($i=0;$i<mysql_num_rows($select);$i++) { $result=mysql_fetch_array($select); echo "$result[object_name]"; //Вытягиваем значения атрибутов на основании имени обьекта echo "<select>"; $select=mysql_query("select * from objects_atributes where object_name='$result[object_name]';"); for($i=0;$i<mysql_num_rows($select);$i++) { $result=mysql_fetch_array($select); echo "<option>$result[atribut_name]</option>"; } echo "</select><br>"; } ?> Не могли бы помочь разобраться?
избавьтесь от for'ов накопите данные в массив и посмотрите как они туда ложатся http://phpfaq.ru/debug
1)Соединять таблицы лучше по id объекта, а не по имени. 2)Стоит сразу все выбрать одним запросом, а не посылать запросы в цикле (смотреть в сторону join). 3)Зачем нужны select'ы без атрибутов id или name? Вот это работает и вроде делает, то что должен делать Ваш код: PHP: <div id="selects"> <?php $db=SQLDBFactory::getDB(); $db->select("select o.objN, attrN from objs as o join objs_attr as oa on o.objN=oa.objN"); $prevObj=""; $needClose=false; while($row=$db->fetchAssoc()){ if ($row["objN"]==$prevObj) { echoNextOption($row); } else{ $prevObj=$row["objN"]; if ($needClose) closeSelect(); echoNewSelect($row); echoNextOption($row); $needClose=true; } } closeSelect(); function echoNewSelect($row){ echo " <h2>", $row["objN"], "</h2>", PHP_EOL; echo " <select>", PHP_EOL; } function echoNextOption($row){ echo " <option>", $row["attrN"], "</option>", PHP_EOL; } function closeSelect(){ echo " </select>", PHP_EOL, " <br />", PHP_EOL, PHP_EOL; } ?> </div>