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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2013, 11:49   #11
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

Спасибо)
echo $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 '%%' OR `divis` rlike '%%' order by `lastname`
bizarre86 вне форума Ответить с цитированием
Старый 25.04.2013, 12:17   #12
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

ну что .... яснее то стало ?
ADSoft вне форума Ответить с цитированием
Старый 26.04.2013, 04:18   #13
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

Ясно, что текст для поиска не передается в запрос..
Почему не ясно, ведь $searchterm=$HTTP_POST_VARS['searchterm'];

хелп..
bizarre86 вне форума Ответить с цитированием
Старый 26.04.2013, 08:53   #14
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

ну так то
Код:
$HTTP_POST_VARS['searchterm']
старо как мир...
обычно пользуют $_POST или $_GET .. смотря каким способом передают
ADSoft вне форума Ответить с цитированием
Старый 26.04.2013, 09:59   #15
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

Спорить не буду, но изначальный поиск по фамилии работает, там переменная передается так же, следовательно делаю вывод, что проблема не в этом..
Покопавшись обнаруживаю что ошибка в выражении $searchterm = str_replace(" ","|",$str); , если его закомментить, то текст поиска передается в запрос, но в выводе по прежнему только шапка...
bizarre86 вне форума Ответить с цитированием
Старый 26.04.2013, 11:08   #16
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

смотрите сам запрос, смотрите результат его выполнения.. смотрите в БД .. .может нет с таким условием
ADSoft вне форума Ответить с цитированием
Старый 06.05.2013, 06:04   #17
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
Вопрос

Друзья, помогите добить скрипт! Неделю бьюсь уже:/
После прочтения тонны материала и интернете были сделаны некотрые изменения - работает, но не совсем так как нужно..
PHP код:
 function searchterm_lastname($words){
   
$searchterm split(' '$words);
   
$num_searchterm count($searchterm);
   for (
$i=0$i<$num_searchterm$i++){
     if (
$i){
       
$searchterm_string .= "or lastname like '".$searchterm[$i]."' ";
     }
     else{
       
$searchterm_string "lastname like '".$searchterm[$i]."' ";
     }
     }
       return 
$searchterm_string;
   }
 function 
searchterm_divis($words){
   
$searchterm split(' '$words);
   
$num_searchterm count($searchterm);
   for (
$i=0$i<$num_searchterm$i++){
     if (
$i){
       
$searchterm_string .= "or divis like '".$searchterm[$i]."' ";
     }
     else{
       
$searchterm_string "divis like '".$searchterm[$i]."' ";
     }
   }
   return 
$searchterm_string;
 }

 if(isset(
$_POST['searchterm'])){
   
$words trim($_POST['searchterm']);
   
$words strip_tags($words);
   
$words str_replace("'"""$words);
   
$words str_replace('"'""$words);
   
$words str_replace("-"""$words);
   
$words str_replace(","""$words);
   if ((
$words) == ""){
     echo 
'Не указаны ключевые слова';
   }else{
     
$var searchterm_lastname($words);
     
$var2 searchterm_divis($words);
     echo 
$var$var2;
     if((
$var) || ($var2)){
       
$logic $searchterm == $searchterm?'AND':'OR';
       @ 
$db mysql_pconnect('localhost''''');
  if (!
$db){
     echo 
'Ошибка: Не удалось установить соединение с базой данных. Пожалуйста, повторите попытку позже.';
     exit;
  }
  
mysql_select_db('');

 
$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 "
.$var." ".$logic."
           "
.$var2."
           order by `lastname`"
;
           echo 
$query;

  
$result mysql_query($query);
  
$num_rows 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 вне форума Ответить с цитированием
Старый 06.05.2013, 06:05   #18
bizarre86
Пользователь
 
Регистрация: 06.08.2012
Сообщений: 21
По умолчанию

ошибка в $logic = $searchterm == $searchterm?'AND':'OR'; , которую не могу найти - смысл в том, чтобы если слово для поиска одно, то OR; если два, то AND.

например ищем: 805 иванов
echo $query:
Код HTML:
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 '805' or lastname like 'иванов' AND divis like '805' or divis like 'иванов' order by `lastname`
результат верный.

ищем: иванов
echo $query:
Код HTML:
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 'иванов' AND divis like 'иванов' order by `lastname`
в результате соответственно пусто..

так же если изменить порядок поиска и искать "иванов 805", то вываливает весь список отдела 805 и всех ивановых..
bizarre86 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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