За последние 24 часа нас посетили 63019 программистов и 1740 роботов. Сейчас ищут 918 программистов ...

Вывод на страницу(Незнаю как обозвать)

Тема в разделе "PHP для новичков", создана пользователем Eser, 25 мар 2010.

  1. Eser

    Eser Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Не могу понять:
    Есть две таблицы:
    1)Имена обьектов - |id|object_name|
    2)Связь обьектов с атрибутами- |id|object_name|atribut_name|

    Нужно что бы информация выводилась на странице пользвователя так:
    Страна-выпадающий список(Россия,Америка)
    Город-выпадающий список(Москва,Питер)
    Ну и тд. количество обьектов может любое:

    Вот что написал но вытягиваеться только одно значение обьект-атрибут
    PHP:
    1. <?php
    2. require_once('php/mysql_conect.php');
    3. $use_db=mysql_query("use simply;");
    4.  
    5. //Вытягиваем имяна обьектов
    6. $select=mysql_query("select * from objects");
    7. for($i=0;$i<mysql_num_rows($select);$i++)
    8. {
    9. $result=mysql_fetch_array($select);
    10. echo "$result[object_name]";
    11. //Вытягиваем значения атрибутов на основании имени обьекта
    12. echo "<select>";
    13. $select=mysql_query("select * from objects_atributes where object_name='$result[object_name]';");
    14. for($i=0;$i<mysql_num_rows($select);$i++)
    15. {
    16. $result=mysql_fetch_array($select);
    17. echo "<option>$result[atribut_name]</option>";
    18. }
    19. echo "</select><br>";
    20. }
    21. ?>
    Не могли бы помочь разобраться?
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    избавьтесь от for'ов
    накопите данные в массив и посмотрите как они туда ложатся
    http://phpfaq.ru/debug
     
  3. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    1)Соединять таблицы лучше по id объекта, а не по имени.
    2)Стоит сразу все выбрать одним запросом, а не посылать запросы в цикле (смотреть в сторону join).
    3)Зачем нужны select'ы без атрибутов id или name?

    Вот это работает и вроде делает, то что должен делать Ваш код:
    PHP:
    1. <div id="selects">
    2. <?php
    3. $db=SQLDBFactory::getDB();
    4. $db->select("select o.objN, attrN from objs as o join objs_attr as oa on o.objN=oa.objN");
    5. $prevObj="";
    6. $needClose=false;
    7. while($row=$db->fetchAssoc()){
    8.     if ($row["objN"]==$prevObj) {
    9.         echoNextOption($row);
    10.     }
    11.     else{
    12.         $prevObj=$row["objN"];
    13.         if ($needClose) closeSelect();
    14.         echoNewSelect($row);
    15.         echoNextOption($row);
    16.         $needClose=true;
    17.     }
    18. }
    19. closeSelect();
    20.  
    21.  
    22. function echoNewSelect($row){
    23.     echo "  <h2>", $row["objN"], "</h2>", PHP_EOL;
    24.     echo "  <select>", PHP_EOL;
    25. }
    26.  
    27. function echoNextOption($row){
    28.     echo "      <option>", $row["attrN"], "</option>", PHP_EOL;
    29. }
    30.  
    31. function closeSelect(){
    32.     echo "  </select>", PHP_EOL, "  <br />", PHP_EOL, PHP_EOL;
    33. }
    34.  
    35. ?>
    36. </div>
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Volt(220)
    молодец, научил
     
  5. Eser

    Eser Активный пользователь

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Спасибо
     
  6. Volt(220)

    Volt(220) Активный пользователь

    С нами с:
    11 июн 2009
    Сообщения:
    1.640
    Симпатии:
    1
    А вот это науке еще не известно...