Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Передача данных по нескольким полям.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): [1] 2 3 »   

> Описание: Передача данных по нескольким полям
Altynayka
Отправлено: 05 Марта, 2008 - 10:14:55
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




Здравствуйте.
Подскажите пожалуйста как мне осуществить след. выборку из таблицы:
Есть несколь input textov, при нажатии на кнопку происходит выполнения action="script.php"
Проблема в том, что у меня таких полей 5
и нужно значения, которые передаются в переменные сравнить со значениями, хранящимися в БД.
Я написала запрос.
Но такое ощущение, что он запрос игнорирует.
Я передаю переменные, он отображает все строки из таблицы, даже если инпут тексты пустые. Или когда все поля в форме пусты , все равно отображаются все поля из БД.
Что делать? Очень нужна помощь! Огорчение
 
 Top
Dastar
Отправлено: 05 Марта, 2008 - 10:41:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 199
Дата рег-ции: Янв. 2008  
Откуда: Израиль


Помог: -6 раз(а)




Я предвижу... Э...
А можно сначала на скрипт посмотреть?


-----
Не знаешь - молчи.
 
 Top
EuGen Администратор
Отправлено: 05 Марта, 2008 - 11:02:35
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Ничего не понял, попробуйте еще раз.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Altynayka
Отправлено: 05 Марта, 2008 - 12:05:55
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




есть несколько полей для ввода данных
потом я их передаю через переменные
$nomer=$_GET['cat_nomer'] ;
$name=$_GET['cat_name'];
потом идет запрос:
SELECT nomer ,name FROM note

where nomer like '.$nomer
OR slujba.name_slujba like '.$name;
вот
я заполняю не все поля (например только первую), такая выборка.
Но он мне отображает не конкретные поля, соответсвующие значению переданному,
а все поля.
 
 Top
EuGen Администратор
Отправлено: 05 Марта, 2008 - 12:26:48
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




А почему это у Вас в запросе в условии WHERE присутствует некая таблица slujba, хотя ее нет в выражении FROM? Такой запрос не выполнится из-за ошибки.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok
Отправлено: 05 Марта, 2008 - 12:45:40
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)






-----
Truly yours, Sasha.
 
My status
 Top
Altynayka
Отправлено: 06 Марта, 2008 - 03:53:22
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen пишет:
А почему это у Вас в запросе в условии WHERE присутствует некая таблица slujba, хотя ее нет в выражении FROM? Такой запрос не выполнится из-за ошибки.


На названия не обращайте внимания.

SELECT nomer ,name FROM note
where nomer like '.$nomer
OR name like '.$name;
 
 Top
RomAndry Администратор
Отправлено: 06 Марта, 2008 - 08:30:30
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 913
Дата рег-ции: Янв. 2008  


Помог: 6 раз(а)




CODE (text):
скопировать код в буфер обмена
  1.  
  2. SELECT `nomer` ,`name` FROM `note`  
  3. WHERE `nomer` LIKE "'.$nomer.'"
  4. OR `name` LIKE "'.$name.'"';
  5.  
 
My status
 Top
Altynayka
Отправлено: 06 Марта, 2008 - 08:42:42
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




RomAndry пишет:
CODE:
скопировать код в буфер обмена

SELECT `nomer` ,`name` FROM `note`
WHERE `nomer` LIKE "'.$nomer.'"
OR `name` LIKE "'.$name.'"';


спасибо!!!
 
 Top
Altynayka
Отправлено: 10 Марта, 2008 - 04:38:16
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




А как мне сделать не строгую выборку по несокльким полям? Я сделала след.:
SELECT `nomer` ,`name` FROM `note`
WHERE `nomer` LIKE "'.%$nomer%.'"
OR `name` LIKE "'.%$name%.'"';

Работает хорошо, если все поля для ввода заполнены.Но если ,допустим, я одно из полей оставлю пустым, то отображаются все строки из таблицы.
Как мне исправить?
 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2008 - 10:05:13
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $rgWheres=array();
  4. if ($name)
  5.    $rgWheres[]="name LIKE '%".addslashes($name)."%'";
  6. if ($nomer)
  7.    $rgWheres[]="nomer LIKE '%".addslashes($nomer)."%'";
  8. $strWhere=join(" OR ", $rgWheres);
  9. if ($strWhere)
  10.    $strWhere=" WHERE ".$strWhere;
  11. mysql_query("SELECT `nomer` ,`name` FROM `note` $strWhere");
  12. ?>
  13.  

(Отредактировано автором: 11 Марта, 2008 - 10:05:34)



-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Altynayka
Отправлено: 11 Марта, 2008 - 11:04:36
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




EuGen Спасибо!!!!!!!!!!!!! большое все классно получилось!
Можете еще подсказать, как мне сделать, чтобы регистры не учитывались.
 
 Top
scuter
Отправлено: 11 Марта, 2008 - 11:26:45
Post Id



Посетитель


Покинул форум
Сообщений всего: 282
Дата рег-ции: Янв. 2008  


Помог: 0 раз(а)




я в этом случае пользуюсь,
REGEXP

CODE (text):
скопировать код в буфер обмена
  1. SELECT * FROM `content` WHERE `text` REGEXP CONVERT( _utf8 'bla bla bla' USING utf8 ) COLLATE utf8_general_ci LIMIT 0 , 30
 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2008 - 11:56:40
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




В данном случае можно проще дело решить. Для REGEXP СУБД должна много чего сделать, что не оправданно, как мне кажется, в этом случае ("Из пушки по воробьям"). Предлагаю сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. $rgWheres=array();
  4. if ($name)
  5.    $rgWheres[]="LOWER(name) LIKE '%".strtolower(addslashes($name))."%'";
  6. if ($nomer)
  7.    $rgWheres[]="LOWER(nomer) LIKE '%".strtolower(addslashes($nomer))."%'";
  8. $strWhere=join(" OR ", $rgWheres);
  9. if ($strWhere)
  10.    $strWhere=" WHERE ".$strWhere;
  11. mysql_query("SELECT `nomer` ,`name` FROM `note` $strWhere");
  12. ?>
  13.  

Любопытно, что по-умолчанию регистры как раз не учитываются.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Altynayka
Отправлено: 12 Марта, 2008 - 09:45:25
Post Id


Частый гость


Покинул форум
Сообщений всего: 208
Дата рег-ции: Март 2008  


Помог: 0 раз(а)




СПАСИБО БОЛЬШОЕ !!! Радость EuGen
 
 Top
Страниц (3): [1] 2 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB