За последние 24 часа нас посетили 58098 программистов и 1848 роботов. Сейчас ищут 975 программистов ...

Вывод данных из разных таблиц в один список.

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

  1. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Добрый день подскажите как можно сделать следующее.
    Нужно что бы в список <select> выводилась информация с двух разных таблиц.(Таблицы по структуре одинаковые обе хранят информацию о пользователях,только в одной исполнители, а в другой менеджеры).
    Как сделать select c данными из одной таблицы я знаю. Не могу понять как вывести инфу с двух таблиц.
    Пока получаеться только так:
    PHP:
    1. $query_users_man=mysql_query("select name from users_man;");
    2. $result_users_man=mysql_num_rows($query_users_man);
    3.  
    4. $query_users_isp=mysql_query("select name from users_isp;");
    5. $result_users_isp=mysql_num_rows($query_users_isp);
    6.  
    7. $count=($result_users_isp+$result_users_man);
    8.  
    9. for($x=0;$x<$count;$x++)
    10. {
    11. $query_data_isp=mysql_fetch_array($query_users_isp);
    12. echo "<option value='$query_data_isp[id]'>$query_data_isp[name]</option>";
    13. }
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Eser
    что в итоге должно получится?
     
  3. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    за работоспособность не ручаюсь, но может прокатит?

    Код (Text):
    1. $query_users = mysql_query("SELECT id, name FROM users_man UNION SELECT id, name FROM users_isp;");
    2.  
    3. for($x=0;$x<mysql_num_rows($query_users);$x++)
    4. {
    5.     $query_data=mysql_fetch_array($query_users);
    6.     echo "<option value='$query_data[id]'>$query_data[name]</option>";
    7. }
    Только таким путем id будет непонятно к кому относиться, то ли менеджеру, то ли к исполнителю. Потому, раз вы их объединяете в одном списке нужен уникальный идентификатор.
     
  4. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Должен получиться общий список.Спасибо за подсказку.
    Но сделал пока так, вроде работает:
    PHP:
    1. echo "<select>";
    2. $query_users_man=mysql_query("select name from users_man;");
    3. $result_users_man=mysql_num_rows($query_users_man);
    4.  
    5. $query_users_isp=mysql_query("select name from users_isp;");
    6. $result_users_isp=mysql_num_rows($query_users_isp);
    7.  
    8. for($x=0;$x<$result_users_isp;$x++)
    9. {
    10. $query_data_isp=mysql_fetch_array($query_users_isp);
    11. echo "<option value='$query_data_isp[id]'>$query_data_isp[name]</option>";
    12. }
    13.  
    14. for($h=0;$h<$result_users_man;$h++)
    15. {
    16. $query_data_man=mysql_fetch_array($query_users_man);
    17. echo "<option value='$query_data_man[id]'>$query_data_man[name]</option>";
    18. }
    19. echo "</select>";
     
  5. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Eser

    Откуда у тебя $query_data_man[id], если ты из базы только name извлекаешь?
    И надо без кавычек писать

    И попробуй мой код, должен работать. 2 запроса ни к чему, если можно 1 сделать
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Eser
    покажи пример готового списка. создай руками и покажи просто какие параметры в нем из какой таблицы. без кода без всего. просто набросай.

    просто не ясно что тебе куда надо вывести откуда. проблемы сделать это дним запросом - нет.
     
  7. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    igordata

    Та я ему написал как это должно быть, не хочет даже попробовать)))
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    tommyangelo
    ну может ему не так надо =)
     
  9. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Так, у меня уже 5 левел телепат-мода =)
     
  10. Eser

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

    С нами с:
    16 янв 2007
    Сообщения:
    141
    Симпатии:
    0
    Сори просто времени на программирование не хватает.
    Про UNION спасибо не знал что можно обьединять запросы. Учту это и обязательно попробую, т.к это удобней.
    $query_data_man[id]-да есть извиняюсь, забыл про него сказать и написать в примере.
    Спасибо всем за помощь.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Eser
    кстати можно даже без самого слова UNION обойтись

    а еще если надо где-то можно давать псевдонимы

    SELECT ip.names AS names_ip, isp.names AS names_isp

    если надо разделить в выдаче поля из разных таблиц с одинаковыми именами

    можно даже из одной таблицы, например разделить на разные поля из даты год и время допустим и взять из одного поля их под разными псевдонимами.
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    igordata не факт, я пробовал у себя сделать запрос

    SELECT users.id, texts.id FROM users, texts;

    Выдало 2 столбца с одинаковым именем.
    С AS не пробовал, так что доказывать не буду =)
    А Юнион - то что нужно.
    Ну а про один столбец с разными именами да,всё верно
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    tommyangelo
    Выдало 2 столбца с одинаковым именем.

    интересно, как это в пхп выглядит... надо будет попробовать при случае.