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

Форум MySQL

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

 

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

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

тема: Сортировка после поиска по базе
 
 автор: Front   (13.04.2007 в 13:33)   письмо автору
 
 

Всем привет и хорошего настроения!

Возникла проблема:
Есть скрипт searchkvar.php который принимает данные и формы поиска и выводит их из бд:
<?php
include "config.php";

  if(!empty(
$_POST['objectid']))  $where[] =  "objectid = ".$_POST['objectid'];  
  if(!empty(
$_POST['mkomn'])) $where[] = "mkomn = ".$_POST['mkomn']; 
  if(!empty(
$_POST['area'])) $where[] = "area like '%".$_POST['area']."%'"
  if(!empty(
$_POST['floor'])) $where[] = "floor rlike '^".$_POST['floor']."/'";
  if(!empty(
$_POST['sall_min'])) $where[] = "sall >= ".$_POST['sall_min']; 
  if(!empty(
$_POST['sall_max'])) $where[] = "sall <= ".$_POST['sall_max']; 
  if(!empty(
$_POST['kitchen_min'])) $where[] = "kitchen >= ".$_POST['kitchen_min']; 
  if(!empty(
$_POST['kitchen_max'])) $where[] = "kitchen <= ".$_POST['kitchen_max'];  
    if(!empty(
$_POST['price_min'])) $where[] = "price >= ".$_POST['price_min']; 
  if(!empty(
$_POST['price_max'])) $where[] = "price <= ".$_POST['price_max']; 
   if(!empty(
$_POST['metro'])) $where[] = "metro like '%".$_POST['metro']."%'";
   if(!empty(
$_POST['phone'])) $where[] = "phone like '%".$_POST['phone']."%'";
  if(!empty(
$_POST['house'])) $where[] = "house like '%".$_POST['house']."%'";
  if(!empty(
$_POST['wc'])) $where[] = "wc like '%".$_POST['wc']."%'";
  if(!empty(
$_POST['photoid'])) $where[] = "photoid = ".$_POST['photoid']; 

global 
$where;

echo 
"<a href=searchkvar.php?sort=area>Сортировка по району</a>";

  
$query "select * from kvarts left join 
db_photo on kvarts.objectid = db_photo.
photoid where "
.implode(" AND ",$where).
order by 
$sort"

$result mysql_query($query);
if (!
$result) exit(mysql_error());
if (
mysql_num_rows($result) == 0)
{
echo 
"Извините, но по вашему запросу ничего не найдено. Попробуйте еще раз.<br><br>
}
$num_results = mysql_num_rows ($result);
echo "
Найдено записей".$num_results;
echo "
\n<table class=content border=1 align=center cellpadding=1 cellspacing=0>";
echo "
<tr>";
echo "
<td class=2 align=center><b>В<br>ы<br>б<br>о<br>р</b></td>";
echo "
<td class=2 align=center><b><br>о<br>б<br>ъ<br>е<br>к<br>т<br>а</b></td>";
echo "
<td class=2 align=center><b>К<br>о<br>л<br>-<br>в<br>о<br> <br>к<br>о<br>м<br>н<br>а<br>т</b></td>";
echo "
<td class=2 align=center><b>Район</b></td>";
echo "
<td class=2 align=center><b>Адрес</b></td>";
echo "
<td class=2 align=center><b>Э<br>т<br>а<br>ж</b></td>";
echo "
<td class=2 align=center><b>О<br>б<br>щ<br>а<br>я<br> <br>п<br>л<br>о<br>щ<br>а<br>д<br>ь</b></td>";
echo "
<td class=2 align=center><b>Жилая площадь</b></td>";
echo "
<td class=2 align=center><b>К<br>у<br>х<br>н<br>я</b></td>";
echo "
<td class=2 align=center><b>Метро</b></td>";
echo "
<td class=2 align=center><b>Т<br>е<br>л<br>е<br>ф<br>о<br>н</b></td>";
echo "
<td class=2 align=center><b>Тип дома</b></td>";
echo "
<td class=2 align=center><b>С<br>а<br>н<br>у<br>з<br>е<br>л</b></td>";
echo "
<td class=2 align=center><b>Цена<br>USD</b></td>";
echo "
<td class=2 align=center><b>Дополнительно</b></td>";
echo "
<td class=2 align=center><b>Ф<br>о<br>т<br>о</b></td></tr>";
for (
$i=0; $i < $num_results$i++)
{
if(
$i%2==0) $color='white'; 
    else 
$color = 'pink';  
$arr_quest=mysql_fetch_array ($result);
if (empty(
$arr_quest["photo1_os"]))
{
$fot="<img src=images/emp.jpg alt='У объекта нет фотографий'>";
}
else
{
$fot="<a href=view.php?photoid=".
$arr_quest['photoid']." target=_blank 
onclick
=window.open(this.href,this.target,
'width=1100,height=190,location=no,
toolbar=no,menubar=no,status=no'
);event.
returnValue false;><img src=images/img.
jpg border=0 alt='Объект содержит 
фотографии'
></a>";
}
echo "
<tr>";
echo "
<form action=print_kvar.php method=post>";
echo "
<td bgcolor=$color class=3><input type=checkbox name=\"id[]\" value=".$arr_quest["objectid"]." ></td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["objectid"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["mkomn"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["area"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["address"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["floor"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["sall"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["slive"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["kitchen"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["metro"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["phone"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["house"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["wc"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["price"]."</td>";
echo 
"<td bgcolor=$color class=3 align=center>".$arr_quest["dop"]."</td>";
echo 
"<td class=3 align=center>$fot</td></tr>";
};
echo 
"</td></tr>";
echo 
"<input class=2 type=submit value='Распечатать выбранные'>";
echo 
"<br>";
echo 
"<br>";
echo 
"<input class=2 type=reset value='Сбросить'>";
echo 
"</form>";
echo 
"</table>";
?>


