За последние 24 часа нас посетили 17743 программиста и 1714 роботов. Сейчас ищут 1884 программиста ...

Вывести данные из БД блоками. Группируя по колонке

Тема в разделе "PHP и базы данных", создана пользователем lemonl, 21 ноя 2021.

  1. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Здравствуйте,

    Подскажите пожалуйста, как правильно вывести данные из БД блоками. Как бы группируя по колонке z

    В БД

    z rez
    1 ---- 7
    1 ---- 3
    1 ---- 5
    1 ---- 1
    1 ---- 0
    1 ---- 9
    2 ---- 1
    2 ---- 6
    2 ---- 2
    2 ---- 0
    2 ---- 0
    2 ---- 1
    ......

    вывести в PHP как
    <div>
    1 ---- 7
    1 ---- 3
    1 ---- 5
    1 ---- 1
    1 ---- 0
    1 ---- 9
    </div>
    <div>
    2 ---- 1
    2 ---- 6
    2 ---- 2
    2 ---- 0
    2 ---- 0
    2 ---- 1
    </div>
    ......
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
  3. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.858
    Симпатии:
    748
    Адрес:
    Татарстан
    К БД никоим образом не относится, так как выводить просто массив будете
    все дело в верстке....
     
  4. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Пока на этом этапе

    $result = mysqli_query($conn, "SELECT * FROM `table` ORDER BY date ASC;");

    if(mysqli_num_rows($result) > 0) {
    while($row = mysqli_fetch_assoc($result)) {

    if($f_save_date!=$row["z"]) {
    $all_data .="<div>";
    $all_data .="</div>";
    $f_save_date=$row["z"];​
    } else {
    $all_data .="--"."<br>";​
    }​
    }
    return $all_data;
    }
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.858
    Симпатии:
    748
    Адрес:
    Татарстан
    в зависимости от z присваивать div Class="col1" или class="col2"
    средствами верстки разместить в нужном месте
     
  6. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Вот смотрю и вижу что вроде бы элементарная задача ... но что-то не идет и все ((

    можно ли так делать ?


    $resultZ = mysqli_query($conn, "SELECT date FROM table GROUP BY date ORDER BY date ASC;");
    $all_data = "";

    if(mysqli_num_rows($resultZ) > 0) {
    while($rowz = mysqli_fetch_assoc($resultZ)) {
    $all_data .= "<div style='border:1px solid red;margin:5px 0;'>";

    $result = mysqli_query($conn, "SELECT * FROM table WHERE date ='".$rowz["date "]."' ORDER BY date ASC;");

    while($row = mysqli_fetch_assoc($result)) {
    $all_data .= $row["rez"].$row["rez1"] ."<br>";​
    }

    $all_data .= "</div>";​
    }​
    return $all_data;
    }
     
    #6 lemonl, 21 ноя 2021
    Последнее редактирование: 21 ноя 2021
  7. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281
    Нет, вы выбираете date, группируя по date, и сортируя по date.
    Это бессмысленно.
    А вам нужно или вывести нужную колонку сгруппировав по другой, при этом объединив сгруппированное в строку.
    Потом на выдаче эти строки разбить в массивы, и каждый в отдельности вывести в своем блоке.

    Либо же вам всю выдачу нужно правильно отсортировать(силами mysql или php)
    И отсортированное вывести каждое в своем блоке
     
  8. lemonl

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

    С нами с:
    10 июн 2009
    Сообщения:
    164
    Симпатии:
    0
    Вы уж меня извините за мою наглость, но я уже бьюсь несколько дней, воз и ныне там ((
    Можете показать правильный пример как это сделать ?
     
  9. Drunkenmunky

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

    С нами с:
    12 авг 2020
    Сообщения:
    1.487
    Симпатии:
    281