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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.03.2014, 17:54   #1
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию Ошибка при поиске php + mySQL

Вложил сам скрипт реализации, поиска. Основной код php скрипта,
лежит в файле search.php.
Прописал данные доступа к базе данных, и т.д.
Прописал таблицу и поле таблицы, откуда будет считываться информация.
Но каждый раз выдает ошибку:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
конечно ее можно уничтожить через error_reporting(0), но ничего не выводится. Помогите разобраться.
Пишу скрипт для сайта с фильмами или если есть идеи как лучше реализовать поиск фильмов на сайте, то поделитесь. Спасибо
Вложения
Тип файла: rar 1.rar (29.3 Кб, 10 просмотров)
Vzlom вне форума Ответить с цитированием
Старый 07.03.2014, 18:17   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Vzlom Посмотреть сообщение
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
В SQL-запросе ошибка – потому вместо результатов запроса возвращается FALSE, о чем и говорится в этом сообщении.
Нужно вывести текст ошибки, и затем исправить её.
Поиск ошибок –> Быстрые рекомендации –> п.2.
Составление SQL-запросов
Полученный текст ошибки в SQL-запросе можно показать здесь – и мы поможем её исправить, если с этим будут проблемы.
Andkorol вне форума Ответить с цитированием
Старый 07.03.2014, 18:48   #3
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Уррра, спасибо тебе. Ты помог, получилось все.
Заменил
$query =mysql_query("SELECT * FROM users WHERE lastname LIKE '".mysql_real_escape_string($_GE T['lastname'])."%'");
/*$query = mysql_query("SELECT * FROM users WHERE MATCH(lastname) AGAINST('$search')",$db);*/
и заработало.
Правда, перед выведенной информацией выдает ошибку такую:
Notice: Undefined index: lastname in
и дальше выводит результаты запроса...
применить параметр error_reporting(0); или нужно ее убрать по другому. Чтобы потом, не было проблем с этим?

Последний раз редактировалось Vzlom; 07.03.2014 в 18:59.
Vzlom вне форума Ответить с цитированием
Старый 07.03.2014, 19:07   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ошибки всегда нужно исправлять – а не прятать.
В данном случае – в код нужно добавить проверку на существование переменной $_GET['lastname'], и только потом использовать эту переменную в запросе.
Andkorol вне форума Ответить с цитированием
Старый 07.03.2014, 19:21   #5
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

Спасибо. Но тут вот еще такая беда, я ввожу любую букву даже цифру в поле поиска, нажимаю Enter, он мне все равно открывает все содержимое поля lastname, он не делает выборку из критерия запроса, а просто тупо выводит всю инфу из Lastname.
Как это поправить?
<?php
//error_reporting(0);
header("Content-type: text/html; charset=windows-1251");

$search = $_POST['search'];
$search = addslashes($search);
$search = htmlspecialchars($search);
$search = stripslashes($search);
if($search == ''){
exit("Начните вводить запрос");
}

$db = mysql_connect("localhost","root","" );
mysql_select_db("users",$db);
mysql_query("SET NAMES cp1251");
$query =mysql_query("SELECT * FROM users WHERE lastname LIKE '".mysql_real_escape_string($_GE T['lastname'])."%'");
/*$query = mysql_query("SELECT * FROM users WHERE MATCH(lastname) AGAINST('$search')",$db);*/
if(mysql_num_rows($query) > 0){
$sql = mysql_fetch_array($query);
do{
echo "<div>".$sql['lastname']."</div>";
}while($sql = mysql_fetch_array($query));
}else{
echo "Нет результатов";
}

?>
Vzlom вне форума Ответить с цитированием
Старый 07.03.2014, 19:41   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Мне вообще малопонятны все эти пассажи с переменными $_POST['search'] и $_GET['lastname'].
Какая из них реально приходит из формы?
$_POST['search'] или $_GET['lastname']?
Выводи полностью собранный запрос на экран (echo $query;) – и смотри, подставляется ли в запрос то, что тебе нужно.

Для оформления кода есть кнопка «PHP» в редакторе сообщений.
Читать этот код без форматирования, отступов и подсветки нереально.
Andkorol вне форума Ответить с цитированием
Старый 08.03.2014, 15:08   #7
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

<form action="search.php" method="post" name="form" onsubmit="return false;">
<p>
Живой поиск:<br>
<input name="search" type="text" id="search">
<small>Вводите на английском языке</small>
</p>
</form>

Метод Post
Vzlom вне форума Ответить с цитированием
Старый 08.03.2014, 15:20   #8
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

И где тут lastname
ADSoft вне форума Ответить с цитированием
Старый 08.03.2014, 20:12   #9
pray_driver
Форумчанин
 
Аватар для pray_driver
 
Регистрация: 18.08.2010
Сообщений: 140
По умолчанию

Всё растёт из того, что качество кода низкое. Уже давным-давно созданы фреймворки, позволяющие всю обработку форм отдать им "в субподряд", а самому заниматься непосредственно бизнес-логикой.

Вы как будто изучаете php. Если это так, то ещё простительно
Люди бывают десяти типов: те, кто знают двоичную систему, и те, кто нет
pray_driver вне форума Ответить с цитированием
Старый 10.03.2014, 17:14   #10
Vzlom
Форумчанин
 
Регистрация: 11.02.2013
Сообщений: 155
По умолчанию

да, я новичок. Кстати, за неделю, уже весть учебник перерешил с php.
И вот такая проблема меня настигла, делаю поиск по этому примеру
http://code-live.ru/post/custom-sear...php-and-mysql/
и в итоге
$text .= '<video width="400" height="267"><source src="'.$row1['a'].'/'.$row['b'].'/'.$row['c'].'" type="video/mp4"></video>
<p>'.$row['nazvanie'].'</p>';
добавляю php поиск фильмов на сайт, после нахождения файла, я прописываю путь к файлу и ссылку на видео, которое должно проигрываться.
$row1['a'].'/'.$row['b'].'/'.$row['c'] - a,b - это поля в mysql, в которых прописаны имена папок, с - тоже поле, но в ней содержится имя файла.
Например: Video/video/video.mp4
Он по запросу, все находит как надо и выделяет текст запроса жирным, и
видео плеер появляется, но ролик не проигрывается, путь указан. В чем проблема может быть???

Последний раз редактировалось Vzlom; 10.03.2014 в 19:43.
Vzlom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP. Ошибка запроса к MySQL. Кронос PHP 2 25.10.2012 09:46
Ошибка при поиске по dataGridView Ёжик в тумане C# (си шарп) 1 04.06.2012 14:21
При поиске возникает ошибка List index out of bounds (-1) Алекссс БД в Delphi 10 22.07.2011 16:40
ошибка при поиске текста в файле с настройками _Mickey_ Помощь студентам 0 29.12.2009 22:11
PHP and MySQL ошибка NecRoMat PHP 13 19.01.2009 18:06