Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: получить названия совпадающих полей
 
 автор: psychomc   (27.07.2009 в 17:38)   письмо автору
 
 

например есть поиск в базе данных по нескольким полям таблицы с помощью LIKE.
допустим в таблице есть поля name,family, sity по которым осуществляется поиск. пользователь ввёл данные и выбрал логику "или". может ли mysql вернуть названия полей, удовлетворяющих хотя бы одному из заданных критериев?

  Ответить  
 
 автор: Trianon   (27.07.2009 в 17:44)   письмо автору
 
   для: psychomc   (27.07.2009 в 17:38)
 

Запрос может вернуть признаки. Если соответствующие поисковые выражения поместить в список SELECT.

  Ответить  
 
 автор: psychomc   (27.07.2009 в 18:27)   письмо автору
 
   для: Trianon   (27.07.2009 в 17:44)
 

напишите поподробнее плиз если можно!

  Ответить  
 
 автор: Trianon   (27.07.2009 в 18:29)   письмо автору
 
   для: psychomc   (27.07.2009 в 18:27)
 

Как только Вы напишете исходный запрос с LIKE

  Ответить  
 
 автор: psychomc   (27.07.2009 в 18:45)   письмо автору
 
   для: Trianon   (27.07.2009 в 18:29)
 

SELECT * FROM `users` WHERE `name` LIKE '%".$name."%'  OR `family` LIKE '%".$family."%' OR `city` LIKE '%".$city."%'


как-то так....

  Ответить  
 
 автор: Trianon   (27.07.2009 в 18:56)   письмо автору
 
   для: psychomc   (27.07.2009 в 18:45)
 

SELECT * 
    ,   `name` LIKE '%".$name."%'  
    ,   `family` LIKE '%".$family."%'  
    ,   `city` LIKE '%".$city."%'  
  FROM `users` 
  WHERE `name` LIKE '%".$name."%'  
    OR `family` LIKE '%".$family."%' 
    OR `city` LIKE '%".$city."%'

  Ответить  
 
 автор: psychomc   (28.07.2009 в 10:08)   письмо автору
 
   для: Trianon   (27.07.2009 в 18:56)
 

запрос выполняется...итоговая выборка правильная. вот только теперь не понимаю как в php получить названия этих полей таблицы :)

  Ответить  
 
 автор: а-я   (28.07.2009 в 11:54)   письмо автору
 
   для: psychomc   (28.07.2009 в 10:08)
 

наверно, так примерно:

<?
$sql 
"
SELECT *  
    ,   `name` LIKE '%"
.$name."%'   
    ,   `family` LIKE '%"
.$family."%'   
    ,   `city` LIKE '%"
.$city."%'   
  FROM `users`  
  WHERE `name` LIKE '%"
.$name."%'   
    OR `family` LIKE '%"
.$family."%'  
    OR `city` LIKE '%"
.$city."%'
"


$ms mysql_query($sql);
$result mysql_fetch_assoc($ms);

 if(
$result['name'])
 echo 
'найдено в поле "name". <br />';
 
 if(
$result['family'])
 echo 
'найдено в поле "family". <br />'
 
 if(
$result['city'])
 echo 
'найдено в поле "city". <br />';
?>



p.s. только при таком запросе, Вы не сможете получить содержание этих полей.
если Вам надо содержание полей, можете использовать псевдонимы в запросе.

  Ответить  
 
 автор: psychomc   (28.07.2009 в 12:08)   письмо автору
 
   для: а-я   (28.07.2009 в 11:54)
 

SELECT * 
    ,   `name`  AS `nam` LIKE '%".$name."%'  
    ,   `family`  AS `fam` LIKE '%".$family."%'  
    ,   `city` AS `cit` LIKE '%".$city."%'  
  FROM `users` 
  WHERE `name` LIKE '%".$name."%'  
    OR `family` LIKE '%".$family."%' 
    OR `city` LIKE '%".$city."%'


что-то вроде этого?

  Ответить  
 
 автор: а-я   (28.07.2009 в 12:23)   письмо автору
 
   для: psychomc   (28.07.2009 в 12:08)
 


SELECT *  
    ,   `name` LIKE '%".$name."%' AS `nam`  
    ,   `family` LIKE '%".$family."%' AS `fam`
    ,   `city`` LIKE '%".$city."%' AS `cit
  FROM `users`  
  WHERE `name` LIKE '%".$name."%'   
    OR `family` LIKE '%".$family."%'  
    OR `city` LIKE '%".$city."%'

  Ответить  
 
 автор: psychomc   (28.07.2009 в 12:29)   письмо автору
 
   для: а-я   (28.07.2009 в 12:23)
 

точно. спасибо за ответ

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования