Forum Webscript.Ru

Программирование => PHP => Тема начата: Elfist от 26 Мая 2010, 22:23:05

Название: Постраничная навигация
Отправлено: Elfist от 26 Мая 2010, 22:23:05
Снова я:)

существует такая вот страница


if (isset($_GET[\'date\'])) /* Проеряем в глобальном массиве переменную date */
{
$date = $_GET[\'date\'];  /* Если найдена,то идём дальше */
}
else /* Если не найдето,то выводим сообщение и завершаем работу */
{
exit ("

Неправельно создан зопрос

");
}
$date_title = $date; /* Создаём переменную вида xxxx-xx для запихивания в заголовок */

$date_begin = $date; /* Создаём начальную дату,и приравниваем к $date вида xxxx-xx */
$date++; /* Увиличиваем переменную $date на еденицу */
$date_end = $date; /* Создаём конечную дату и приравниваем к новой $date */

$date_begin = $date_begin."-01"; /* Паркуем к переменной дате день т.е приводим к виду xxxx-xx-xx */
$date_end = $date_end."-01"; /* Аналогично */

$resultik = mysql_query ("SELECT text FROM settings WHERE page=\'index\'",$db);
$myrowik = mysql_fetch_array ($resultik);
?>




<?php echo $disc[\'title\']; echo " - Архив новостей за $date_title"; ?>





 
 
 
   
 



   
     
       
       
       
         
     
   




//постраничная навигация
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET[\'page\'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE date>\'$date_begin\' AND date<\'$date_end\'");
$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






$result = mysql_query ("SELECT id,title,description,date,author,view,rating,q_vote FROM data WHERE date>\'$date_begin\' AND date<\'$date_end\' ORDER BY id DESC LIMIT $start, $num",$db);
if (!$result)
{
echo "

Запрос не может быть выполнен.Пожалуйста сообщите об этом администратору.
Код ошибки:

";
exit (mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array ($result);


do
{
$r = $myrow[\'rating\']/$myrow[\'q_vote\'];
$r = intval($r);
printf ("
         
         
         

         
         

%s

%s

Дата добавления: %s | Автор: %s | Просмотров: %s | Рейтинг: | Подробнее

",$myrow ["title"],$myrow ["description"],$myrow ["date"],$myrow ["author"],$myrow["view"],$r, $myrow ["id"] );
 
}
while ($myrow = mysql_fetch_array ($result));

//Здесь выводим страницы
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = \'Первая | Предыдущая | \';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = \' | Следующая | Последняя\';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = \' \'. ($page - 5) .\' | \';
if($page - 4 > 0) $page4left = \' \'. ($page - 4) .\' | \';
if($page - 3 > 0) $page3left = \' \'. ($page - 3) .\' | \';
if($page - 2 > 0) $page2left = \' \'. ($page - 2) .\' | \';
if($page - 1 > 0) $page1left = \'\'. ($page - 1) .\' | \';

if($page + 5 <= $total) $page5right = \' | \'. ($page + 5) .\'\';
if($page + 4 <= $total) $page4right = \' | \'. ($page + 4) .\'\';
if($page + 3 <= $total) $page3right = \' | \'. ($page + 3) .\'\';
if($page + 2 <= $total) $page2right = \' | \'. ($page + 2) .\'\';
if($page + 1 <= $total) $page1right = \' | \'. ($page + 1) .\'\';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.\'\'.$page.\'\'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;

}

}
else
{
echo "

Информация по запросу не может быть извлечена,в таблице нет запесей

";
exit ();
}
?>
 
 
         






Проблема в навигации.
При заходе на страницу выводиться заданное колличество материала,но вот если нажать на страницу например-2 то получается вот что

Запрос не может быть выполнен.Пожалуйста сообщите об этом администратору.
Код ошибки:
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 \'-10, 10\' at line 1

но я не вижу тут никакой винтаксической ошибки.
Пожскажите что делать.
Название: Постраничная навигация
Отправлено: Elfist от 05 Июня 2010, 16:27:19
Закройте тему!проблема решена