Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2013, 05:43   #1
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
Вопрос Поиск по нескольким словам в таблице mysql

Добрый день, уважаемые гуру!)
Помогите чайнику..
Есть скрипт поиска по фамилии, необходимо его переделать таким образом, чтобы искал по двум полям, например фамилиии и отделу. Вопрос как?...
Ниже имеющийся скрипт:
PHP код:
  $searchterm=$HTTP_POST_VARS['searchterm'];

  
$searchtermtrim($searchterm);

  if (!
$searchterm){
     echo 
'Вы не ввели параметры поиска.  Пожалуйста, вернитесь к предыдущей странице и повторите попытку.';
     exit;
  }
  
  
$searchterm addslashes($searchterm);

  @ 
$db mysql_pconnect('localhost''''');

  if (!
$db){
     echo 
'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
     exit;
  }

  
mysql_select_db('LogBook1');

 
$query "SELECT * ,IF(`datainet`='0000-00-00','',DATE_FORMAT(`datainet`,'%d.%m.%Y')) AS `datainet`,
                     IF(`datamail`='0000-00-00','',DATE_FORMAT(`datamail`,'%d.%m.%Y')) AS `datamail`,
                     IF(`datarereg`='0000-00-00','',DATE_FORMAT(`datarereg`,'%d.%m.%Y')) AS `datarereg`
           FROM `Journal`
           where `lastname` like '%"
.$searchterm."%'
           order by `divis`,`lastname`"
;

  
$result mysql_query($query);
  
$num_results mysql_num_rows($result);
  
/* Вывод*/
echo ("
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
 
<head>
 
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
 
    <title>Вывод данных</title>

<style type=\"text/css\">
<!--
body { font: 12px Georgia; color: #666666; }
h3 { font-size: 16px; text-align: center; }
table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
td { padding: 3px; text-align: center; vertical-align: middle; }
.buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
-->
</style>
 
</head>
 
<body>
 
<h3>Вывод ранее сохраненных данных</h3>
 
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
 <tr style=\"border: solid 1px #000\">
  <td align=\"center\"><b>Отдел</b></td>
  <td align=\"center\"><b>Фамилия пользователя</b></td>
  <td align=\"center\"><b>Имя пользователя</b></td>
  <td align=\"center\"><b>Отчество пользователя</b></td>
  <td align=\"center\"><b>Должность</b></td>
  <td align=\"center\"><b>Корпус</b></td>
  <td align=\"center\"><b>Кабинет</b></td>
  <td align=\"center\"><b>Телефон</b></td>
  <td align=\"center\"><b>Осведомленность</b></td>
  <td align=\"center\"><b>Дата рег.интернета</b></td>
  <td align=\"center\"><b>Дата рег.почты</b></td>
  <td align=\"center\"><b>Дата перерегистрации</b></td>
  <td align=\"center\"><b>E-Mail пользователя</b></td>
  <td align=\"center\"><b>№ записи в журнале</b></td>
  <td align=\"center\"><b>Комментарий</b></td>
 </tr>
"
);
while (
$row mysql_fetch_array($result)) {
    echo 
"<tr>\n";
    echo 
"<td>".$row['divis']."</td>";
    echo 
"<td>".$row['lastname']."</td>";
    echo 
"<td>".$row['firstname']."</td>";
    echo 
"<td>".$row['middlename']."</td>";
    echo 
"<td>".$row['position']."</td>";
    echo 
"<td>".$row['corp']."</td>";
    echo 
"<td>".$row['office']."</td>";
    echo 
"<td>".$row['phone']."</td>";
    echo 
"<td>".$row['privity']."</td>";
    echo 
"<td>".$row['datainet']."</td>";
    echo 
"<td>".$row['datamail']."</td>";
    echo 
"<td>".$row['datarereg']."</td>";
    echo 
"<td>".$row['email']."</td>";
    echo 
"<td>".$row['num']."</td>";
    echo 
"<td>".$row['comment']."</td>";
}
echo (
"</table>\n");
mysql_close();
 
/*Возврат*/
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"work.php\">Вернуться назад</a></div>"); 
Была попытка сделать следующим образом, но повалились ошибки
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
PHP код:
  $searchterm=$HTTP_POST_VARS['searchterm'];
  
$searchterm str_replace(" ","|",$str);

  @ 
$db mysql_pconnect('localhost''''');

  if (!
$db){
     echo 
'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
     exit;
  }
 
  
$logic $searchterm==$str?'OR':'AND';

  
mysql_select_db('LogBook1');

 
$query "SELECT * ,IF(`datainet`='0000-00-00','',DATE_FORMAT(`datainet`,'%d.%m.%Y')) AS `datainet`,
                     IF(`datamail`='0000-00-00','',DATE_FORMAT(`datamail`,'%d.%m.%Y')) AS `datamail`,
                     IF(`datarereg`='0000-00-00','',DATE_FORMAT(`datarereg`,'%d.%m.%Y')) AS `datarereg`
           FROM `Journal`
           where `lastname` rlike '"
.$searchterm."' '".$logic."'
           and `divis` rlike '"
.$searchterm."'
           order by `lastname`"
;

  
$result mysql_query($query);
  
$num_results mysql_num_rows($result); 

Последний раз редактировалось bizarre86; 25.04.2013 в 06:31.
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 09:17   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

1. Warning - не ошибка, а предупреждение
2. похоже не нравится запрос..... посмотрите сам запрос - echo $query
что там и как... здесь выложте
ADSoft вне форума Ответить с цитированием
Старый 25.04.2013, 09:45   #3
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

Сам вывод без изменений, как и в изначальном файле.
Привожу полный измененный вариант:
PHP код:
  $searchterm=$HTTP_POST_VARS['searchterm'];
  
$searchterm str_replace(" ","|",$str);

  @ 
