не могу создать заголовок для колонки списка
Есть список в 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, время: 00:10. |