Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.11.2015, 14:37
Интересующийся
Отправить личное сообщение для deniskutovskiy Посмотреть профиль Найти все сообщения от deniskutovskiy
 
Регистрация: 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>
...

ничего не дает (заголовок не выводится).
Таким образом нужно, чтобы между верхушкой списка и первым его пунктом отображался заголовок колонки (списка). Не понимаю, почему ни один из вариантов выше не работает. Очевидно, век живи — век учись.
Прошу помощи с решением задачи. Надеюсь, все доходчиво объяснил.
Ответить с цитированием
  #2 (permalink)  
Старый 02.11.2015, 15:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от deniskutovskiy
ОТДЕЛЬНО ДЛЯ КАЖДОГО ЗАПРОСА, ЧТОБЫ СФОРМИРОВАТЬ 2 РЯДА
То есть ради вывода списков вы делаете два отдельных запроса к одной и той же таблице?
Ответить с цитированием
  #3 (permalink)  
Старый 02.11.2015, 16:46
Интересующийся
Отправить личное сообщение для deniskutovskiy Посмотреть профиль Найти все сообщения от deniskutovskiy
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 02.11.2015, 17:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Получайте так, одним запросом

$q = mysql_query("SELECT * FROM Dishes ORDER BY index_num LIMIT 0, 16") or die("Не могу получить первый список!");


Все дальнейшее можно разложить как угодно. И вообще, перебирайтесь на PDO.

Что за поле содержит заголовок или это произвольный текст не получаемый из базы?
Ответить с цитированием
  #5 (permalink)  
Старый 02.11.2015, 17:48
Интересующийся
Отправить личное сообщение для deniskutovskiy Посмотреть профиль Найти все сообщения от deniskutovskiy
 
Регистрация: 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.
Ответить с цитированием
  #6 (permalink)  
Старый 02.11.2015, 18:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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 и нулевому значению деления, и по нему как по индексу получаем из массива заголовок.
Ответить с цитированием
  #7 (permalink)  
Старый 02.11.2015, 20:53
Интересующийся
Отправить личное сообщение для deniskutovskiy Посмотреть профиль Найти все сообщения от deniskutovskiy
 
Регистрация: 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*
Ответить с цитированием
  #8 (permalink)  
Старый 02.11.2015, 21:56
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать окно на AJAX для IRC-чата. Ruskat AJAX и COMET 3 20.01.2011 10:27
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31
не могу совладать со звуками для Onmouseover и Onmouseclick THER1ON Серверные языки и технологии 7 27.05.2009 21:03
Требутся создать сайт для художника, в качестве онлайн-портфолио. kir12 Элементы интерфейса 1 14.05.2008 19:42