$db mysql_pconnect('localhost''''');

  if (!
$db){
     echo 
'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
     exit;
  }
 
  
$logic $searchterm==$str?'OR':'AND';

  
mysql_select_db('LogBook1');

 
$query "SELECT * ,IF(`datainet`='0000-00-00','',DATE_FORMAT(`datainet`,'%d.%m.%Y')) AS `datainet`,
                     IF(`datamail`='0000-00-00','',DATE_FORMAT(`datamail`,'%d.%m.%Y')) AS `datamail`,
                     IF(`datarereg`='0000-00-00','',DATE_FORMAT(`datarereg`,'%d.%m.%Y')) AS `datarereg`
           FROM `Journal`
           where `lastname` rlike '"
.$searchterm."' '".$logic."'
           and `divis` rlike '"
.$searchterm."'
           order by `lastname`"
;

  
$result mysql_query($query);
  
$num_results mysql_num_rows($result); 
  
/* Вывод*/
echo ("
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
 
<head>
 
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" />
 
    <title>Вывод данных</title>

<style type=\"text/css\">
<!--
body { font: 12px Georgia; color: #666666; }
h3 { font-size: 16px; text-align: center; }
table { width: 700px; border-collapse: collapse; margin: 0px auto; background: #E6E6E6; }
td { padding: 3px; text-align: center; vertical-align: middle; }
.buttons { width: auto; border: double 1px #666666; background: #D6D6D6; }
-->
</style>
 
</head>
 
<body>
 
<h3>Вывод ранее сохраненных данных</h3>
 
<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\">
 <tr style=\"border: solid 1px #000\">
  <td><b>#</b></td>
  <td align=\"center\"><b>Фамилия пользователя</b></td>
  <td align=\"center\"><b>Имя пользователя</b></td>
  <td align=\"center\"><b>Отчество пользователя</b></td>
  <td align=\"center\"><b>Должность</b></td>
  <td align=\"center\"><b>отдел</b></td>
  <td align=\"center\"><b>Корпус</b></td>
  <td align=\"center\"><b>Кабинет</b></td>
  <td align=\"center\"><b>Телефон</b></td>
  <td align=\"center\"><b>Осведомленность</b></td>
  <td align=\"center\"><b>Дата рег.интернета</b></td>
  <td align=\"center\"><b>Дата рег.почты</b></td>
  <td align=\"center\"><b>Дата перерегистрации</b></td>
  <td align=\"center\"><b>E-Mail пользователя</b></td>
  <td align=\"center\"><b>№ записи в журнале</b></td>
  <td align=\"center\"><b>Комментарий</b></td>
 </tr>
"
);
 
/* Цикл вывода данных из базы */
while ($row mysql_fetch_array($result)) {
    echo 
"<tr>\n";
    echo 
"<td>".$row['id']."</td>";
    echo 
"<td>".$row['lastname']."</td>";
    echo 
"<td>".$row['firstname']."</td>";
    echo 
"<td>".$row['middlename']."</td>";
    echo 
"<td>".$row['position']."</td>";
    echo 
"<td>".$row['divis']."</td>";
    echo 
"<td>".$row['corp']."</td>";
    echo 
"<td>".$row['office']."</td>";
    echo 
"<td>".$row['phone']."</td>";
    echo 
"<td>".$row['privity']."</td>";
    echo 
"<td>".$row['datainet']."</td>";
    echo 
"<td>".$row['datamail']."</td>";
    echo 
"<td>".$row['datarereg']."</td>";
    echo 
"<td>".$row['email']."</td>";
    echo 
"<td>".$row['num']."</td>";
    echo 
"<td>".$row['comment']."</td>";
}
echo (
"</table>\n");
mysql_close();
 
/* Возврат */
echo ("<div style=\"text-align: center; margin-top: 10px;\"><a href=\"work.php\">Вернуться назад</a></div>"); 
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 10:20   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

в смысл слов вчитайтесь?
Цитата:
посмотрите сам запрос - echo $query что там и как... здесь выложте
ADSoft вне форума Ответить с цитированием
Старый 25.04.2013, 10:53   #5
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

Запрос немного исправлен:
PHP код:
$query "SELECT * ,IF(`datainet`='0000-00-00','',DATE_FORMAT(`datainet`,'%d.%m.%Y')) AS `datainet`,
                     IF(`datamail`='0000-00-00','',DATE_FORMAT(`datamail`,'%d.%m.%Y')) AS `datamail`,
                     IF(`datarereg`='0000-00-00','',DATE_FORMAT(`datarereg`,'%d.%m.%Y')) AS `datarereg`
           FROM `Journal`
           where `lastname` rlike '%"
.$searchterm."%' '.$logic.'
           and `divis` rlike '%"
.$searchterm."%'
           order by `lastname`"

Warning ушли, но в результате пусто, просто шапка таблицы выводится..
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 11:01   #6
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,156
По умолчанию

вопрос - как этот запрос выглядит динамически собраным уже.... сделайте вывод этой переменной
.... кстати.. .- зачем rlike а не like ?
ADSoft вне форума Ответить с цитированием
Старый 25.04.2013, 11:02   #7
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Цитата:
Запрос немного исправлен
не останавливайтесь на достигнутом
eval вне форума Ответить с цитированием
Старый 25.04.2013, 11:27   #8
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

ADSoft, извините, не совсем понимаю какой переменной?..((

Кстати, в запросе лишнее and , но без него снова предупреждения выдает=[
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 11:28   #9
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

rlike потому что используется регулярное выражение..
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 11:41   #10
Minus_yu
Чатланин!
Форумчанин
 
Аватар для Minus_yu
 
Регистрация: 20.11.2010
Сообщений: 140
По умолчанию

Цитата:
Сообщение от bizarre86 Посмотреть сообщение
не совсем понимаю какой переменной?..((
PHP код:
$query "SELECT * ,IF(`datainet`='0000-00-00','',DATE_FORMAT(`datainet`,'%d.%m.%Y')) AS `datainet`,
                     IF(`datamail`='0000-00-00','',DATE_FORMAT(`datamail`,'%d.%m.%Y')) AS `datamail`,
                     IF(`datarereg`='0000-00-00','',DATE_FORMAT(`datarereg`,'%d.%m.%Y')) AS `datarereg`
           FROM `Journal`
           where `lastname` rlike '%"
.$searchterm."%' '.$logic.'
           and `divis` rlike '%"
.$searchterm."%'
           order by `lastname`"


echo 
$query
Minus_yu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mysql. select значения по нескольким полям freeek SQL, базы данных 6 23.05.2012 18:55
Объединить запрос к нескольким таблицам в один (php+MySql) Maxx PHP 17 23.08.2010 16:32
поск на php по нескольким словам!!! ilma55 PHP 7 12.02.2010 11:40
Нужна помощь по работе с файлом *.chm(поиск по ключевым словам) v_skull Общие вопросы Delphi 5 21.06.2009 14:44
access+delphi поиск по словам в поле memo gvozdkoff БД в Delphi 2 25.02.2009 07:13