Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите пожалуйста!
Есть таблица с тремя столбцами:
Код, Наименование, Цена
Хочу чтобы с помощью поиска введя Код или Наименование или то и другое можно было бы получить информацию о товаре, а результат выводился в табличку.
После поисков по интернету нашел скрипт, немного модернизировал под себя, но не работает поиск по Коду и Наименованию одновременно, пишет: Запрос ошибочный, а если искать только по Коду или Наименованию, то результат выводится без таблички и без Кода или Наименования,в зависимости по чему искал. Помогите разобраться пожалуйста!
Код формы для поиска:
<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);
?>
Неактивен
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'] - это не безопасно.
Ну и покажите собственно сообщение об ошибке.
Неактивен
От себя добавлю, что вопросы по PHP следует обсуждать на webew.ru.
Неактивен
Изменил теперь так:
$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)
Неактивен
Кавычку не закрыли.
Пожалуйста, давайте обсуждать PHP на webew.ru. Этот форум — правда не место
для обсуждений, не связанных с MySQL
Неактивен
Оке, спасибо (=
Неактивен