Хочется чтобы после вывода результатов, можно было отсортировать по столбцу который выберет пользователь. global $where делаю чтобы количество записей после перехода по ссылке оставалось таким же.!
Подсобите, заранее благодарен.

   
 
 автор: Loki   (13.04.2007 в 13:36)   письмо автору
 
   для: Front   (13.04.2007 в 13:33)
 

Выполняйте сортировку в момент запроса к БД

   
 
 автор: Front   (13.04.2007 в 13:38)   письмо автору
 
   для: Loki   (13.04.2007 в 13:36)
 

Да но мне нужно отсортировать уже результат запроса (выполненного)!

   
 
 автор: Trianon   (13.04.2007 в 13:41)   письмо автору
 
   для: Front   (13.04.2007 в 13:38)
 

Зачем?

   
 
 автор: Front   (13.04.2007 в 13:43)   письмо автору
 
   для: Trianon   (13.04.2007 в 13:41)
 

Чтобы было удобно просматривать результаты!

   
 
 автор: Trianon   (13.04.2007 в 13:46)   письмо автору
 
   для: Front   (13.04.2007 в 13:43)
 

Для этого вполне можно обойтись сортировкой средствами SQL.

Вы просите решить Вашу задачу, извините, через задницу.
Должны же быть какие-то аргументы в пользу такого подхода.

   
 
 автор: Front   (13.04.2007 в 14:19)   письмо автору
 
   для: Trianon   (13.04.2007 в 13:46)
 

Хорошо, рассмотрим пример. Пользователь зашел на сайт чтобы купить себе квартиру, машину, неважно что. Он попадает на форму с поиском где вводит параметры соответствующие его покупке и указывает, что ему нужно отсортировать результаты по цене.

Идет запрос к базе данных и пользователю выводятся результаты соответствующие параметрам указанным в форме поиска.
Вдруг у него возникает желание отсортировать уже полученные результаты не по цене, как он указал ранее, а допустим по типу дома (если например брать мой скрипт).

В этом случае у пользователя нету варианта, кроме одного - Вернуться к форме поиска - изменить тип сортировки на "сортировать по - ТИПУ ДОМА".

Разве не удобнее, нажать на кнопку на странице с результатами и осуществить сортировку. Без возврата на форму поиска.

Вот такие вот аргументы. :-))

   
 
 автор: Trianon   (13.04.2007 в 14:32)   письмо автору
 
   для: Front   (13.04.2007 в 14:19)
 

>Разве не удобнее, нажать на кнопку на странице с результатами и осуществить сортировку. Без возврата на форму поиска.

Конечно. Но скрипт, отрабатывающий эту кнопку всё равно будет вынужден запросить данные заново. Пользователь же их руками в массив не введет? А при новом запросе скрипту ничего не мешает указать новый порядок.

   
 
 автор: cheops   (13.04.2007 в 15:19)   письмо автору
 
   для: Front   (13.04.2007 в 13:33)
 

Используйте передачу данных методом GET, а не POST - можно будет и ссылаться на результаты поиска и изменить один из GET-параметров, ответственных за сортировку.

   
Rambler's Top100
вверх

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