Помогите пожалуйста разобраться! При запросе $result2 = mysql_query ("SELECT * FROM comments ORDER BY id ORDER BY id LIMIT $start, $num",$db) выскакивает ошибка You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY id LIMIT 0, 5' at line 1 Скрипт постраничного вывода вот: $result77 = mysql_query("SELECT str FROM nav_gb", $db); $myrow77 = mysql_fetch_array($result77); $num = $myrow77["str"]; // Извлекаем из URL текущую страницу @$page = $_GET['page']; // Определяем общее число сообщений в базе данных $result00 = mysql_query("SELECT COUNT(*) FROM comments"); $temp = mysql_fetch_array($result00); $posts = $temp[0]; // Находим общее число страниц $total = (($posts - 1) / $num) + 1; $total = intval($total); // Определяем начало сообщений для текущей страницы $page = intval($page); // Если значение $page меньше единицы или отрицательно // переходим на первую страницу // А если слишком большое, то переходим на последнюю if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; // Вычисляем начиная с какого номера // следует выводить сообщения $start = $page * $num - $num; // Выбираем $num сообщений начиная с номера $start
Ага) да, только что заметила, но суть не меняется) . Вот полностью скрипт <?php $result77 = mysql_query("SELECT str FROM nav_news", $db); $myrow77 = mysql_fetch_array($result77); $num = $myrow77["str"]; // Извлекаем из URL текущую страницу @$page = $_GET['page']; // Определяем общее число сообщений в базе данных $result00 = mysql_query("SELECT COUNT(*) FROM news"); $temp = mysql_fetch_array($result00); $posts = $temp[0]; // Находим общее число страниц $total = (($posts - 1) / $num) + 1; $total = intval($total); // Определяем начало сообщений для текущей страницы $page = intval($page); // Если значение $page меньше единицы или отрицательно // переходим на первую страницу // А если слишком большое, то переходим на последнюю if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; // Вычисляем начиная с какого номера // следует выводить сообщения $start = $page * $num - $num; // Выбираем $num сообщений начиная с номера $start function print_news($news) { $id=-1; if (isset($_REQUEST["id"])&&$_REQUEST["id"]<>"") { /* Проверяем, установлен ли ID новости в запросе */ $id=$_REQUEST["id"]; /* Если установлен, присваиваем. Внимание! Опасное мест. Здесь нужно сделать проверку входных значений!!!!!! */ } foreach ($news as $i=>$new) { if ($i<>$id) { ?> <div class="date"><a name="n<?php print $i;?>"><?php print $new["data"];?></a></div> <div id="title_na"><a href="news.php?id=<?php print $i;?>#n<?php print $i;?>"><?php print $new["title"];?></a></div> <div class="textNews"><?php print $new["anounce"];?></div> <?php } else { ?> <div class="date"><a name="n<?php print $i;?>"><?php print $news[$id]["data"];?></a></div> <div id="title_n"><?php print $news[$id]["title"];?></div> <div class="textNews"><?php print $news[$id]["text"];?></div> <?php } } } /* Получаем новости из базы данных */ function fetch_news($db) { $DB_news="news"; $query="select id, title, anounce, text, data from ".$DB_news." ORDER BY id desc LIMIT $start, $num"; /* формируем SQL-запрос */ $res=mysql_query($query,$db); if (!$res) { print "Query error \"".$query."\" - ".mysql_error($db); mysql_close($db); die(); } $news=array(); /* Помещаем выводимые новости в двойной ассоциативный массив */ while ($new=mysql_fetch_array($res)) { $news[$new["id"]]=array("title"=>$new["title"], "anounce"=>$new["anounce"], "text"=>$new["text"], "data"=>$new["data"]); } return $news; } $news=array(); /* Инициализация массива */ $news=fetch_news($db); /* Получение новостей из базы */ ?> <?php print_news($news); /* Собственно, вывод новостей */ ?> Ошибка: Query error "select id, title, anounce, text, data from news ORDER BY id desc LIMIT , " - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
1. Код (Text): echo $query; 2. Код (Text): echo mysql_error(); И вывод пости сюда. После уже можно будет что-то сказать....
LIMIT $start, $num Лимит указан, а можно пожалуйста поподробнее, куда вывод постить?) просто я с php пока еще на ВЫ, вторую неделю изучаю. Заранее спасибо. Я так понимаю, что дело тут в алгоритме вывода новостей, без постраничного вывода все прекрасно работает, а кот когда начинаю добавлять скрипт постраничного разбиения, почему то косяк возникает. ЗЫ: Этот скрипт прекрасно работает на другой странице (Гостевая Книга), где просто идет вывод всех постов...
И еще такой вопрос. В гостевой книге. Как сделать, чтобы при добавлении комментария, перенаправлялось на последнюю страницу? URL=gb.php?page=.$total почему то не работает(((((
И желательно еще в конец страницы, а не в начало) <?php session_start(); include ("db.php"); if (isset($_POST['author'])) { $author = $_POST['author']; } if (isset($_POST['text'])) { $text = $_POST['text']; } if( isset($_POST['submit'])) { if (isset($author)) {trim ($author);} else {$author="";} if (isset($text)) {trim ($text);} else {$text="";} if (empty($author) or empty($text)) {exit ("<p class='post_text'>Заполнены не все поля. Вернитесь назад.<br> <input name='back' type='button' value='Назад' onclick = 'javascript:self.back();'></p>");} $author=stripslashes($author); $text=stripslashes($text); $author=stripslashes($author); $text=stripslashes($text); if ( $_SESSION['security_code'] == $_POST['security_code'] && !empty($_SESSION['security_code'] ) ) { $date = date ("Y-m-d"); $result = mysql_query ("INSERT INTO comments (author, text, date) VALUES ('$author', '$text', '$date')",$db); $adress = "bclazertag@gmail.com"; $subject = "Новый комментарий в гостевой"; $message = "Сообщение от:".$author."\n Текст сообщения:".$text.""; mail($adress,$subject,$message, "Content-type:text/plain; Charset:UTF-8 \r\n;"); echo "<html><head> <meta http-equiv='Refresh' content='0; URL=gb.php?page=.$total> </head></html>"; exit(); } else { {exit ("<p class='post_text'>Вы ввели неверный код. Вернитесь назад.<br> <input name='back' type='button' value='Назад' onclick = 'javascript:self.back();'></p>");} } } else { ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Гостевая книга клуба Battle Call</title> <link href="css/style.css" type="text/css" rel="stylesheet"> </head> <body> <div id="wrapper"> <div id="header"></div> <div id="nav_g"> <ul> <li><a href="index.php"><span>Главная</span></a></li> <li><a href="arsenal.php"><span>Арсенал</span></a></li> <li><a href="places.php"><span>Полигоны</span></a></li> <li><a href="script.php"><span>Сценарии</span></a></li> <li><a href="price.php"><span>Услуги и цены</span></a></li> </ul> </div> <div id="left"> <div id="nav_v"> <ul> <li><a href="foto.php"><span>Фото</span></a></li> <li><a href="video.php"><span>Видео</span></a></li> <li><a href="gb.php"><span>Гостевая книга</span></a></li> <li><a href="contact.php"><span>Контакты</span></a></li> </ul> </div> <?php include ("blocks/news_b.php");?> <div id="pogoda"><a href="http://clck.yandex.ru/redir/dtype=stred/pid=7/cid=1228/*http://pogoda.yandex.ru/obninsk"><img src="http://info.weather.yandex.net/obninsk/2.png" border="0" alt="Яндекс.Погода"/><img width="1" height="1" src="http://clck.yandex.ru/click/dtype=stred/pid=7/cid=1227/*http://img.yandex.ru/i/pix.gif" alt="" border="0"/></a></div> </div> <div id="content"> <div id="wrapper_gb"> <h3>Добро пожаловать в гостевую книгу клуба Battle Call</h3> <p>Здесь Вы можете оставлять свои отзывы о клубе, делиться впечатлениями об играх, обсуждать вопросы, связанные с лазертагом, а также оставлять свои пожелания и предложения.</p> <?php echo "<p class='post_title'>Сообщения:</p>"; $result77 = mysql_query("SELECT str FROM nav_gb", $db); $myrow77 = mysql_fetch_array($result77); $num = $myrow77["str"]; // Извлекаем из URL текущую страницу @$page = $_GET['page']; // Определяем общее число сообщений в базе данных $result00 = mysql_query("SELECT COUNT(*) FROM comments"); $temp = mysql_fetch_array($result00); $posts = $temp[0]; // Находим общее число страниц $total = (($posts - 1) / $num) + 1; $total = intval($total); // Определяем начало сообщений для текущей страницы $page = intval($page); // Если значение $page меньше единицы или отрицательно // переходим на первую страницу // А если слишком большое, то переходим на последнюю if(empty($page) or $page < 0) $page = 1; if($page > $total) $page = $total; // Вычисляем начиная с какого номера // следует выводить сообщения $start = $page * $num - $num; // Выбираем $num сообщений начиная с номера $start $result2 = mysql_query ("SELECT * FROM comments ORDER BY id LIMIT $start, $num",$db) or die(mysql_error()); if (mysql_num_rows($result2) > 0) { $myrow2 = mysql_fetch_array($result2); do { printf ("<div class='border'><div class='post_user'>Сообщение добавил(а): <strong>%s</strong> <br> Дата: <strong>%s</strong> </div> <p class='post_text'>%s</p></div>", $myrow2["author"],$myrow2["date"],$myrow2["text"]); } while ($myrow2 = mysql_fetch_array($result2)); // Находим две ближайшие станицы с обоих краев, если они есть if($page - 5 > 0) $page5left = ' <a href=gb.php?&page='. ($page - 5) .'>'. ($page - 5) .'</a> | '; if($page - 4 > 0) $page4left = ' <a href=gb.php?&page='. ($page - 4) .'>'. ($page - 4) .'</a> | '; if($page - 3 > 0) $page3left = ' <a href=gb.php?&page='. ($page - 3) .'>'. ($page - 3) .'</a> | '; if($page - 2 > 0) $page2left = ' <a href=gb.php?&page='. ($page - 2) .'>'. ($page - 2) .'</a> | '; if($page - 1 > 0) $page1left = '<a href=gb.php?&page='. ($page - 1) .'>'. ($page - 1) .'</a> | '; if($page + 5 <= $total) $page5right = ' | <a href=gb.php?&page='. ($page + 5) .'>'. ($page + 5) .'</a>'; if($page + 4 <= $total) $page4right = ' | <a href=gb.php?&page='. ($page + 4) .'>'. ($page + 4) .'</a>'; if($page + 3 <= $total) $page3right = ' | <a href=gb.php?&page='. ($page + 3) .'>'. ($page + 3) .'</a>'; if($page + 2 <= $total) $page2right = ' | <a href=gb.php?&page='. ($page + 2) .'>'. ($page + 2) .'</a>'; if($page + 1 <= $total) $page1right = ' | <a href=gb.php?&page='. ($page + 1) .'>'. ($page + 1) .'</a>'; // Вывод меню если страниц больше одной if ($total > 1) { Error_Reporting(E_ALL & ~E_NOTICE); echo "<div class=\"pstrnav\">"; echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage; echo "</div>"; } } ?> <p class='post_title'>Добавить Ваше сообщение:</p> <form action="gb.php" method="post" name="form_com"> <p class='post_text'><label>Ваше имя: </label><input name="author" type="text" size="41" maxlength="30"></p> <p class='post_text'><label>Текст сообщения: <br><textarea name="text" cols="41" rows="4"></textarea></label></p> <p class='post_text'><img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /></p> <p class='post_text'><label for="security_code">Введите код с картинки: </label><input id="security_code" name="security_code" type="text" /></p> <p class='post_text'><input name="submit" type="submit" value="Добавить"></p> </form> </div> </div> <div class="clear"></div> <div id="footer">копирайт</div> </div> </body> </html> <?php } ?>