|
Флудильня Разговоры на любые темы. Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак. |
|
Опции темы | Поиск в этой теме | Опции просмотра |
16.03.2010, 22:39 | #1 |
Гость
Сообщений: n/a
|
Ограничение в запросе к sql
Задача такова:
Мне нужно сделать деление страницы с новостями на страницы (1, 2, 3, и т.д.). Новости выводятся из таблицы sql. Новости с hidden=1 не выводятся. То есть мне нужно сделать так, что бы скажем на первой странице показывало первый десяток новостей с hidden=0, на второй странице показывало второй десяток с hidden=0. Так как это сделать? |
16.03.2010, 23:29 | #2 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
Код:
SELECT ..... LIMIT 10*(n-1),10; вот пример: Код:
# @n - номер текущей страницы SET @limit = 10; SET @page_seek = @limit*(@n-1); SELECT * FROM `news_tbl` WHERE `hidden`='0' ORDER BY `id` ASC LIMIT @page_seek,@limit; Последний раз редактировалось SergiK_KilleR; 16.03.2010 в 23:43. |
17.03.2010, 06:39 | #3 |
Гость
Сообщений: n/a
|
Ошибка выходит.. Ему не нравится fetch_array..
"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in x:\home\**.*.*.***\www\****\pages\main.php on line 22" Код:
<?php $con = mysql_connect("$host","$user","$pass"); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("$db1", $con); //$result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT 5,2"); $result = mysql_query(" # @n - номер текущей страницы SET @limit = 10; SET @page_seek = @limit*(@n-1); SELECT * FROM `news` WHERE `hiden`='0' ORDER BY `newsid` ASC LIMIT @page_seek,@limit;"); while($row = mysql_fetch_array($result)) { echo "<br /><div class=\"date\"><center> "; echo $row['date']; echo " </center></div><div class=\"title\"><a href=\"index.php?p=news&k=".$row['newsid']."\"> "; echo $row['title']; echo " </a></div><br /><div class=\"spacer\"> </div><div style=\"padding: 5px 0;\">автор: "; echo $row['autor']; echo " </div><div class=\"content\">"; echo $row['short']; echo "</div><div class=\"spacer-bottom\"></div><br><br><br><br>"; } mysql_close($con); ?> Помоги пожалуйста ^^ |
17.03.2010, 06:48 | #4 |
Гость
Сообщений: n/a
|
В общем я сделал код..
Код:
$result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT 0,3"); Страница на сайте будет определятся по переменной Код:
$n=$_GET['n']; P.S. В запросе обязательно должно быть DESC LIMIT, а не ASC LIMIT.. Мне же нужно выводить не самую старую новость первой, а самую новую новость. |
17.03.2010, 07:24 | #5 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
Код:
<?php $n=(int) $_GET['n']; $limit = 10; $page_seek = $limit*($n-1); $result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT $page_seek,$limit"); ?> Последний раз редактировалось SergiK_KilleR; 17.03.2010 в 07:37. |
17.03.2010, 13:02 | #6 |
Гость
Сообщений: n/a
|
Теперь ошибка такова:
Код:
Notice: Undefined index: n in x:\home\10.0.1.199\www\rock\pages\main.php on line 9 Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in x:\home\10.0.1.199\www\rock\pages\main.php on line 27 Код:
$n=(int) $_GET['n']; if (isset($n)) { $limit = 10; $page_seek = $limit*($n-1); } else { $pageseek=1; $limit=10; } $result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT $page_seek,$limit"); |
17.03.2010, 14:18 | #7 | |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
Цитата:
замените Код:
$n=(int) $_GET['n']; Код:
$n=(isset($_GET['n'])) ? (int) $_GET['n'] : 1; Последний раз редактировалось SergiK_KilleR; 17.03.2010 в 16:27. |
|
17.03.2010, 16:01 | #8 |
Гость
Сообщений: n/a
|
Ну ошибка с фетчем не решилась..
Код:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in x:\home\10.0.1.199\www\rock\pages\main.php on line 27 Код:
$n=(isset($_GET['n'])) ? (int) $_GET['n'] : 0; $limit = 10; $page_seek = $limit*($n-1); $result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT $page_seek,$limit"); while($row = mysql_fetch_array($result)) { echo "<br /><div class=\"date\"><center> "; echo $row['date']; echo " </center></div><div class=\"title\"><a href=\"index.php?p=news&k=".$row['newsid']."\"> "; echo $row['title']; echo " </a></div><br /><div class=\"spacer\"> </div><div style=\"padding: 5px 0;\">автор: "; echo $row['autor']; echo " </div><div class=\"content\">"; echo $row['short']; echo "</div><div class=\"spacer-bottom\"></div><br><br><br><br>"; } |
17.03.2010, 16:07 | #9 |
Супер-модератор
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
|
Добавь выделенное красным
Код:
$n=(isset($_GET['n'])) ? (int) $_GET['n'] : 0; $limit = 10; $page_seek = $limit*($n-1); $result = mysql_query("SELECT * FROM news WHERE hiden=0 ORDER BY newsid DESC LIMIT $page_seek,$limit"); if(!$result) exit('SQL query failed!'); while($row = mysql_fetch_array($result)) { echo "<br /><div class=\"date\"><center> "; echo $row['date']; echo " </center></div><div class=\"title\"><a href=\"index.php?p=news&k=".$row['newsid']."\"> "; echo $row['title']; echo " </a></div><br /><div class=\"spacer\"> </div><div style=\"padding: 5px 0;\">автор: "; echo $row['autor']; echo " </div><div class=\"content\">"; echo $row['short']; echo "</div><div class=\"spacer-bottom\"></div><br><br><br><br>"; } |
17.03.2010, 16:20 | #10 |
Гость
Сообщений: n/a
|
Да, выдало ошибку с запросом.. Странно.. Чё не так?
|
17.03.2010, 16:25 | #11 |
Гость
Сообщений: n/a
|
Вот ещё кое что:
Только что вместе с ошибкой написал Код:
if(!$result) echo $page_seek."<br><br>"; echo $limit; exit('SQL query failed!'); Код:
$page_seek = -10 (так не должно быть) $limit = 10 (всё правильно) |
17.03.2010, 16:29 | #12 |
Гость
Сообщений: n/a
|
Ну так всё правильно..
Получается $n=0 И при выполнении уравнения $page_seek = $limit*($n-1); Получается $page_seek = 10*(0-1) = 10*(-1) = -10 |
17.03.2010, 16:35 | #13 |
Пользователь
Регистрация: 07.03.2010
Сообщений: 46
Сказал(а) спасибо: 15
Поблагодарили 53 раз(а) в 14 сообщениях
|
|
17.03.2010, 16:41 | #14 |
Гость
Сообщений: n/a
|
Код:
SQL query failed! |
17.03.2010, 17:31 | #15 |
Гость
Сообщений: n/a
|
А нет.. С page_seek всё в норме.. Простите меня, виноват. Но ошибка с sql запросом не решена. SQL query failed!
ADD: Всё работает! Просто нужно было убрать Код:
if(!$result) exit('SQL query failed!'); P.S. Мну ещё поиск и регистрацию делать.. Думаю на долго не прощаемся |
Метки |
sql |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Убрать ограничение на статы | Lemex | Корзина | 5 | 15.08.2010 12:48 |
Ограничение на использование игровой почты. | Greshnikk | Новичкам | 0 | 07.06.2010 14:27 |
[9979][patch] Ограничение для арены | Insider42 | Принятые патчи | 1 | 26.05.2010 23:37 |
Ограничение значений в БД | selector | Новичкам | 15 | 28.04.2010 20:50 |