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

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

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
Сказочник
Отправлено: 06 Ноября, 2016 - 10:23:39
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2016  


Помог: 0 раз(а)




Друзья, есть таблица в БД MySql в которой есть width, height и price. Нужно вывести её в виде html таблицы по типу шахматной доски. Т.е. первая строка все значения width, первый столбец все значения height, и внутри таблицы цены, по горизонтали высота, по вертикали ширина, для каждой цены. Нужно именно оформить в виде шахматной доски. Возможно попробовать записать в двумерный массив из БД а потом вывести его в html таблицу?
Прикреплено изображение (Нажмите для увеличения)
Сни1мок.PNG

(Отредактировано автором: 06 Ноября, 2016 - 10:24:03)

 
 Top
Сказочник
Отправлено: 06 Ноября, 2016 - 10:25:44
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Нояб. 2016  


Помог: 0 раз(а)




Сказочник пишет:
Друзья, есть таблица в БД MySql в которой есть width, height и price. Нужно вывести её в виде html таблицы по типу шахматной доски. Т.е. первая строка все значения width, первый столбец все значения height, и внутри таблицы цены, по горизонтали высота, по вертикали ширина, для каждой цены. Нужно именно оформить в виде шахматной доски. Возможно попробовать записать в двумерный массив из БД а потом вывести его в html таблицу?

вот как таблица в БД выглядит
Прикреплено изображение (Нажмите для увеличения)
Снимок.PNG
 
 Top
3d_killer
Отправлено: 06 Ноября, 2016 - 10:37:54
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




Делай 3 запроса, уникальные значения высоты, уникальные ширины, потом все цены, цены перебери и сложи массив $price[$R[width]][$R['height']]=$R['price']
а потов выводи таблицу

(Отредактировано автором: 06 Ноября, 2016 - 10:38:16)

 
My status
 Top
Мелкий Супермодератор
Отправлено: 06 Ноября, 2016 - 11:32:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А высоты зачем? Отсортировать выборку по высоте и ширине и выводить сколько есть.
А если формировать матрицу ширина х высота = цена, то и одного запроса достаточно, в ходе формирования матрицы все возможные колонки будут известны.


-----
PostgreSQL DBA
 
 Top
3d_killer
Отправлено: 06 Ноября, 2016 - 11:48:31
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




а вобще да, один запрос и формировать матрицу
 
My status
 Top
rsersh
Отправлено: 07 Ноября, 2016 - 13:16:16
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Сент. 2016  


Помог: 0 раз(а)




Сказочник пишет:
Друзья, есть таблица в БД MySql в которой есть width, height и price
так цена понятно, а нафига в одной таблице то что должно парсится из css?
короче, нужно отдельно дерать бд, эктемель и таблицу стилей, в таблице стилей уже и нужно прописывать размеры и цвета ячеекс прочими свойствами, но никак не держать их в одной куче.
 
 Top
3d_killer
Отправлено: 07 Ноября, 2016 - 13:46:20
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




что там еще должно парситься из CSS
Оо
Циклы посмотри что такое, может придет что на ум, как в цикле выводить таблицу с заголовками из массива, а потом что-то утверждай

парситься из css ппц
 
My status
 Top
rsersh
Отправлено: 07 Ноября, 2016 - 18:07:02
Post Id


Новичок


Покинул форум
Сообщений всего: 5
Дата рег-ции: Сент. 2016  


Помог: 0 раз(а)




3d_killer пишет:

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

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

я представляю как это делается, но в чём тут преимущество? по мне это лишная писанина и так проще запутаться(по крайней мере мне). может я в предыдущий раз не совсем корректно выразился но сейчас смысл должен быть понятен.
 
 Top
3d_killer
Отправлено: 07 Ноября, 2016 - 18:45:38
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




это никак не относится к сути поставленного вопроса в начале темы, либо вопрос был поставлен не верно
 
My status
 Top
Prizma
Отправлено: 07 Ноября, 2016 - 21:42:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




Перекрестные запросы, мб тебе это надо? это про обработку в один запрос...

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

Какие у вас исходные данные в бд?
 
My status
 Top
3d_killer
Отправлено: 07 Ноября, 2016 - 22:45:23
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




да обычный тут запрос с сортировкой потом составление матрицы и вывод, несколько строчек кода...
(Добавление)
Prizma вы вообще просто ляпнуть не подумав написали? вначале он приложил скрин таблицы
 
My status
 Top
Prizma
Отправлено: 09 Ноября, 2016 - 00:35:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




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>';
 
My status
 Top
LIME
Отправлено: 09 Ноября, 2016 - 00:44:36
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Фэйспалм
А если продумать? Как оптимизировать?
(Добавление)
С таким кодом я бы сказал - спасибо мы вам перезвоним
И удалил телефон
 
 Top
Prizma
Отправлено: 09 Ноября, 2016 - 00:47:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 463
Дата рег-ции: Июнь 2012  
Откуда: Санкт-Петербург


Помог: 5 раз(а)




LIME пишет:
Фэйспалм
А если продумать? Как оптимизировать?
это мне?)

я просто подсказал как массив двухмерный составить и привёл пример его вывода, а вот оптимизация это уже пусть через голову пропустит товарищ и сделает по своему Улыбка
(Добавление)
или ты про sql запрос?) что именно вызывает отвращение?)))
(Добавление)
или ты про то, что одного цикла можно избежать, формирую выдачу на уровне получения данных (первого while)?
 
My status
 Top
LIME
Отправлено: 09 Ноября, 2016 - 01:59:24
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Я не знаю
А что можно оптимизировать?
Ладно шутю
Я в целом о стиле кодинга
Хотя и алгоритм можно бамнуть(оптимизировать)
А может и нельзя
Я хзУлыбка
Подумай
(Добавление)
Отвращение вызвал стиль кода
(Добавление)
Всегда надо убирать циклы если возможно
Слышал о сложности алгоритма? Типа о от н
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB