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

Форум MySQL

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

 

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

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

тема: Поиск абонентом с последующей сортировкой
 
 автор: oppo   (03.12.2005 в 08:45)   письмо автору
 
 

Поиск по имени ф.о. и телефону
Данные передаються из формы в функцию

foreach($_POST as $key => $value)  {

 $value=preg_replace("/[^\w\x7F-\xFF\s]/", "", $value); //плохие символы
 $value=trim( $value)     ;
if($key<>$_POST['form'] and !$value=="") {
}
$op[]=($value) ;
}

потом формирую $where запрос к базе

    $where = "WHERE  ";    
    if($op[0]){ $where .= " title LIKE '$op[0]%' AND"; }

##  -----и т.д. ----##

    if($op[4]) {     settype($op[4], 'integer');
$where .= " phone_home LIKE '$op[4]' AND"; }            

    if($op[3]) {   $where .= " adress LIKE '$op[3]%'"; }

    
if(substr($where, strlen($where)-4, 4) == ' AND') {$where = substr($where, 0, strlen($where)-4); }


Переменная $s ниже это сортировка
Поиск #setQuery это функция запроса #

    $database->setQuery( "SELECT * FROM #__adress"
        . "\n$where"
        . "\nORDER BY  $s  $reverse"
        . "\nLIMIT $limitstart, $limit"
        ) ;

Все хорошо но я сделал на свою голову сортировку "Сортировать по полям имя |телефон| и т.д. в функции где расположена форма поиска

       echo "Сортировать по : ";
       echo ("<a href='index.php?option=com_tel&Itemid=$Itemid&s=title&order=".$reverse."' title=\"title\" >| фамилии | </a>&nbsp;");

Так когда нажимаешь на Сортировать (&s=title) все результаты поиска сбиваються так как $where в форме теперь не передается.
Как сохранить результат поиска при последующей сортировке по полю имя |телефон| и т.д.

   
 
 автор: Shorr Kan   (03.12.2005 в 09:44)   письмо автору
 
   для: oppo   (03.12.2005 в 08:45)
 

Вы сортировку не при помощи href после поиска делайте, а при помощи того же radio-button ДО поиска. И разумеется в запрос добавляйте соответствующий ORDER BY.

   
 
 автор: oppo   (03.12.2005 в 10:19)   письмо автору
 
   для: Shorr Kan   (03.12.2005 в 09:44)
 

Ну да, я это RADIO оставил на потом...Уж больно красиво треугольники меняються -"вниз ""вверх"...Должно ж быть решение.
Еще нет ли кусочка кода как сделать поиск в найденном

   
 
 автор: cheops   (03.12.2005 в 12:45)   письмо автору
 
   для: oppo   (03.12.2005 в 08:45)
 

Такая же проблема возникает при организации постраничного вывода при поиске - обходится это помещением информации из HTML-формы в сессию.

   
 
 автор: oppo   (03.12.2005 в 13:29)   письмо автору
 
   для: cheops   (03.12.2005 в 12:45)
 

А можно ли набросок художника как это выглядит при использовании сесси1 если поля есть
$_POST['tit']; $_POST['name']; $_POST['firstname']; $_POST['tele'];$_POST['street'];$_POST['form'];

   
 
 автор: cheops   (03.12.2005 в 13:41)   письмо автору
 
   для: oppo   (03.12.2005 в 13:29)
 

Обычно в самом начале обработчика формы помещают конструкцию
<?php
  
if(!empty($_POST))
  {
    
$_SESSION['tit'] = $_POST['tit'];
    
$_SESSION['name'] = $_POST['name']; 
    
$_SESSION['firstname'] = $_POST['firstname']; 
    
$_SESSION['tele'] = $_POST['tele'];
    
$_SESSION['street'] = $_POST['street'];
    
$_SESSION['form'] = $_POST['form'];
  }
?>

А далее уже во всех запросах используют только данные из суперглобального массива $_SESSION. Таким образом данные в $_SESSION будут перезаписываться только когда появятся POST-данные, т.е. по нажатию кнопки. А так они будут путешествовать со странице к странице (на каждой странице необходимо вызывать session_start()).

   
 
 автор: oppo   (03.12.2005 в 14:50)   письмо автору
 
   для: cheops   (03.12.2005 в 13:41)
 

Спасибо ,мастер, сначало плюнулось форесеачем , но заработало - забыл start прописать..
Сразу же появилась идея раз уже пошли ссесии то можно вписать в них как то IP юзера
($ip=getenv( "REMOTE_ADDR" );) и проверять по времени не сильно он усердствует поиском - нагружая Базу и давать ему передохнуть ежели что..

   
 
 автор: oppo   (03.12.2005 в 22:19)   письмо автору
 
   для: oppo   (03.12.2005 в 14:50)
 

Может кому надо ## Антифлуд ##
где принимаем

       session_start()     ;
 if (!isset($_SESSION['CommentTimer_'.$_SERVER['REMOTE_ADDR']])
    || time()-$_SESSION['CommentTimer_'.$_SERVER['REMOTE_ADDR']] < 3
    || time()-$_SESSION['CommentTimer_'.$_SERVER['REMOTE_ADDR']] > 300) {
        $approved = 0;
        $comment = "** У Вас  SPAM **\n".$comment;
    }
    unset($_SESSION['CommentTimer_'.$_SERVER['REMOTE_ADDR']]);
      echo $comment;

Где отправляем

$_SESSION['CommentTimer_'.$_SERVER['REMOTE_ADDR']] = time();

   
Rambler's Top100
вверх

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