не могу создать заголовок для колонки списка
Есть список в 2 колонки, который генерируется циклами (выводящими данные из БД). Формально это 2 списка, разбитые по разным дивам:
<div id="subs" class="subs"> <div class="col col1"> <ul> <?php // НАЧИНАЕМ ЦИКЛ, ВЫВОДИЩИЙ ИЗ БД СПИСОК БЛЮД (ОТДЕЛЬНО ДЛЯ КАЖДОГО ЗАПРОСА, ЧТОБЫ СФОРМИРОВАТЬ 2 РЯДА) // // ССЫЛКИ ССЫЛАЮТСЯ НА ПРИСВОЕННЫЙ БЛОКАМ id, КОТОРЫЙ БЕРЕМ ИЗ ПОЛЯ index_num В БД" // while ($row11 = mysql_fetch_array($query11)) { ?> <li><a href="menu.php#<?php print($row11["index_num"]); ?>"> <?php print($row11["name"]); ?></a></li> <?php } ?> </ul> </div> <div class="col col2"> <ul> <?php while ($row12 = mysql_fetch_array($query12)) { ?> <li><a href="menu.php#<?php print($row12["index_num"]); ?>"> <?php print($row12["name"]); ?></a></li> <?php } ?> </ul> </div> </div> Хочу сделать так, чтобы у каждой колонки было что-то вроде заголовка. Решение сделать так: ... <div class="col col1"> <div>Заголовок 1</div> <ul> ... или так ... <div class="col col1"> <ul> <li>Заголовок 1</li> ... ничего не дает (заголовок не выводится). Таким образом нужно, чтобы между верхушкой списка и первым его пунктом отображался заголовок колонки (списка). Не понимаю, почему ни один из вариантов выше не работает. Очевидно, век живи — век учись. Прошу помощи с решением задачи. Надеюсь, все доходчиво объяснил. |
Цитата:
|
Цитата:
$query11 = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 0, 8") or die("Не могу получить первый список!"); // ВЫБИРАЕМ ПЕРВЫЙ РЯД // $query12 = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 8, 8") or die("Не могу получить второй список!"); // ВЫБИРАЕМ ВТОРОЙ РЯД // Но это издержки моего уровня знакомства с mysql и немного — специфика логики «меню». Также это не имеет отношения к задаче с заголовками. По крайней мере хочется в это верить. Тут есть что сказать? Может я не понимаю какую-то «базовую логику» списков в html? P.S.: Однако совет по mysql я тоже мимо ушей не пропустил бы;) |
Получайте так, одним запросом
$q = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 0, 16") or die("Не могу получить первый список!"); Все дальнейшее можно разложить как угодно. И вообще, перебирайтесь на PDO. Что за поле содержит заголовок или это произвольный текст не получаемый из базы? |
Цитата:
2) Что такое PDO? Что-то типа контекста БД для PHP? Типа «code first»? 3) Да, заголовок — просто произвольный текст, прописывается ручками в html ровно 1 раз над каждым рядом списка. |
Цитата:
Тогда получаем запросом готовый набор делим его на два массива и выводим: array_chunk ($db->('SLECT .... ')->fethAll(PDO::FETCH_ASSOC)) Если заголовок произвольный текст, то разбить вывод 16 записей на два списка, это итерацию цикла делить по модулю 8, и если возвращает 0, то выводим заголовок, если текст заголовков разный, значит и для них указываем свой счетчик, число от 0 до N увеличивающееся при делении на модулю 8 и нулевому значению деления, и по нему как по индексу получаем из массива заголовок. |
Цитата:
Дело в том, что цикл не вызывает проблем, ровно как и sql-запрос (он вызывает вопросы только эстетические, разобранные нами). Проблема в том, что попытки добавить произвольный заголовок в html не дают результата, никакого. Похоже придется решить задачу добавлением фонового изображения и пэддингом сверху. *noobmode* |
Цитата:
Например, пусть заголовки разные и выводятся в начале списков, а запрос возвращает 16 строк (только не используйте mysql_fetch_array, вам ведь не нужны два набора): $head = ['Head 1', 'Head 2']; $n = -1; $rows = 8; while($r = mysql_fetch_object($query)) { if(!(++$n % $rows)) $ul .= ($n ? '</ul>' : null) . '<h3>' . $head[$n/$rows] . '</h3><ul>'; $ul .= '<li><a href="menu.php#' . $r->index_num . '">' . htmlspecialchars($r->name) . '</a></li>'; } echo $ul . '</ul>'; |
Часовой пояс GMT +3, время: 16:31. |