Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вывод значений таблицы MySql в виде html таблицы.
Форумы портала PHP.SU » » Вопросы новичков » Вывод значений таблицы MySql в виде html таблицы.

Страниц (2): [1] 2 »
 

1. Сказочник - 06 Ноября, 2016 - 10:23:39 - перейти к сообщению
Друзья, есть таблица в БД MySql в которой есть width, height и price. Нужно вывести её в виде html таблицы по типу шахматной доски. Т.е. первая строка все значения width, первый столбец все значения height, и внутри таблицы цены, по горизонтали высота, по вертикали ширина, для каждой цены. Нужно именно оформить в виде шахматной доски. Возможно попробовать записать в двумерный массив из БД а потом вывести его в html таблицу?
2. Сказочник - 06 Ноября, 2016 - 10:25:44 - перейти к сообщению
Сказочник пишет:
Друзья, есть таблица в БД MySql в которой есть width, height и price. Нужно вывести её в виде html таблицы по типу шахматной доски. Т.е. первая строка все значения width, первый столбец все значения height, и внутри таблицы цены, по горизонтали высота, по вертикали ширина, для каждой цены. Нужно именно оформить в виде шахматной доски. Возможно попробовать записать в двумерный массив из БД а потом вывести его в html таблицу?

вот как таблица в БД выглядит
3. 3d_killer - 06 Ноября, 2016 - 10:37:54 - перейти к сообщению
Делай 3 запроса, уникальные значения высоты, уникальные ширины, потом все цены, цены перебери и сложи массив $price[$R[width]][$R['height']]=$R['price']
а потов выводи таблицу
4. Мелкий - 06 Ноября, 2016 - 11:32:40 - перейти к сообщению
А высоты зачем? Отсортировать выборку по высоте и ширине и выводить сколько есть.
А если формировать матрицу ширина х высота = цена, то и одного запроса достаточно, в ходе формирования матрицы все возможные колонки будут известны.
5. 3d_killer - 06 Ноября, 2016 - 11:48:31 - перейти к сообщению
а вобще да, один запрос и формировать матрицу
6. rsersh - 07 Ноября, 2016 - 13:16:16 - перейти к сообщению
Сказочник пишет:
Друзья, есть таблица в БД MySql в которой есть width, height и price
так цена понятно, а нафига в одной таблице то что должно парсится из css?
короче, нужно отдельно дерать бд, эктемель и таблицу стилей, в таблице стилей уже и нужно прописывать размеры и цвета ячеекс прочими свойствами, но никак не держать их в одной куче.
7. 3d_killer - 07 Ноября, 2016 - 13:46:20 - перейти к сообщению
что там еще должно парситься из CSS
Оо
Циклы посмотри что такое, может придет что на ум, как в цикле выводить таблицу с заголовками из массива, а потом что-то утверждай

парситься из css ппц
8. rsersh - 07 Ноября, 2016 - 18:07:02 - перейти к сообщению
3d_killer пишет:

парситься из css ппц

Допустим, есть файл в котором содержаться стили, таблицы стилей, десятка два таблиц стилей. На загрузку энной страницы нужно только две таблицы. Если это не парсинг то, что это?
3d_killer пишет:
Циклы посмотри что такое, может придет, что на ум, как в цикле выводить таблицу с заголовками из массива, а потом что-то утверждай

я представляю как это делается, но в чём тут преимущество? по мне это лишная писанина и так проще запутаться(по крайней мере мне). может я в предыдущий раз не совсем корректно выразился но сейчас смысл должен быть понятен.
9. 3d_killer - 07 Ноября, 2016 - 18:45:38 - перейти к сообщению
это никак не относится к сути поставленного вопроса в начале темы, либо вопрос был поставлен не верно
10. Prizma - 07 Ноября, 2016 - 21:42:55 - перейти к сообщению
Перекрестные запросы, мб тебе это надо? это про обработку в один запрос...

А по факту данных на одну таблицу если они в разных тогда структуру в студию, запрос помочь составить не сложно, а если грамотно запрос сделан, то и вывод идёт в 2 строчки через цикл и вот вся html таблица из бд.

Какие у вас исходные данные в бд?
11. 3d_killer - 07 Ноября, 2016 - 22:45:23 - перейти к сообщению
да обычный тут запрос с сортировкой потом составление матрицы и вывод, несколько строчек кода...
(Добавление)
Prizma вы вообще просто ляпнуть не подумав написали? вначале он приложил скрин таблицы
12. Prizma - 09 Ноября, 2016 - 00:35:22 - перейти к сообщению
3d_killer пишет:
вы вообще просто ляпнуть не подумав написали? вначале он приложил скрин таблицы
Сказочник пишет:
Друзья, есть таблица в БД MySql в которой есть width, height и price.
хмм, и вправду не внимательно прочитал вопрос

В принципе всё просто ... на 10 минут хлопот, не проверял, но должно работать Улыбка Конечно с учетом, что данные как в таблице на скрине, иначе надо запланированные пропуски вставлять собрать перед выводом все значения width и если в данных какого то значения нет добавлять пустой <td></td> - реализовать проще всего будет третим циклом внутри 2-ого, который будет запускаться при проверке следующего значения width
PHP:
скопировать код в буфер обмена
  1. $db = new PDO($db_driver . ':host=' . $db_host . ';dbname=' . $db_name, $db_user, $db_password, $db_setting);
  2. $sql = 'SELECT `width`, `height`, `price` FROM `table` ORDER BY `width` ASC';
  3. $q = $db->prepare($sql);
  4. $q->execute();
  5. $ar = [];
  6. while($r = $q->fetch(\PDO::FETCH_ASSOC)) {
  7.         $h = $r['height'];
  8.         $w = $r['width'];
  9.         $p = $r['price'];
  10.     if(!isset($ar[$h])) $ar[$h] = [];
  11.         $ar[$h] = [];
  12.         $ar[$h][$w] = $p;
  13. }
  14. uksort($ar, function($a, $b) {
  15.         if($a == $b) return 0;
  16.         return ($a < $b) ? -1 : 1;
  17. });
  18. $re = '';
  19. $head = '<th>ширина</th>';
  20. foreach ($ar as $width => $data) {
  21.         $head = '<th>' . $width . '</th>';
  22.         $write = false;
  23.         $re .= '<tr>';
  24.         foreach ($data as $height => $price) {
  25.                 if(!$write) {
  26.                         $re .= '<th>' . $height . '</th>';
  27.                         $write = true;
  28.                 }
  29.                 $re .= '<td>'.$price.'</td>';
  30.         }
  31.         $re .= '</tr>';
  32. }
  33. echo '<table rules="all" border="1"><tr>'.$head.'</tr><tr><th>высота</th></tr>' . $re . '</table>';
13. LIME - 09 Ноября, 2016 - 00:44:36 - перейти к сообщению
Фэйспалм
А если продумать? Как оптимизировать?
(Добавление)
С таким кодом я бы сказал - спасибо мы вам перезвоним
И удалил телефон
14. Prizma - 09 Ноября, 2016 - 00:47:40 - перейти к сообщению
LIME пишет:
Фэйспалм
А если продумать? Как оптимизировать?
это мне?)

я просто подсказал как массив двухмерный составить и привёл пример его вывода, а вот оптимизация это уже пусть через голову пропустит товарищ и сделает по своему Улыбка
(Добавление)
или ты про sql запрос?) что именно вызывает отвращение?)))
(Добавление)
или ты про то, что одного цикла можно избежать, формирую выдачу на уровне получения данных (первого while)?
15. LIME - 09 Ноября, 2016 - 01:59:24 - перейти к сообщению
Я не знаю
А что можно оптимизировать?
Ладно шутю
Я в целом о стиле кодинга
Хотя и алгоритм можно бамнуть(оптимизировать)
А может и нельзя
Я хзУлыбка
Подумай
(Добавление)
Отвращение вызвал стиль кода
(Добавление)
Всегда надо убирать циклы если возможно
Слышал о сложности алгоритма? Типа о от н

 

Powered by ExBB FM 1.0 RC1