SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 07.07.2010 04:14:25

nnndaniil
Участник
Зарегистрирован: 07.07.2010
Сообщений: 3

Поиск по MySQL

Подскажите пожалуйста!

Есть таблица с тремя столбцами:
Код, Наименование, Цена
Хочу чтобы с помощью поиска введя Код или Наименование или то и другое можно было бы получить информацию о товаре, а результат выводился в табличку.
После поисков по интернету нашел скрипт, немного модернизировал под себя, но не работает поиск по Коду и Наименованию одновременно, пишет: Запрос ошибочный, а если искать только по Коду или Наименованию, то результат выводится без таблички и без Кода или Наименования,в зависимости по чему искал. Помогите разобраться пожалуйста!

Код формы для поиска:
<p align="left"><b>Поиск:
</b>
<br>
<br>

<input type="text" name="Kod" size="20" value="Введите код">
<input type="text" name="Nazvanie" size="60" value="Введите название">

<input type="submit" name="submit" value="Искать">

<input type="reset" name="reset" value="Отчистить">

</p>

</form>


Сам скрипт:
<?php

/* Соединение, выбор БД */

$link = mysql_connect("localhost", "root", "") or die("Не соединилось!!!");

mysql_select_db("BM") or die("Не найдена БД");

/* Выполнение SQL запроса */

$query = "SELECT * FROM Excel WHERE (UPPER(Id) LIKE '%".strtoupper($_POST['Kod'])."%')AND(UPPER(Name) LIKE '%".strtoupper($_POST['Name'])."%') LIMIT '$first_rec', '$num_rec'";

$result = mysql_query($query) or die("Запрос ошибочный");

/* Печать результатов в HTML */

print "<table>\n";

while ($line = mysql_fetch_array($result, MYSQL_NUM)) {

print "\t<tr>\n";

for ($i=1;$i<=4;$i++) { print "\t\t<td>$line[$i]</td>\n"; }

print "\t</tr>\n";

}

print "</table>\n";

/* Освобождение памяти, занятой результатом запроса */

mysql_free_result($result);

/* Закрытие соединения */

mysql_close($link);

?>

Неактивен

 

#2 07.07.2010 12:00:48

Shopen
Гуру
Откуда: Москва
Зарегистрирован: 22.10.2007
Сообщений: 362

Re: Поиск по MySQL

nnndaniil написал:

$query = "SELECT * FROM Excel WHERE (UPPER(Id) LIKE '%".strtoupper($_POST['Kod'])."%')AND(UPPER(Name) LIKE '%".strtoupper($_POST['Name'])."%') LIMIT '$first_rec', '$num_rec'";

$result = mysql_query($query) or die("Запрос ошибочный");

Какой то странный код/запрос. Во-первых не видно, где определены переменные $first_rec, $num_rec, во-вторых почему они в кавычках, если это числа. В-третьих у вас должно быть условие, если у вас Kod и Name из формы не придут, то в запрос попадут LIKE '%%' что не айс. UPPER(Id) и UPPER(Name) - зачем имена полей таблиц приводить к верхнему регистру? $_POST['Name'] - это не безопасно.

Ну и покажите собственно сообщение об ошибке.

Неактивен

 

#3 07.07.2010 12:21:50

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Поиск по MySQL

От себя добавлю, что вопросы по PHP следует обсуждать на webew.ru.

Неактивен

 

#4 09.07.2010 15:29:14

nnndaniil
Участник
Зарегистрирован: 07.07.2010
Сообщений: 3

Re: Поиск по MySQL

Изменил теперь так:
$Kod=addslashes(htmlspecialchars($_POST['Kod']));
$Nazvanie=addslashes(htmlspecialchars($_POST['Nazvanie']));

$query = "SELECT * FROM Excel WHERE Id LIKE '%".strtoupper($_POST[Kod])."%') or Name LIKE '%".strtoupper($_POST['Nazvanie'])."%';

теперь:
Parse error: syntax error, unexpected T_STRING in Z:\home\localhost\www\poisk.php on line 16
Сама строка:
$result = mysql_query($query) or die("Запрос ошибочный");

Подскажите, пожалуйста в чем проблема?

Отредактированно nnndaniil (09.07.2010 16:32:04)

Неактивен

 

#5 09.07.2010 18:06:42

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Поиск по MySQL

Кавычку не закрыли.

Пожалуйста, давайте обсуждать PHP на webew.ru. Этот форум — правда не место
для обсуждений, не связанных с MySQL smile

Неактивен

 

#6 09.07.2010 20:06:58

nnndaniil
Участник
Зарегистрирован: 07.07.2010
Сообщений: 3

Re: Поиск по MySQL

Оке, спасибо (=

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson