За последние 24 часа нас посетили 42313 программистов и 1813 роботов. Сейчас ищут 2069 программистов ...

Как вывести все записи с 2х таблиц mysql

Тема в разделе "PHP для новичков", создана пользователем Khaybulla, 21 дек 2016.

  1. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Как можно вывести все записи с 2х таблиц ?

    В данный момент есть такой запрос но он не куда не годится выводятся записи только с 1й таблицы...

    PHP:
    1. <?
    2.     $result = mysql_query("SELECT * FROM table1, table2 ORDER BY RAND() LIMIT 25");
    3.     while($list = mysql_fetch_array($result)) {
    4.     if(mysql_num_rows($result) == 0) {
    5.         echo "Список пуст";
    6.     }
    7. ?>
    8.     <span class=""><?php echo $list["title"] ?></span>
    9. <?
    10.     }
    11. ?>
     
  2. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Делай 2 запроса, и пиши всё в 1 массив. И будет тебе 2 таблицы в одном массиве.
     
    Khaybulla нравится это.
  3. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ORDER BY RAND надо избегать, и выбирать случайные записи неким иным образом.
     
  4. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    Каким образом ? Можете показать пример ?

    Если так то выдает ошибку: Warning: mysql_fetch_array() expects parameter 2 to be long, resource given in on line 238

    PHP:
    1. <?
    2.    $result = mysql_query("SELECT * FROM table1 ORDER BY RAND() LIMIT 2");
    3.    $result1 = mysql_query("SELECT * FROM table2 ORDER BY RAND() LIMIT 2");
    4.    while($list = mysql_fetch_array($result, $result1)) {
    5.    if(mysql_num_rows($result, $result1) == 0) {
    6.        echo "Список пуст";
    7.    }
    8. ?>
    9.     <span class=""><?php echo $list["title"] ?></span>
    10. <?
    11.    }
    12. ?>
     
  5. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    два отдельных запроса с двумя отдельными обращениями к бд
     
  6. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Первый запрос пишет в $var1, второй в var2
    PHP:
    1. $result = mysqli_fetch_assoc($var1);
    2. $result .= mysqli_fetch_assoc($var2);
    Если не ошибаюсь, так должно работать.
     
    Khaybulla нравится это.
  7. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    Код (Text):
    1. SELECT * FROM table1 ORDER BY RAND() LIMIT 2
    2. UNION
    3. SELECT * FROM table2 ORDER BY RAND() LIMIT 2
    как то так =)
    --- Добавлено ---
    только количество и типы столбцов обязаны совпадать
     
    Khaybulla нравится это.
  8. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    к массиву конкатенация неприменима
     
  9. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    блин, ребятки, вы ща научите тут тело он завалит сервак хостера и прибежит будет рассказывать о нагрузке и почему меня выгнали с хостинга!!!!
    Код (Text):
    1.  
    2. SELECT id (ну или че у тебя там в AI) FROM table2
    3. array_rand (то что выбралось из Бд, 2) // 2 это 2 случайных значения
    4. SELECT * FROM table2 WHERE id IN (implode то что из array_rand)
    Только так, ORDER BY RAND положит любой сервак на большой таблице
     
    mahmuzar нравится это.
  10. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    мы научим его VPS
     
  11. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    VPS и mysql_query вещи ваще несовместимые

    я надеюсь в ближайшее время эту шнягу выпилят из всех реп и только у (не буду делать рекрамму) останется возможность юзать пхп 4
     
  12. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    вот оно всё и решится в тот момент :D
     
  13. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    А зачем ты функцию заключил в одинарные кавычки?
     
    Khaybulla нравится это.
  14. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2

    PHP:
    1. <?
    2. $var1 = 'mysql_query("SELECT * FROM table1")';
    3. $var2 = 'mysql_query("SELECT * FROM table2")';
    4. $result = mysql_fetch_assoc($var1);
    5. $result = mysql_fetch_assoc($var2);
    6. while($list = $result) {
    7.     if(mysql_num_rows($result) == 0) {
    8.         echo "Список пуст";
    9.     }
    10. ?>
    11.     <span class=""><?php echo $list["title"] ?></span>
    12. <?
    13.     }
    14. ?>
    Не работает выдает ошибку: Warning: mysql_fetch_assoc() expects parameter 1 to be resource, string given in on line 240
    --- Добавлено ---
    Запутался прост, без ковычек выходит первая запись второй таблицы бесконечно
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    эта функция запроса в бд не делает. посмотри примеры.
    --- Добавлено ---
    кавычек
     
  16. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
  17. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    чего ты юниона то испугался

    он распалеливает 2 запроса .. выполняет их и потом просто склеивает друг за другом - какраз то что ты хочешь
    или я чего не понимаю ?
     
    Khaybulla нравится это.
  18. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    я про union вообще ничего не говорил, я про ордер бай ранд
     
    denis01 нравится это.
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    э, слющи, ты каво тут байраном назвал, а?
     
    denis01 нравится это.
  20. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    ордер бай ранд это не я придумал - это топик стартер сам себе придумал =))
     
    Khaybulla нравится это.
  21. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    без кАвычек выходит первая запись второй таблицы бесконечно!

    1. <?
    2. $var1 = mysql_query("SELECT * FROM table1");
    3. $var2 = mysql_query("SELECT * FROM table2");
    4. $result = mysql_fetch_assoc($var1);
    5. $result = mysql_fetch_assoc($var2);
    6. while($list = $result) {
    7. if(mysql_num_rows($result) == 0) {
    8. echo "Список пуст";
    9. }
    10. ?>
    11. <span class=""><?php echo $list["title"] ?></span>
    12. <?
    13. }
    14. ?>


    *как раз
    у меня столбцы в таблицах разные и количество тоже
    были бы одинаковые закинул бы все в 1 таблицу
     
  22. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  23. Khaybulla

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

    С нами с:
    4 мар 2016
    Сообщения:
    89
    Симпатии:
    2
    нет
     
  24. Slavka

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

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    фантазии на тему разного количества столбцов и юнион
    http://sqlfiddle.com/#!9/e4de9/1

    могу мнооого я фантазировать...

    можно удалить столбцы "лишние" можно "лишние" показать

    можно вот такой финт провернуть

    PHP:
    1. <?
    2. $var1 = mysql_query("SELECT * FROM table1");
    3. $var2 = mysql_query("SELECT * FROM table2");
    4. $result = mysql_fetch_assoc($var1);
    5. $result2 = mysql_fetch_assoc($var2);
    6. while($list = $result) {
    7.     if(mysql_num_rows($result) == 0) {
    8.         echo "Список пуст";
    9.     }
    10. ?>
    11.     <span class=""><?php echo $list["title"] ?></span>
    12. <?
    13.     }
    14.  
    15. while($list = $result2) {
    16.     if(mysql_num_rows($result2) == 0) {
    17.         echo "Список пуст";
    18.     }
    19. ?>
    20.     <span class=""><?php echo $list["title"] ?></span>
    21. <?
    22.     }
    23.  
    24.  
    25.  
    26. ?>
    продолжать ?

    кому не понравится повторение кода - можно в функцию засунуть ..
     
    Khaybulla нравится это.
  25. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
    Не надо, на ошибку я тебе указал выше, там где ты ничего не замечаешь