Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка одного запроса по-разному
 
 автор: JIEXA   (10.02.2005 в 23:12)   письмо автору
 
 

Вообщем я не люблю когда долго генерируется страница. (а кто любит?)
Я делаю запрос в бд:
<?php
$row
=mysql_query("SELECT * FROM news");
?>

А теперь вопрос: как сделать, чтобы работать с этим запросом?
К примеру я хочу сначала сделать так с этим запросом:
<?php
order by date desc limit 10
?>

тут код
А потом:
<?php
mysql_fetch_row
($row);
?>

тут код
Потом сделать так:
<?php
LIMIT 10
20
?>


Тоесть с одним запросом к бд воротить что угодно. Я знаю что так можно (помой с помощью static), но точно не помню.
Подскажите как это сделать и привидите пожалуйста примеры кода.
С уважением, Арсеньев Алексей.

   
 
 автор: cheops   (10.02.2005 в 23:35)   письмо автору
 
   для: JIEXA   (10.02.2005 в 23:12)
 

Хм... т.е. имеется ввиду проделать операции
order by date desc limit 10

LIMIT 10, 20

средствами PHP из запроса
SELECT * FROM news

?

   
 
 автор: glsv (Дизайнер)   (10.02.2005 в 23:36)   письмо автору
 
   для: JIEXA   (10.02.2005 в 23:12)
 

Все же, возможно, будет более эффективно сделать несколько запросов, чем делать обработку на PHP.

Если у вас уже есть результат запроса всех новостей, то вывести с 10 по 20 можно с помощью функции mysql_data_seek().
mysql_data_seek -- Перемещает внутренний указатель в результате запроса


bool mysql_data_seek ( resource result_identifier, int row_number)

Возвращает TRUE в случае успешного завершения, FALSE в случае возникновения ошибки. 
mysql_data_seek() перемещает внутренний указатель в результате запроса к ряду с указанным номером. Следующий вызов mysql_fetch_row() вернёт именно его. 
Параметр Row_number должен быть значением от 0 до mysql_num_rows - 1. 


Таким образом, вы можете сразу переместить указатель на 10 запись и отсчитать 10 рядов.

   
 
 автор: JIEXA   (11.02.2005 в 00:00)   письмо автору
 
   для: glsv (Дизайнер)   (10.02.2005 в 23:36)
 

Спасибо, но не могли бы рассказть про static

   
 
 автор: cheops   (11.02.2005 в 01:02)   письмо автору
 
   для: JIEXA   (11.02.2005 в 00:00)
 

Это не совсем static, но смысл тот же - в SQL-запросах можно определить переменные, которые далее можно использовать в других запросах. Имя переменной предваряется символом @ (аналог $ в PHP)
SELECT @fio := name FROM tbl WHERE id = 45

В следующем запросе можно использовать данную переменную и она будет иметь значение, которое ей будет присвоено в предыдущем запросе
SELECT * FROM tbl1 WHERE name = @fio

Обобщением данного подхода является создание временных таблиц - в этом случае можно передавать от запроса к запросу не отдельные значения, а целые выборки - подробности по ссылке.

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=278

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования