X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Ошибка в LIMIT, выдает все...
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 14:31; Ответить: OlegTitov
Сообщение #1


Добрый день! Помогите найти ошибку. У меня форма поиска по базе и по идее должно выдавать по 5 записей на 1 странице. Но показывает все записи. Показывает, что есть уже 2 страницы. А когда нажимаю на указатель 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 'LIMIT 0, 5' at line 1
Я английский хорошо-то знаю, программирование не очень. Я не пойму почему говорит что лимит на 1 строке...
Вот мой код, помогите:
[php]<?php
error_reporting(E_ALL);
include "./config.php";
include "./function.php";
include "./array.php";
if(empty($_GET["page"]))
{
$_SESSION["page"] = $_SERVER["QUERY_STRING"];
}
mysql_query("SET names cp1251");

$ThisSQL = "";
if(!empty($_GET["city"]) && ThisVal($_GET["city"]) != "")
{
$ThisSQL .= "`city` = '".ThisVal($_GET["city"])."'";
$ThisAdded = 1;
}
if(!empty($_GET["sex"]) && $_GET["sex"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`sex` = '".ThisVal($_GET["sex"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `sex` = '".ThisVal($_GET["sex"])."'";
}
if(!empty($_GET["diploma"]) && $_GET["diploma"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`dip` = '".ThisVal($_GET["diploma"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `dip` = '".ThisVal($_GET["diploma"])."'";
}
if(!empty($_GET["lang"]) && $_GET["lang"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`langs` = '".ThisVal($_GET["lang"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `langs` = '".ThisVal($_GET["lang"])."'";
}
if(!empty($_GET["pages"]) && $_GET["pages"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`maxpages` = '".ThisVal($_GET["pages"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `maxpages` = '".ThisVal($_GET["pages"])."'";
}
if(!empty($_GET["price1"]) && $_GET["price1"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`cost1` = '".ThisVal($_GET["price1"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `cost1` = '".ThisVal($_GET["price1"])."'";
}
if(!empty($_GET["price2"]) && $_GET["price2"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`cost2` = '".ThisVal($_GET["price2"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `cost2` = '".ThisVal($_GET["price2"])."'";
}
if(!empty($_GET["availability"]) && $_GET["availability"] != "")
{
if(empty($ThisAdded))
{
$ThisSQL .= "`work` = '".ThisVal($_GET["availability"])."'";
$ThisAdded = 1;
}
else
$ThisSQL .= " AND `work` = '".ThisVal($_GET["availability"])."'";
}
if($ThisSQL != "")
$TotalPagesQ = mysql_query("SELECT count(`id`) FROM `translate` WHERE ".$ThisSQL) or die(mysql_result());
else
$TotalPagesQ = mysql_query("SELECT count(`id`) FROM `translate`") or die(mysql_result());
$TotalPages = ceil(mysql_result($TotalPagesQ, 0, 0) / 5);
if(!empty($_GET["page"]) && $TotalPages > 1)
{
if((int) $_GET["page"] >= 1 && (int) $_GET["page"] < $TotalPages)
{
$ThisPage = (int) $_GET["page"];
}
else
{
$ThisPage = 0;
}
$ThisLimit = $ThisPage * 5;
$ThisSQL .= "LIMIT $ThisLimit, 5";
}
if($ThisSQL != "")
$ThisResut = mysql_query("SELECT * FROM `translate` WHERE ".$ThisSQL) or die(mysql_error());
else
$ThisResut = mysql_query("SELECT * FROM `translate`") or die(mysql_error());
if(mysql_num_rows($ThisResut) > 0)
{

echo "<justify><table>";
while($ThisInfo = mysql_fetch_array($ThisResut))
{
if($ThisInfo["exp"] == 0)
$Exp = "не указано";
else
$Exp = $ThisInfo["exp"];
if($ThisInfo["soft"] != "")
$ThisSoft = $ThisInfo["soft"];
else
$ThisSoft = "не указано";
if($ThisInfo["resume"] != "")
$ThisAdd = $ThisInfo["resume"];
else
$ThisAdd = "не указано";

echo
'<tr>
<td colspan="2" align="left" bgcolor="#596796"><p class="white_text"><strong>'.$ThisInfo["name"].' '.$ThisInfo["surname"].'</strong></p>
<p class="white_text_notbold">город '.$Cites[$ThisInfo["city"]].' </p></td>
</tr>
<tr>
<td width="115" rowspan="5" align="center"><img src="'.$ThisInfo["image"].'"></td>
<td width="332"><div align="left"><strong>Год рождения:</strong> '.$ThisInfo["birth"].'</div></td>
</tr>
<tr>
<td><div align="left"><strong>Опыт работы переводчиком с:</strong> '.$Exp.'</div></td>
</tr>
<tr>
<td><div align="left"><strong>Диплом переводчика:</strong> '.$Diplo[$ThisInfo["dip"]].'</div></td>
</tr>
<tr>
<td><div align="left"><strong>Знание языка: </strong>'.$Langs[$ThisInfo["langs"]].'</div></td>
</tr>
<tr>
<td><div align="left"><strong>Владение программами:</strong> '.$ThisSoft.'</div></td>
</tr>
<tr>
<td colspan="2"><div align="left"><strong>Цена за 1 страницу перевода:</strong> '.$Cost[$ThisInfo["cost1"]].' грн.</div></td>
</tr>
<tr>
<td colspan="2"><div align="left"><strong>Скорость перевода (страниц в день):</strong> '.$TransPages[$ThisInfo["maxpages"]].'</div></td>
</tr>
<tr>
<td colspan="2"><div align="left"><strong>Цена за час устного перевода:</strong> '.$PayHour[$ThisInfo["cost2"]].' грн.</div></td>
</tr>
<tr>
<td colspan="2"><div align="left"><strong>Дополнительная информация:</strong> '.$ThisAdd.'</div></td>
<tr>
<td colspan="2"><div align="left"><strong>Телефон:</strong> '.$ThisInfo["phone"].'</div></td>
</tr>
<tr>
<td colspan="2"><div align="left"><strong>Email: </strong>'.$ThisInfo["email"].'</div></td>
</tr>';
}

echo "</center>";
if($TotalPages > 1)
{
for($I=1;$I<=$TotalPages;$I++)
{
echo '<a href=./poisk_resume.php?'.$_SESSION["page"].'&page='.$I.'>'.$I.'</a>&nbsp;';
}
}
echo "</table>";
}
else
{
echo "<center><strong>Поиск не дал результатов. Измените условия поиска</strong></center>";
}
?>[/php]Я думаю ошибка где-то здесь:
[php]if($ThisSQL != "")
$TotalPagesQ = mysql_query("SELECT count(`id`) FROM `translate` WHERE ".$ThisSQL) or die(mysql_result());
else
$TotalPagesQ = mysql_query("SELECT count(`id`) FROM `translate`") or die(mysql_result());
$TotalPages = ceil(mysql_result($TotalPagesQ, 0, 0) / 5);
if(!empty($_GET["page"]) && $TotalPages > 1)
{
if((int) $_GET["page"] >= 1 && (int) $_GET["page"] < $TotalPages)
{
$ThisPage = (int) $_GET["page"];
}
else
{
$ThisPage = 0;
}
$ThisLimit = $ThisPage * 5;
$ThisSQL .= "LIMIT $ThisLimit, 5";
}[/php]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 31.1.2010, 15:36; Ответить: alexdrob
Сообщение #2


ошибка скорей всего тут
$ThisResut = mysql_query("SELECT * FROM `translate` WHERE ".$ThisSQL)

после слова WHERE должно идти условие а у вас сразу идёт LIMIT

делайте так
$ThisResut = mysql_query("SELECT * FROM `translate` ".$ThisSQL)
или так
$ThisResut = mysql_query("SELECT * FROM `translate` WHERE 1 ".$ThisSQL)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 16:02; Ответить: OlegTitov
Сообщение #3


В двух вариантах одинаковый результат:
Выводит все еще все значения из базы, но есть прогресс: когдп нажимаю на указатель страницы, то показывает на второй странице 5 результатов, а на первой последние 2 результата. У меня в базе пока 7 значений. И пишет вот что:
Notice: Undefined variable: _SESSION in d:\hst\portalperevo-com-ua_00882ba0\http\poisk_resume.php on line 382

На 382 строке вот у нас что:[PHP]echo '<a href=./poisk_resume.php?'.$_SESSION["page"].'&page='.$I.'>'.$I.'</a>&nbsp;';[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 16:20; Ответить: OlegTitov
Сообщение #4


Может выводит сразу все результаты из-за того, что у меня и форма поиска и обработчик в одном файле??? Я имею ввиду, что сразу при переходе на эту страницу без нажатия кнопки поиск, мне показывает результаты. Хотя нет, выводило бы все равно только 5 результатов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 31.1.2010, 16:36; Ответить: alexdrob
Сообщение #5


здесь
[PHP] if(empty($_GET["page"]))
{
$_SESSION["page"] = $_SERVER["QUERY_STRING"];
}[/PHP]
вы заносите в переменную page всё что передаётся после ?
а после вопроса передаётся
$_SESSION["page"].'&page='.$I.

;_SESSION["page"] где присваевается значение? в коде я не вижу
и выполняется где нибуть инициализация сессии?
[PHP]session_start()[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 31.1.2010, 16:40; Ответить: alexdrob
Сообщение #6


ещё смотрите, используя проверку не isset а empty то в случае если вы передадите номер страницы 0 то будет считатся что переменная пуста.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 16:57; Ответить: OlegTitov
Сообщение #7


я так понял, тут маленьким изменением не отделаюсь:omg:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 21:05; Ответить: OlegTitov
Сообщение #8


Народ, помогите! Я вставил [PHP]session_start(); [/PHP]
Теперь пишет что не может отправить какие-то куки сессии, мол они уже отпралены хедерами из navigation.inc :blink: У меня там нет никаких хедеров!!!
Вот подробнее:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at d:\hst\portalperevo-com-ua_00882ba0\http\navigation.inc:10) in d:\hst\portalperevo-com-ua_00882ba0\http\poisk_resume.php on line 214

На 214 строке я указал старт сессии

Спасайте!!!:)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 31.1.2010, 21:39; Ответить: alexdrob
Сообщение #9


session_start должно выполнятся до любого вывода скриптом информации, т.е. желаетльно самой первой строкой
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
OlegTitov
OlegTitov
Topic Starter сообщение 31.1.2010, 22:16; Ответить: OlegTitov
Сообщение #10


Спасибо, alexdrob, мне, кстати, пришлось поменять назад код
[PHP]$ThisResut = mysql_query("SELECT * FROM `translate` WHERE ".$ThisSQL)[/PHP]
Потому-что с изменением скрипт не хотел искать по параметрам....
Итак, я ни на шаг не продвинулся....
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) QIWI кажется все?
110 Silverspam 17756 20.4.2024, 16:44
автор: Liudmila
Открытая тема (нет новых ответов) Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ.
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п
7 stu999 1756 31.3.2024, 11:19
автор: stu999
Открытая тема (нет новых ответов) Все легальные аккаунты без НДС. Facebook Ads, Яндекс Директ и Google Ads без НДС. Отзывы SaveBalance
123
5 DerianFox 3789 7.7.2023, 19:07
автор: rom36
Открытая тема (нет новых ответов) RedBox - все нужные инструменты в одном месте
0 fantomofdarkness 799 15.2.2023, 14:50
автор: fantomofdarkness
Открытая тема (нет новых ответов) Внимание! Накрутка просмотров ВК на все посты стены. ДЕШЕВО!
0 robot_yaga2 934 4.7.2022, 15:17
автор: robot_yaga2


 



RSS Текстовая версия Сейчас: 24.4.2024, 8:31
Дизайн