ФорумРазработкаБазы данных → Выборочная сортировка данных из БД

Выборочная сортировка данных из БД

  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 10:45

    Добрый вечер!
    Хочу попросить вас о помощи. Вопрос касается вывода данных из базы.

    Вопрос:

    Есть таблица в БД
    id day name
    1 пн. Ваня
    2 пн. Петя
    3 вт. Рома
    4 ср. Гена

    Результатом вывода должна быть таблица со столбцами day и name, но так чтобы значения столбца day выводились в единственном числе. Например:

    Желаемы результат
    day name
    пн. Ваня
    Петя
    вт. Рома
    ср. Гена

    Таблица выводится цыклически, то есть имеет одну строку и два столбца, куда и выводятся данные.

    Ломаю голову ужу 3 день и все никак.
    Заранее спасибо.
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 4 марта 2008 г. 11:03, спустя 18 минут 44 секунды

    Ломаю голову ужу 3 день и все никак.

    ну это наверное потому что база данных тут нипричем :)
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 11:08, спустя 4 минуты 53 секунды

    Ну а как это можно реализовать? Может есть у вас мысли какие-то?
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 4 марта 2008 г. 11:14, спустя 5 минут 26 секунд

    это реализуется непосредственно при выводе массива, при помощи проверки на совпадение текущего дня с предыдущим
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 11:17, спустя 3 минуты 26 секунд

    А можно по подробнее, а то я сам в PHP не очень то шарю.
  • AlexB

    Сообщения: 4290 Репутация: N Группа: в ухо

    Spritz 4 марта 2008 г. 11:26, спустя 9 минут 11 секунд

    А чего подробнее?
    Ничего, кроме банального запроса к БД, цикла и ифа для решения задачи не требуется. Т.е. самые основы основ.
    Так на каком этапе у тебя проблема?
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 11:38, спустя 11 минут 17 секунд

    Впринципе вопрсов много.

    Если все сводится к селекту и ифам, тогда:
    1. Делаю селект из таблицы БД
    2. Получаю все записи из таблицы
    3. Данные столбца name остаются без изменений, вывожу как есть

    Начинаются вопросы: )

    4. Не совсем представляю алгоритм сравнения…


    Если не сложно напиши пожалуйста примерный порядок действий.
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 4 марта 2008 г. 11:39, спустя 1 минуту 3 секунды


    $prevDay = null; // день из предыдущей записи
    print '<table>';
    while ($row = mysql_fetch_assoc($queryResult)) {
       print '<tr><td>'
       if ($prevDay != $queryResult['day']) { // выводим день только один раз
           $prevDay = $queryResult['day'];
           print $queryResult['day'];
       }
       print "</td><td>{$row['name']}</td></tr>";
    }
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 4 марта 2008 г. 11:46, спустя 7 минут 23 секунды



    $prevDay = null; // день из предыдущей записи
    print '<table>';
    while ($row = mysql_fetch_assoc($queryResult)) {
       print '<tr><td>'
       if ($prevDay != $queryResult['day']) { // выводим день только один раз
           $prevDay = $queryResult['day'];
           print $queryResult['day'];
       }
       print "</td><td>{$row['name']}</td></tr>";
    }



    Огромное спасибо. Очень помог.
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 0:58, спустя 13 часов 11 минут 34 секунды

    Добрый день. Опять проблема. Этот скрипт что то не работает, не пойму почему. В IF выдает ошибку Parse error: syntax error, unexpected T_IF


    $result = mysql_query("SELECT * FROM timetable704");
    $row = mysql_fetch_assoc($result);

    $prevDay = null; // день из предыдущей записи
    print '<table>';
    while ($row = mysql_fetch_assoc($result)) {
    print '<tr><td>'
    if ($prevDay != $row['day']) { // выводим день только один раз
    $prevDay = $row['day'];
    print $row['day'];
    }
    print "</td><td>{$row['name']}</td></tr>";
    }
    print '</table>';
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 5 марта 2008 г. 1:01, спустя 3 минуты 17 секунд

    Перевести?
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 1:14, спустя 13 минут 29 секунд

    Лучше наверное сущность ошибки изложить, ну и помоч конечно это исправить, если не рудно.
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 5 марта 2008 г. 1:30, спустя 15 минут 34 секунды

    точку с запятой пропустил Тимур
    все умрут, а я изумруд
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 1:35, спустя 4 минуты 48 секунд

    о… Спасибо
  • smv

    Сообщения: 236 Репутация: N Группа: Кто попало

    Spritz 5 марта 2008 г. 6:43, спустя 5 часов 8 минут 46 секунд

    Опять беда. Не выводитяс первая строка в таблице.



    $result = mysql_query("SELECT * FROM timetable704 order by case when day like '%пн.%' then 1 when day like '%вт.%' then 2 when day like '%ср.%' then 3 when day like '%чт.%' then 4 when day like '%пт.%' then 5 else 6 end");
    $row = mysql_fetch_assoc($result);

    $prevDay = null; // день из предыдущей записи
    print '<table>';
    while ($row = mysql_fetch_assoc($result)) {
    print '<tr><td>';
    if ($prevDay != $row['day']) { // выводим день только один раз
    $prevDay = $row['day'];
    print $row['day'];
    }
    print "</td><td>{$row['name']}</td></tr>";
    }
    print '</table>';


    Пожалуйста подскажитечто делать. Заранее спасибо.

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