sarcodin
Эксперт
Дата регистрации:
30.09.2011 00:53:49
Сообщений: 128
Возможно это глупая идея, но все же расскажу.
У меня на сайте вся информация (уроки, статьи, тексты) будет выводится с помощью цикла do while и функции printf.
Предположим у меня будет 1000 статей и они все выведутся на одно странице, но мне так не надо, как сделать так, чтобы на странице выводилось всего лишь по десять статей, и так на каждой последующей станице, а странице я с помощью HTML сделаю. Вот примерно такой код будет работать?
//Это соединение с базой и выборка из таблицы.
$db = mysql_connect("localhost","user","12345"
$result = mysql_select_db("site",$db);
$myrow = mysql_query("SELECT text FROM articles"
//Сам код.
$articles = printf
("
<div class='title_articles'>
%s</div>
<div class='text_articles'>
%s</div>
",$myrow["title"],$myrow["text"]);
//А вот условие для того чтобы он максим выводил 10 статей на сайте.
if($articles <= 10){
$articles ++;
};
Скажите будет ли он работать.
А вот еще нюанс, этот скрипт если будет работать, то он будет выводить на каждой странице по десять одинаковый статей. Как сделать так чтобы на каждой новой странице скрипт начинал выводить с той статьи на которой закончил, на предыдущей странице.
Если моя идея не возможна то подскажите как лучше сделать. Заранее спасибо.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Ваша идея рабочая, но неоптимизированная. Почитайте эту статью: http://myrusakov.ru/sql-limit.html Вам же нужно выводить только те записи, которые нужны, а не вообще все. А чтобы на разных страницах были разные статьи, то надо использовать дополнительный параметр в GET. Допустим 1-я страница такой запрос: index.php, 2-я страница index.php?page=2, 3-я страница index.php?page=3 и так далее. Вы считываете значение page, и на основании этого задаёте смещение при выборке из базы.
sarcodin
Эксперт
Дата регистрации:
30.09.2011 00:53:49
Сообщений: 128
Немного не понял про лимит, вот вы указали первый код:
SELECT * FROM users WHERE id > 5 LIMIT 10
Что означает стрелочка и цифра пять.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Если id больше 5
sarcodin
Эксперт
Дата регистрации:
30.09.2011 00:53:49
Сообщений: 128
а можно вот так написать
SELECT * FROM users WHERE id = "$id" limit 10
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Можно, но какой смысл?
sarcodin
Эксперт
Дата регистрации:
30.09.2011 00:53:49
Сообщений: 128
А что дает id < 5, я вот этого не могу понять.
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Это для примера, можете вообще не писать ничего про id.
sarcodin
Эксперт
Дата регистрации:
30.09.2011 00:53:49
Сообщений: 128
Все я понял можно сделать на каждой странице вот такой запрос:
//Первая страница
SELECT * FROM users WHERE limit 10
//Вторая страница
SELECT * FROM users WHERE limit 10,20
//Третья страница
SELECT * FROM users WHERE limit 20,30
и.т.д.
Можно так?
Admin
Администратор
Дата регистрации:
27.05.2010 21:23:42
Сообщений: 3063
Нет, второе число - это количество, оно всегда постоянное, а вот первое - это смещение. Задавайте всегда только смещение, а уже затем через цикл, как Вы и хотели, выводите всегда первых 10 записей.