Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2017, 13:23   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Восклицание 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 '-3, 3' at line 1

всем привет!...

создавал навигацию на странице по записям, т.е. - 1 | 2 | 3 | 4 и т.д.

все идеально работает если в разделе есть записи, но если в разделе нет записей то выдает ошибку 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 '-3, 3' at line 1.

я так понимаю - это из-за навигации. как это можно исправить?

PHP код:
<?php
    
    $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 date WHERE cat_id='$cat'");
$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    
    
    
$result3 mysql_query("select img, id, title, city, substring(`text` from 1 for 100), date, vote from date where cat_id='$cat' order by date desc, id LIMIT $start$num",$db);
if (!
$result3)
{
echo 
"<p>Запрос из выборки базы данных не прошел. Напишите об этом администратору. <em><strong>Код ошибки:</strong></em></p>";
exit(
mysql_error());
}
if (
mysql_num_rows($result3) > 0){
$myrow5 mysql_fetch_array($result3);

do
{
printf ("<tr>
    <td width='30%%' rowspan='4'><div align='center'><img src='%s' width='100' height='100'></div></td>
    <td colspan='2' valign='top'><strong>Наименование:</strong> <a href='view_post.php?id=%s'>%s</a></td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><strong>Город:</strong> %s</td>
  </tr>
  <tr>
    <td colspan='2' valign='top'><div><strong>Краткое описание:</strong> %s</div></td>
  </tr>
  <tr>
    <td width='30%%' valign='top'><strong>Дата публикования:</strong> %s</td>
    <td width='30%%' valign='top'><strong>Рейтинг:</strong> %s</td>
  </tr>"
,$myrow5["img"],$myrow5["id"],$myrow5["title"],$myrow5["city"],$myrow5["substring(`text` from 1 for 100)"],$myrow5["date"],$myrow5["vote"]);
}
while (
$myrow5 mysql_fetch_array($result3));
    
// Проверяем нужны ли стрелки назад
if ($page != 1$pervpage '<a href=professional_services.php?cat='.$cat.'&page=1>Первая</a> | <a href=professional_services.php?cat='.$cat.'&page='. ($page 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total$nextpage ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 1) .'>Следующая</a> | <a href=professional_services.php?cat='.$cat.'&page=' .$total'>Последняя</a>';

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

if(
$page <= $total$page5right ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 5) .'>'. ($page 5) .'</a>';
if(
$page <= $total$page4right ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 4) .'>'. ($page 4) .'</a>';
if(
$page <= $total$page3right ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 3) .'>'. ($page 3) .'</a>';
if(
$page <= $total$page2right ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 2) .'>'. ($page 2) .'</a>';
if(
$page <= $total$page1right ' | <a href=professional_services.php?cat='.$cat.'&page='. ($page 1) .'>'. ($page 1) .'</a>';

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

if ($total 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo 
"<tr><td colspan='3'><div class=\"pstrnav\" align='center'>";
echo 
$pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo 
"</div></td></tr>";
}
}
else
{
echo 
"<div align='center'>Информация по запросу не может быть извлечина, в таблице нет записей!</div>";
//exit();
}

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

подскажите - что не будь.

заранее благодарю
kuzmich вне форума Ответить с цитированием
Старый 19.02.2017, 13:44   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

В запрос в переменной $start попадает значение -3.
Выясни, почему так происходит.
Как найти ошибку в своем коде?
Andkorol вне форума Ответить с цитированием
Старый 19.02.2017, 18:12   #3
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
В запрос в переменной $start попадает значение -3.
Выясни, почему так происходит.
Как найти ошибку в своем коде?
число 3 у меня хранится в базе, т.е. будет выводить по три записи.
а так идей нету?
kuzmich вне форума Ответить с цитированием
Старый 19.02.2017, 18:56   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от kuzmich Посмотреть сообщение
число 3 у меня хранится в базе, т.е. будет выводить по три записи.
Ну а в запрос-то попадает не 3, а -3.
Почему?
Выведи var_dump("$page * $num - $num"); перед самым запросом – и посмотри, что и как вычисляется в этом выражении.
Andkorol вне форума Ответить с цитированием
Старый 19.02.2017, 19:25   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

$page ноль видимо, да и проверка только на отрицательность есть. Вот и получается -3,3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.02.2017, 20:55   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
$page ноль видимо
Скорее всего, так и есть.
А нулевым значение становится из-за $total при отсутствии записей в разделе:
Цитата:
Сообщение от kuzmich Посмотреть сообщение
PHP код:
if($page $total$page $total
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Error in query: "delete from f_read_flag where message_id in () and user_id = ?", You have an error in your SQL syntax; nikytt PHP 4 25.06.2016 16:41
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/u853263025/public_html/controller/C_Login.php on line 3 rosqwlll PHP 3 17.10.2015 12:07
Ошибка You have an error in your SQL syntax monu91 PHP 4 01.06.2013 23:26
Database Server Error: You have an error in your SQL syntax helpkz БД в Delphi 10 29.03.2013 12:29
Ошибка Parse error: syntax error, unexpected T_STRING в PHP gunsoy PHP 1 20.07.2012 23:18