Вход

View Full Version : 1 Sql запрос для вывода данных листом и циклом


Alexander-V-Sh
03.08.2006, 17:31
Имеется запрос в базу для вывода статей:
$result = $db->sql_query("SELECT * FROM ляля WHERE topic='$topic' ORDER BY $orderby limit $offset, $storynum");

мне нужно перед циклом:
while ($row = $db->sql_fetchrow($result)) {
узнать значение 2х данных, а именно мета (чтобы вставить в metakey) и название топика (чтобы вставить в титл на странице и в блок)
Эти данные должны вставляються перед хедером и в цикле быть не могут.

Но если я вывожу данные после запроса например так:
$row = $db->sql_fetchrow($result);
$metakey = filter($row['topicname'], "nohtml");
$topictext = filter($row['topictext'], "nohtml");
Или list(........$metakey, $topictext)= $db->sql_fetchrow($result);

То в цикле не хватает одного поля, которое забрал лист. Т.е. если всего 5 записей, 1 запись идет на лист, а 4 на цикл. А нужно в цикле использовать все.

Можно ли это сделать 1 запросом? Не хочется просто делать лишний запрос, ради того чтобы вставить метакей и титл.

Soniks
04.08.2006, 13:45
Alexander-V-Sh в мета тег нужно только первый запрос вывести или все??

можно сделать сл-им образом прогнать циклом всю выборку, но не выводить ее на экран, а загнать в массив какой-нибудь, затем произвести выборку от туда сколько нужно раз.

Alexander-V-Sh
04.08.2006, 14:19
Soniks
в мета тег нужно только первый запрос вывести или все??
Запрос идет в топик, категории и сами статьи. Циклом вынимается все для отображения 10 стетей.
Если отображаются все статьи, то мета и титл - статика (Статьи)
А если topic !=0 (т.е мы просматриваем все статьи из какого то топика), то в мету идет topicname (бесполезное поле, я его под мету приспособил), а в титл топика идет topictext (Статьи - $topictext)
А уже потом включить выводить хедер и 10 статей циклом.

Массивы для меня кошмарный сон :) Вообще их не понимаю пока.
Поэтому такой еще вопрос, хотя он относится больше к оптимизации.
Запросы такого вида
SELECT topicname, topictext FROM ".$prefix."_topics WHERE topicid='$new_topic'
поидеи базу ниграма не должны нагружать. Выбрать 2 значения из таблицы, в которой всего 4 записи.

lufaleks
06.08.2006, 22:22
SQL. Полное руководство (http://openlib.org.ua/index.php?more=1&book_id=110)