Выбор диапазона данных в MySQL + PHP

Рейтинг: 1Ответов: 2Опубликовано: 31.03.2011

Здравствуйте. Я таким вот образом генерирую ссылки:

function links()
{
$qname = mysql_query("SELECT * FROM note");
$qnum = mysql_num_rows($qname);
for ($i = 1; $i < $qnum / 10 + 1; $i++)
{
    echo "<div class='links'>"."<a href='/guestbook/guestbook.php?id=".$i."'>".$i."</a>"."</div>";
}

}

При нажатии на ссылку "1" должны отобразиться первые 10 записей, "2" - 11-20 и тд. Такой вопрос:
как в запросе вида

mysql_query("SELECT * FROM note WHERE id LIKE ' ' ");
id - первичный ключ auto_increment

указать диапазон, который менялся бы в зависимости от передаваемого id?

Ответы

▲ 2Принят

Вроде так

SELECT * FROM `note` WHERE 'id'>10 LIMIT 1,10
▲ 2

Ну так вот про SQL-Injection посмотрите тут: внедрение SQL-кода.

Насколько я понимаю, вы мучаетесь с по страничкой. Вам для выбора диапазона также надо будет сделать запрос на полное количество элементов отвечающих запросу:

$q=mysql_query("SELECT что FROM где WHERE условия");
$numRows=mysql_num_rows($q);*

После чего будете делать уже непосредственно запрос для выбора элементов либо в цикле извлекать из уже ранее сделанного запроса (учтите, при малом количестве записей это еще куда ни шло, но потом будет ...)

Можно сделать так:

SELECT SQL_CALC_FOUND_ROWS, 

еще что-то FROM где WHERE условие LIMIT с записи, сколько записей.

Результат - необходимая выборка. Для по странички нужно знать общее количество записей (то есть кол. стр = общее кол. записей / кол. элементов на стр.)

Его найти очень легко выполнив тут же:

SELECT FOUND_ROWS() AS total

Совет: не изобретайте очередной велик! Поищите постраничный модуль! Там же будут примеры применения!