За последние 24 часа нас посетили 50846 программистов и 1746 роботов. Сейчас ищут 865 программистов ...

sql запрос и передача в массив

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

  1. domio

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

    С нами с:
    18 дек 2012
    Сообщения:
    35
    Симпатии:
    5
    Добрый день.
    Ни как не получается сделать запрос.

    Есть база данных.
    Код (Text):
    1. +----+------------+---------+-----------+
    2. | id | date       | user_id | content1  |
    3. +----+------------+---------+-----------+
    4. |  1 | 1212123123 |       2 | some text |
    5. |  2 | 1437411631 |       2 | some text |
    6. |  3 | 1467493261 |       2 | some text |
    7. |  4 | 1467493261 |       2 | some text |
    8. |  5 | 1467493261 |       2 | some text |
    9. |  6 | 1467493261 |       2 | some text |
    10. |  7 | 1467493261 |       2 | some text |
    11. |  8 | 1467493261 |       2 | some text |
    12. |  9 | 1467493261 |       2 | some text |
    13. +----+------------+---------+-----------+
    Мне нужно выбрать все данные и вывести в таком формате

    Код (Text):
    1. 3-07-2016
    2.          some_text
    3.          some_text
    4.          some_text
    5.          some_text
    6. 12-12-2008
    7.          some_text
    8.          some_text
    9.          some_text
    10.          some_text
    Я так понимаю нужно при выборе запихнуть все в многомерный массив
    Код (Text):
    1. $arr['3-07-2016'][0] = "some text";
    2. $arr['3-07-2016'][1] = "some text";
    3. $arr['3-07-2016'][2] = "some text";

    Так вот как это сделать? Подскажите пожалуйста я хоть в правильном направлении иду, или есть полегче варианты?
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    В верном. Даже сортировки на надо. Просто проверяй существование индекса в массиве перед тем как в него затолкать очередную строку.
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Зачем проверять?
    PHP:
    1. $arr = [];
    2. while ($line = $result->fetch()) {
    3.     $arr[$line['date']][] = $line['content1'];
    4. }
     
  4. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    для очевидности
     
  5. domio

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

    С нами с:
    18 дек 2012
    Сообщения:
    35
    Симпатии:
    5
    Премного благодарен!
     
  6. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @domio, кстати, можно пойти и другим путём. Вряд ли он будет чем-то лучше, но для общего развития пригодится. Конкатенируем строки в запросе, группируя по дате:
    PHP:
    1. $query = "SELECT
    2.  DATE_FORMAT(`date`, '%d-%m-%Y') AS `date`,
    3.  GROUP_CONCAT(`content1` SEPARATOR ',') AS `content`
    4. FROM `tbl_name` GROUP BY `date`";
    На выходе получаете такой результат:
    Код (Text):
    1. date        |   content
    2. ------------------------------------------------------------------------------------------
    3. 12-12-2008  |   some text,some text,some text,some text,some text,some text
    4. 03-07-2016  |   some text,some text
    Строки разделены запятой и при выводе применяем к ним explode()
     
  7. domio

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

    С нами с:
    18 дек 2012
    Сообщения:
    35
    Симпатии:
    5
    Благодарю, возьму на будущее.