Код: Код (Text): $select_posts = mysql_query("SELECT `date`, `title`, `description`, `id` FROM `posts` ORDER BY `id` DESC LIMIT $start, $finish"); while ($posts = mysql_fetch_array ($select_posts)) { } Ошибка: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource Ругается на: Код (Text): while ($posts = mysql_fetch_array ($select_posts)) Почему? Если заменить $start и $finish на, например, 1 и 2, то всё работает. Следовательно проблема в LIMIT $start, $finish. Но почему?
Re: mysql_fetch_array(): supplied argument is not a valid My ну, например, mysql_error() выведет вам в чем вы не правы.
Re: mysql_fetch_array(): supplied argument is not a valid My Проблему удалось решить, но возникла другая. Чтобы не создавать ещё одну тему опишу проблему здесь же. Код (постраничная навигация): Код (Text): function nav($x) { global $start, $finish, $select_posts; $select_all_posts = mysql_query("SELECT * FROM `posts`"); $all_posts = mysql_num_rows($select_all_posts); $last_page = $all_posts/$x; $last_page = ceil($last_page); if (!isset($_GET["page"]) or $_GET["page"] < 1 or $_GET["page"] > $last_page) { $_GET["page"] = 1; } $page = $_GET["page"]; $start = $page*$x-$x+1; $finish = $page*$x; } На данный момент у меня 6 записей. На одну страницу выводятся 4 записи. То есть на первой странице $start = 1, а $finish = 4. А на второй - $start = 5, а $finish = 8. Но записей ведь только 6. Как быть в таком случае?
Бред выходит какой-то. навигация: Код (Text): function nav($x) { global $start, $finish; $select_all_posts = mysql_query("SELECT * FROM `posts`"); $all_posts = mysql_num_rows($select_all_posts); $last_page = $all_posts/$x; $last_page = ceil($last_page); if (!isset($_GET["page"]) or $_GET["page"] < 1 or $_GET["page"] > $last_page) { $_GET["page"] = 1; } $page = $_GET["page"]; $start = $page*$x-$x+1; $finish = $page*$x; } Сама страница: Код (Text): nav(2); $select_posts = mysql_query("SELECT `date`, `title`, `description`, `id` FROM `posts` ORDER BY `id` DESC LIMIT $start, $finish"); while ($posts = mysql_fetch_array ($select_posts)) { echo '<div class="date">'.$posts["date"].'</div> <div class="title">'.$posts["title"].'</div> <div class="clear"></div> <div class="description">'.$posts["description"].'</div> <div class="read"><a href = "page.php?id='.$posts["id"].'">Читать</a></div>'; } Таблица: На index.php?page=1 выводит записи с id 5 и 4. На index.php?page=2 - с id 3, 2, 1 (три записи!!!), а на index.php?page=3 с id 1. В чём проблема? Я уже голову сломал.
не понял, какой? Я вроде весь код выложил. Кстати, если вывести на 2й странице переменные $start и $finish, то выводит 3 и 4. Но при этом выводит три записи вместо двух.
В MySQL в LIMIT передаётся не с какой записи начать и какой закончить, а с какой записи начать и сколько нужно. Т.е. страница 1: LIMIT 0, 4 страница 2: LIMIT 4, 4 ... страница N: LIMIT (N - 1) * 4, 4