Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ошибка в запросе поиска 
:(
    Опции темы
begin
Дата 2.2.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Контент страниц сайта хранится в базе в таблице my_table. Там есть строка с полями page1,page2..page10 (по количеству страниц)
Вот код, проверяющий - есть ли на первой странице искомый текст:
Код

//$text - искомый текст
$query="select count(page1) as `counter` from `my_table` where `page1` like ('%$text%')";
$result=mysql_query($query, $db) or die(mysql_error());
$res=mysql_fetch_array($result);
if ($res['counter']!==NULL)
{
echo "искомый текст найден на странице №1";
}


Но запрос явно кривой - выводит это сообщение даже если на странице отсутствует искомый текст  smile 
PM MAIL   Вверх
bars80080
Дата 2.2.2009, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а чему равно $res['counter']?
и что в запросе по настоящему? 
Код

var_dump($query);
что даст?
PM MAIL WWW   Вверх
begin
Дата 2.2.2009, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



при поисковой фразе "реклама" выводит следующее:

Код

string(83) "select count(page1) as `counter` from `my_table` where `page1` like ('%реклама%')"

PM MAIL   Вверх
bars80080
Дата 2.2.2009, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



а чему равен $res['counter'] ?
PM MAIL WWW   Вверх
Akina
Дата 3.2.2009, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



mysql_fetch_array возвращает либо массив, либо FALSE, но никогда не возвращает NULL. 
Код

if ($res['counter'] )
{
echo "искомый текст найден на странице №1";
}
Чтите маны - они рулез!


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
begin
Дата 3.2.2009, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



Цитата(Akina @ 3.2.2009,  00:22)
Код

if ($res['counter'] )
{
echo "искомый текст найден на странице №1";
}

Сделал так. И теперь вообще ничего не находит- даже то, что есть на странице.

Код

echo $res['counter'];


выводит ноль
PM MAIL   Вверх
bars80080
Дата 3.2.2009, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



ну, вот видишь, 0, а не NULL, которому ты поставил жёсткое сравнение !==
теперь он тебе сообщает, что количество строк 0, тебе же это было нужно
добавь ещё:
Код

if ($res['counter']) {
    echo "искомый текст найден на странице №1";
} else {
    echo 'искомый текст не наден';
}
для определённости
PM MAIL WWW   Вверх
Akina
Дата 3.2.2009, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(begin @  3.2.2009,  02:06 Найти цитируемый пост)
выводит ноль 

Правильно. В If() он интерпретируется как FALSE.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
begin
Дата 3.2.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 415
Регистрация: 16.5.2007

Репутация: нет
Всего: нет



С этим понятно. Но ведь проблема то осталась, как я уже писал выше - теперь он не находит даже то, что ЕСТЬ  smile 
PM MAIL   Вверх
Akina
Дата 3.2.2009, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



Цитата(begin @  3.2.2009,  13:58 Найти цитируемый пост)
теперь он не находит даже то, что ЕСТЬ  

Не понял... даже если фрагмент присутствует, всё равно в $res['counter'] оказывается ноль? Или там не ноль, а if() этого не замечает?

PS. Может, такие элементарные вещи ты начнёшь выяснять и сообщать самостоятельно, без дополнительных вопросов, а?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.