02.11.2015, 14:37
|
Интересующийся
|
|
Регистрация: 02.10.2015
Сообщений: 18
|
|
не могу создать заголовок для колонки списка
Есть список в 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>
...
ничего не дает (заголовок не выводится).
Таким образом нужно, чтобы между верхушкой списка и первым его пунктом отображался заголовок колонки (списка). Не понимаю, почему ни один из вариантов выше не работает. Очевидно, век живи — век учись.
Прошу помощи с решением задачи. Надеюсь, все доходчиво объяснил.
|
|
02.11.2015, 15:43
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от deniskutovskiy
|
ОТДЕЛЬНО ДЛЯ КАЖДОГО ЗАПРОСА, ЧТОБЫ СФОРМИРОВАТЬ 2 РЯДА
|
То есть ради вывода списков вы делаете два отдельных запроса к одной и той же таблице?
|
|
02.11.2015, 16:46
|
Интересующийся
|
|
Регистрация: 02.10.2015
Сообщений: 18
|
|
Сообщение от laimas
|
То есть ради вывода списков вы делаете два отдельных запроса к одной и той же таблице?
|
Да, у меня за вывод каждого ряда списка (список, как вы поняли, идет в 2 колонки) из одной таблицы БД отвечает отдельный запрос с LIMIT'ом, типа:
$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 я тоже мимо ушей не пропустил бы
Последний раз редактировалось deniskutovskiy, 02.11.2015 в 16:50.
|
|
02.11.2015, 17:27
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Получайте так, одним запросом
$q = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 0, 16") or die("Не могу получить первый список!");
Все дальнейшее можно разложить как угодно. И вообще, перебирайтесь на PDO.
Что за поле содержит заголовок или это произвольный текст не получаемый из базы?
|
|
02.11.2015, 17:48
|
Интересующийся
|
|
Регистрация: 02.10.2015
Сообщений: 18
|
|
Сообщение от laimas
|
Получайте так, одним запросом
$q = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 0, 16") or die("Не могу получить первый список!");
Все дальнейшее можно разложить как угодно. И вообще, перебирайтесь на PDO.
Что за поле содержит заголовок или это произвольный текст не получаемый из базы?
|
1) Как разложить этот запрос в html на 2 части? Представить результат селекта как массив и пустить так же 2 цикла но теперь каждый из них пилит половину массива?
2) Что такое PDO? Что-то типа контекста БД для PHP? Типа «code first»?
3) Да, заголовок — просто произвольный текст, прописывается ручками в html ровно 1 раз над каждым рядом списка.
Последний раз редактировалось deniskutovskiy, 02.11.2015 в 18:10.
|
|
02.11.2015, 18:51
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от deniskutovskiy
|
Что такое PDO? Что-то типа контекста БД для PHP?
|
Уровень абстракции - http://fi2.php.net/manual/ru/book.pdo.php
Тогда получаем запросом готовый набор делим его на два массива и выводим: array_chunk ($db->('SLECT .... ')->fethAll(PDO::FETCH_ASSOC))
Если заголовок произвольный текст, то разбить вывод 16 записей на два списка, это итерацию цикла делить по модулю 8, и если возвращает 0, то выводим заголовок, если текст заголовков разный, значит и для них указываем свой счетчик, число от 0 до N увеличивающееся при делении на модулю 8 и нулевому значению деления, и по нему как по индексу получаем из массива заголовок.
|
|
02.11.2015, 20:53
|
Интересующийся
|
|
Регистрация: 02.10.2015
Сообщений: 18
|
|
Сообщение от laimas
|
Уровень абстракции - http://fi2.php.net/manual/ru/book.pdo.php
Тогда получаем запросом готовый набор делим его на два массива и выводим: array_chunk ($db->('SLECT .... ')->fethAll(PDO::FETCH_ASSOC))
Если заголовок произвольный текст, то разбить вывод 16 записей на два списка, это итерацию цикла делить по модулю 8, и если возвращает 0, то выводим заголовок, если текст заголовков разный, значит и для них указываем свой счетчик, число от 0 до N увеличивающееся при делении на модулю 8 и нулевому значению деления, и по нему как по индексу получаем из массива заголовок.
|
В итоге, не могли бы вы резюмировать, где в дом-модели (вышепредставленного html-кода) будет находиться заголовок, чтобы его было видно над первым элементом списка? Оформление его как первого элемента этого списка не дает результатов (странно). Может что-то не так с css (понимаю, что без кода сложно сказать)?
Дело в том, что цикл не вызывает проблем, ровно как и sql-запрос (он вызывает вопросы только эстетические, разобранные нами). Проблема в том, что попытки добавить произвольный заголовок в html не дают результата, никакого.
Похоже придется решить задачу добавлением фонового изображения и пэддингом сверху. *noobmode*
|
|
02.11.2015, 21:56
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от deniskutovskiy
|
В итоге, не могли бы вы резюмировать, где в дом-модели
|
Это уж как вам надо - можно перед списками UL вставлять Hx, либо в первом элементе списка UL -> LI -> Hx... А то что заголовок не виден вообще, значит неверно вставляете. Дергать же дважды базу из-за своих проблем, это грех.
Например, пусть заголовки разные и выводятся в начале списков, а запрос возвращает 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>';
Последний раз редактировалось laimas, 03.11.2015 в 20:05.
|
|
|
|