Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
1

Оператор LIKE / PHP и базы данных

05.05.2014, 10:17. Просмотров 1079. Ответов 20
Метки нет (Все метки)

Добрый день!
В SQL получается выполнить следующий запрос:
SQL
1
SELECT * FROM `menu` WHERE Name LIKE '%Суп%'
Все находит, вообщем работает. Но из под php не получается выполнить.
PHP
1
$qr_resultt = mysql_query("select * from menu where Name LIKE '%".$p."%'");
$p - переменная значения, которую ввел пользователь.
Пробывал различные варианты записи знака "%", результата 0.
Просто поиск работает, но мне нужен именно LIKE.

PHP
1
2
<input type="text" name="nam" placeholder="Наименование">
$p=$_POST['nam'];
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2014, 10:17
Ответы с готовыми решениями:

Php + mysql = отобразить перечень таблиц базы данных, схему данных
Всем привет, нужна ваша помощь, как реализовать данные задания? 1. Создать...

PHP и базы данных
Здравствуйте, помогите написать процедуру, которая будет создавать отчет по...

Базы данных в PHP
Какая переменная или какой файл в папках сервера(допустим денвера) является...

пример базы данных на PHP
Всем доброго дня. Нужен конкретный пример базы данных PHP. Пролазил весь...

Вывод из базы данных в table - PHP БД
Здравствуйте! Есть таблица в БД под названием orders, мне нужно из этой...

20
Garred
282 / 80 / 7
Регистрация: 19.04.2011
Сообщений: 222
05.05.2014, 12:07 2
Попробуйте так:
PHP
1
$qr_resultt = mysql_query("select * from `menu` where `Name` LIKE '%$p%'");
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 12:16  [ТС] 3
Так тоже пробовал - не работает.
0
Garred
282 / 80 / 7
Регистрация: 19.04.2011
Сообщений: 222
05.05.2014, 12:31 4
asper_, может у Вас там тип данных не символьный?
0
JimUSA
Web Programmer
324 / 285 / 121
Регистрация: 28.09.2011
Сообщений: 1,566
05.05.2014, 12:32 5
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
if(isset($_POST["send"])) {
    $search = htmlspecialchars($_POST["search"]);
    if(!empty($search)) {
        $query = mysql_query("SELECT * FROM `menu` WHERE `name` LIKE '%".$search."%'");
        while($result = mysql_fetch_array($query)) {
            echo '<p>'.$result["name"].'</p>';
        }
    }else
        echo 'Заполните поле!';
}
?>
 
<form action="" method="post">
    <input type="text" name="search" /><br />
    <input type="submit" name="send" value="Поиск" />
</form>
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 15:55  [ТС] 6
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php  
 
$db_host = 'localhost';
$db_name = 'bd';
$db_username = '*****';
$db_password = '*****';
$db_table_to_show = 'menu';
$p=$_POST['nam']; 
$c=$_POST['cina1']; 
$cc=$_POST['cina2']; 
mysql_query("SET NAMES utf8");
$connect_to_db = mysql_connect($db_host, $db_username, $db_password)
or die("Could not connect: " . mysql_error());
 
$qr_resultt1 = mysql_query("select `Name`,`Ves`,`Cina` from menu where Name ='$p'");
$prov=mysql_fetch_array($qr_resultt1);
 
$qr_resultt11 = mysql_query("select * from menu where Cina BETWEEN '$c' AND '$cc'");
$prov1=mysql_fetch_array($qr_resultt11);
 
 // выводим на страницу сайта заголовки HTML-таблицы
 
//var_dump($aaa);
 
 
if($prov!=false){
$qr_resultt = mysql_query("select * from `menu` where `name` LIKE '%".$p."%'")or die(mysql_error());
echo'<div class="menuu">';      
echo'<table cellspacing="0">';
echo '<thead>';
echo '<tr>';
echo '<th>Наименование:</th>';
echo '<th>Вес,гр.</th>';
echo '<th>Цена,грн.</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
 
// выводим в HTML-таблицу все данные из таблицы MySQL 
while($dataa = mysql_fetch_array($qr_resultt)){ 
echo '<tr>';
echo '<td><p>'.$dataa['Name'].'</p></td>';
echo '<td>'.$dataa['Ves'].'</td>';
echo '<td>'.$dataa['Cina'].'</td>';
echo '</tr>'; 
echo '</tbody>';}
 
echo '</table>';    
echo '<br>';
echo '</div>';  }
 
if($prov1!=false){
 
$qr_resultt11 = mysql_query("select * from menu where Cina BETWEEN '$c' AND '$cc'");
if($prov!=true){
echo'<div class="menuu">';      
echo'<table cellspacing="0">';
echo '<thead>';
echo '<tr>';
echo '<th>Наименование:</th>';
echo '<th>Вес,гр.</th>';
echo '<th>Цена,грн.</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
 
// выводим в HTML-таблицу все данные из таблицы MySQL 
while($dataa = mysql_fetch_array($qr_resultt11)){ 
echo '<tr>';
echo '<td><p>вњ“ '.$dataa['Name'].'</p></td>';
echo '<td>'.$dataa['Ves'].'</td>';
echo '<td>'.$dataa['Cina'].'</td>';
echo '</tr>'; }
echo '</tbody>';
echo '</table>';    }}
echo '<br>';
echo '</div>';  
  ?>
При такой записи, Like работает как обычный поиск, то есть если я указываю не полное имя - в ответ ничего не получаю. Если указываю полное - выводит значение.
А мне обязательно нужно использовать LIKE
0
programmer123
12 / 12 / 3
Регистрация: 17.03.2014
Сообщений: 75
05.05.2014, 17:20 7
Цитата Сообщение от asper_ Посмотреть сообщение
LIKE '%".$p."%'
у меня такой же код, но переменная своя, работает как надо. попробуйте без or die(mysql_error()). От этого конечно нечего не должно измениться но мало ли. Главное что в запросе до or die(mysql_error()) всё должно работать.
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 17:30  [ТС] 8
Ничего не поменялось, ищет, но только по полному наименованию.
0
programmer123
12 / 12 / 3
Регистрация: 17.03.2014
Сообщений: 75
05.05.2014, 17:40 9
А что это у вас в запросе name а в выводе Name.
0
Garred
282 / 80 / 7
Регистрация: 19.04.2011
Сообщений: 222
05.05.2014, 17:41 10
asper_, попробуйте вот это сделать
PHP
1
2
$p=$_POST['nam']; 
$p=trim($p);
0
programmer123
12 / 12 / 3
Регистрация: 17.03.2014
Сообщений: 75
05.05.2014, 17:44 11
php чувствителен к регистру символов вроде как.
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 18:30  [ТС] 12
Цитата Сообщение от Garred Посмотреть сообщение
2
$p=$_POST['nam'];
$p=trim($p);
Не, не помогло.
Цитата Сообщение от programmer123 Посмотреть сообщение
А что это у вас в запросе name а в выводе Name.
Без разници
0
ads
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
05.05.2014, 18:41 13
кодировка слова
Суп
в скрипте php может сильно отличаться от кодировки слова
Суп
в базе данных... америка. юесей так сказать. что вы хотите..
0
Garred
282 / 80 / 7
Регистрация: 19.04.2011
Сообщений: 222
05.05.2014, 18:43 14
Вводите в поиск одно слово без пробелов

А еще выведите на экран свой запрос
PHP
1
echo "select * from menu where Name LIKE '%".$p."%'";
может что понятно станет...
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 19:15  [ТС] 15
Цитата Сообщение от Garred Посмотреть сообщение
echo "select * from menu where Name LIKE '%".$p."%'";
Я и без пробелов пишу, если написать "Омлет"
select * from menu where Name LIKE '%Омлет%' и выводит информацию о нём.
А если же написать "Омл"
select * from menu where Name LIKE '%Омл%' - ничего не выводит.
В SQL таким запросом SELECT * FROM `menu` WHERE `name` LIKE '%Омл%' - Всё работает
0
Garred
282 / 80 / 7
Регистрация: 19.04.2011
Сообщений: 222
05.05.2014, 19:20 16
Кодировка везде совпадает?
у таблиц, у полей...
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 19:38  [ТС] 17
Цитата Сообщение от Garred Посмотреть сообщение
Кодировка везде совпадает?
у таблиц, у полей...
Да, у таблици и всех полей utf8_bin
0
ads
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
05.05.2014, 20:05 18
Цитата Сообщение от asper_ Посмотреть сообщение
Да, у таблици и всех полей utf8_bin
а у скрипта какая кодировка?
0
asper_
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
05.05.2014, 20:11  [ТС] 19
Цитата Сообщение от ads Посмотреть сообщение
а у скрипта какая кодировка?
UTF-8
Обычный поиск ведь работает
0
ads
365 / 372 / 89
Регистрация: 01.12.2013
Сообщений: 1,629
05.05.2014, 20:21 20
Цитата Сообщение от asper_ Посмотреть сообщение
Обычный поиск ведь работает
POST в какой кодировке передает?

Добавлено через 3 минуты
http://htmlbook.ru/html/form/accept-charset
0
05.05.2014, 20:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.05.2014, 20:21

Использование Checkbox / PHP и базы данных
Доброго времени суток Нужна помощь вот в каком деле есть список домов я его...

Передать значение из базы данных в PHP
Добрый денечек дамы и господа, пришел за помощью в решении задачи. Есть...

Select выбора данных из базы PHP
Хочу, чтобы при выборе из списка переходила на соответствующую страницу, без...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru