Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP. Поиск по пустым параметрам / 18 сообщений из 18, страница 1 из 1
30.03.2012, 09:57:28
    #37730849
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Здравствуйте. Есть такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<form action="view.php" method="post">
<input type="text" name="id" />ID<br>
<input type="text" name="name" />Name<br>
<input type="text" name="comment" />Comment<br>
<input type="text" name="price" />Price<br>
<input type="submit" name="search" value="Search" />
</form>
<table cellpadding=0 cellspacing=0 border=1 align=center>
<?php

@$id = $_POST["id"];
@$name = $_POST["name"];
@$comment = $_POST["comment"];
@$price = $_POST["price"];

$query = mysql_query ("SELECT * FROM info WHERE id like '%$id%' or name like '%$name%' or comment like '%comment%' or price like '%$price%'") or die('error! Такой таблицы нет!');

while($row=mysql_fetch_array($query)) {
echo 
'

<tr>
<td>'.$row['id'].'</td>
<td>'.$row['name'].'</td>
<td>'.$row['comment'].'</td>
<td>'.$row['price'].'</td>
</tr>
';
}
?>
</table>


который производит поиск в базе.
Но минус в том, что чтобы найти одну или несколько записей, нужно указывать все параметры, то есть не оставлять ни одно поле пустым. Иначе запрос вернет все строки в таблице. Подскажите пожалуйста, как можно будет сделать поиск по одному или нескольким параметрам? Спасибо.
...
Рейтинг: 0 / 0
30.03.2012, 10:27:12
    #37730903
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
plus_stick,

$inputs = array('id','name','comment','price');

<form action="view.php" method="post">
<?php foreach ($inputs as $input): ?>
<input type="text" name="search[<?php print $input;?>]" /><?php print ucfirst($input);?><br>
<?php endforeach;?>
<input type="submit" name="search" value="Search" />
</form>
<table cellpadding=0 cellspacing=0 border=1 align=center>
<?php

$query=array();
foreach ($inputs as $input) {
if (isset($_POST['search'][$input])) {
$query[] = $input.' LIKE "%'.mysql_real_escape_string($_POST['search'][$input]).'%';
}
}

$query = mysql_query ('SELECT * FROM info WHERE ' . implode(' OR ', $query)) or die('error! Такой таблицы нет!');

while($row=mysql_fetch_array($query)) {
echo 
'

<tr>
<td>'.$row['id'].'</td>
<td>'.$row['name'].'</td>
<td>'.$row['comment'].'</td>
<td>'.$row['price'].'</td>
</tr>
';
}
?>
</table>

...
Рейтинг: 0 / 0
30.03.2012, 10:58:35
    #37730970
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ренат,

Спасибо, за ответ.
Как я понял из него, поиск по всем критериям будет производиться из одного поля?
...
Рейтинг: 0 / 0
30.03.2012, 11:02:11
    #37730979
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stickРенат,

Спасибо, за ответ.
Как я понял из него, поиск по всем критериям будет производиться из одного поля?
Я недописал код: вместо
Код: php
1.
if (isset($_POST['search'][$input])) {


поставте
Код: php
1.
if (isset($_POST['search'][$input]) && trim($_POST['search'][$input])) {


Если поле пустое то для него просто не будет сформиовано условие выборки. Все логика
...
Рейтинг: 0 / 0
30.03.2012, 11:55:36
    #37731091
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ренат,

При выборке запрос не срабатывает, пишет текст ошибки
...
Рейтинг: 0 / 0
30.03.2012, 12:08:33
    #37731124
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stickРенат,

При выборке запрос не срабатывает, пишет текст ошибки
какой текст ошибки то?
...
Рейтинг: 0 / 0
30.03.2012, 12:27:25
    #37731166
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ренат,

Текст ошибки, который должен выходить, если запрос не верен. То есть "error! Такой таблицы нет"
...
Рейтинг: 0 / 0
30.03.2012, 12:27:52
    #37731167
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ошибка выходит при любом раскладе
...
Рейтинг: 0 / 0
30.03.2012, 12:41:48
    #37731198
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stickОшибка выходит при любом раскладе
Блин, починка довольно банальная, надо былов сего лишь разобрать что да как работает:
вот правильная строка с закрытой двойной кавычкой
Код: php
1.
$query[] = $input.' LIKE "%'.mysql_real_escape_string($_POST['search'][$input]).'%"';


обычная распечатка запроса вывела бы причину
Код: php
1.
 or die('error! Такой таблицы нет!');


замените уже на
Код: php
1.
or die(mysql_error());


а еще лучше уберите die, так как ее использование не привествуеться и юзайте нормальный драйвер подключения , mysql_xxx уже depricated
...
Рейтинг: 0 / 0
30.03.2012, 12:58:25
    #37731241
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ренат,

Увы. Та же ошибка.
В случае с mysql_error содержание таково:
You have an error your SQL syntax; check the manual that corresponds to yor MySQL server version for the right syntax to use near " at line 1.
Проверил все кавычки, вроде все нормально.
...
Рейтинг: 0 / 0
30.03.2012, 14:22:12
    #37731432
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Покажите текст запроса, который передаете в mysql_query().
...
Рейтинг: 0 / 0
30.03.2012, 14:31:54
    #37731454
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
vkle,

Я исходил из примера, который привел мне Ренат.
Все один в один.
...
Рейтинг: 0 / 0
30.03.2012, 14:55:43
    #37731516
Ренат
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stickvkle,

Я исходил из примера, который привел мне Ренат.
Все один в один.
покажите код запроса который скрипт генерит... Я код писал навскидку нигде не проверяя, конечно же я человек и у меня могут быть оишбки.
...
Рейтинг: 0 / 0
30.03.2012, 15:27:37
    #37731596
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
Ренат,

Я бы с радостью, но не знаю как это сделать. Я только учусь. Подскажите, как?
...
Рейтинг: 0 / 0
30.03.2012, 15:53:16
    #37731665
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stick, как то так примерно

Код: php
1.
2.
3.
$query = .... // то что нагенерил сборщик запроса
var_dump($query);
$result = mysql_query($query);
...
Рейтинг: 0 / 0
30.03.2012, 16:10:39
    #37731731
plus_stick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
vkle,

Ничего не показывает ((
...
Рейтинг: 0 / 0
30.03.2012, 16:49:24
    #37731870
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
plus_stick,

Так не бывает. var_dump() делает вывод в любом случае, даже если переменная пуста. Проверьте имена переменных, возможно где-то не та переменная использована, а вывод ошибок отключен (для отладки его лучше включить - по крайней мере, ляпы сразу видно).
...
Рейтинг: 0 / 0
30.03.2012, 19:38:44
    #37732184
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PHP. Поиск по пустым параметрам
COALESCE(id,'') LIKE '%$id%' и так на все остальные поля, если я правильно понял.
ПС. Никогда не пишите SELECT *. По разным причинам. Перечисляйте всегда через запятую нужные поля.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / PHP. Поиск по пустым параметрам / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]