За последние 24 часа нас посетили 15838 программистов и 1666 роботов. Сейчас ищет 901 программист ...

Помогите вывести в скрипте многострочный результат зпроса

Тема в разделе "PHP и базы данных", создана пользователем goodhash, 10 фев 2011.

  1. goodhash

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

    С нами с:
    10 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    Всем привет, помогите пожалуйста!
    Объясните как в скрипте вывести все строки запроса.
    так, поясню: имеется БД, запрос:

    SELECT distinct specialnost.spec_name, fakultet.fakult_name, tip_pract.tip_pract_name
    FROM specialnost, fakultet, napravlennost, punct_dogovor, dogovor, tip_pract, punct_tip_pract
    WHERE specialnost.id = napravlennost.specialnost_id
    AND fakultet.id = napravlennost.fakultet_id
    AND napravlennost.id = punct_dogovor.napravlennost_id
    AND punct_dogovor.dogovor_id =21
    AND tip_pract.id = punct_tip_pract.tip_pract_id
    AND punct_tip_pract.punct_dogovor_id = punct_dogovor.id

    результат:

    spec_name------------fakult_name-----------------tip_pract_name
    Боксер----------------Физической культуры------Производственная
    Программист----------Информатики----------------Учебная
    Программист----------Информатики----------------Производственная
    Программист----------Информатики----------------Преддипломная

    Теперь как мне вывести в скрипте эти четыре строки в таблицу....сломал голову(

    п.с.
    считаем количество строк результата, запускаем цикл(от количеств строк до 0)
    цикл
    выводим строку
    перемещаем указатель на следующую строку
    конец

    По логике так?
     
  2. runner

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

    С нами с:
    16 апр 2010
    Сообщения:
    343
    Симпатии:
    1
    Адрес:
    Ташкент
    Теоретически это выглядит так- надеюсь у тебя Mysql

    PHP:
    1.  
    2. //выполняешь свой запрос
    3. $q="SELECT distinct specialnost.spec_name, fakultet.fakult_name, tip_pract.tip_pract_name
    4. FROM specialnost, fakultet, napravlennost, punct_dogovor, dogovor, tip_pract, punct_tip_pract
    5. WHERE specialnost.id = napravlennost.specialnost_id
    6. AND fakultet.id = napravlennost.fakultet_id
    7. AND napravlennost.id = punct_dogovor.napravlennost_id
    8. AND punct_dogovor.dogovor_id =21
    9. AND tip_pract.id = punct_tip_pract.tip_pract_id
    10. AND punct_tip_pract.punct_dogovor_id = punct_dogovor.id";
    11. $result = mysql_query($q);
    12. // если все ОК
    13. if($result)
    14. {
    15.       // выводишь в массив  заголовки таблицы
    16.       $o=array();
    17.       $o[]="<table><tr><td>spec_name</td><td>fakult_name</td><td>tip_pract_name</td></tr>";
    18.       // выводишь записи  в цикле
    19.       while ($row = mysql_fetch_array($result,MYSQL_ASSOC))
    20.       {
    21.             $o[]="<tr><td>{$row ['spec_name']}</td><td>{$row ['fakult_name']}</td><td>{$row ['tip_pract_name']}</td></tr>";
    22.       }
    23.       // выводишь тэг конца таблицы
    24.       $o[]="</table>";
    25.       if(sizeof($o)>2)
    26.       {
    27.             // если есть записи- выводишь сформированный массив
    28.             echo implode('',$o);
    29.       }
    30.       else
    31.       {
    32.             echo "Нет данных";
    33.        }
    34. }
    35. else
    36. {
    37.        echo "Ощибка";
    38. }
    39.  
    Пояснения
    1) Если просто вывод записей в таблицу, то подсчет записей не нужен
    2) while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) обеспечивает выборку очередной записи в массив $row и проверку завершения цикла
     
  3. goodhash

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

    С нами с:
    10 фев 2011
    Сообщения:
    7
    Симпатии:
    0
    Большое спасибо, runner. разобрался, работает.