|
|
|
| К авторам книги "Профессиональный сайт на PHP 5"
В Вашем примере поиска по каталогу (файл searchform.php) не указывается постраничная навигация при выдаче из базы MySQL большого количества строк.
Так как я пытаюсь именно по этому шаблону создать свой каталог продукции, прошу на данном примере показать, как реализовать здесь постраничную навигацию.
<?php
///////////////////////////////////////////////////
// Web-приложения для книги "Профессиональный сайт на PHP 5"
// 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (glsv@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
///////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
require_once("../admin/config.php");
$title="Поиск в каталоге";
include "../util/top.php";
?>
<h1 class=artnamepage>Поиск в каталоге</h1>
<form action=searchform.php method=post>
<input type="hidden" name="id_parent" value="<? echo $id_parent ?>">
<table border="0" align="center"><tr valign="top"><td>
<table border="0">
<tr valign="top">
<td width="130"><p class='textcat'>район</td>
<td>
<select class="input" type=text name=district>
<option value='none' <?php if($_POST['district']=='none') echo "selected"; ?>>не имеет значения
<option value='kanavinskii' <?php if($_POST['district']=='kanavinskii') echo "selected"; ?>>Канавинский
<option value='nizhegorodskii' <?php if($_POST['district']=='nizhegorodskii') echo "selected"; ?>>Нижегородский
<option value='sovetskii' <?php if($_POST['district']=='sovetskii') echo "selected"; ?>>Советский
<option value='priokskii' <?php if($_POST['district']=='priokskii') echo "selected"; ?>>Приокский
<option value='moskovskii' <?php if($_POST['district']=='moskovskii') echo "selected"; ?>>Московский
<option value='avtozavodskii' <?php if($_POST['district']=='avtozavodskii') echo "selected"; ?>>Автозаводский
<option value='leninskii' <?php if($_POST['district']=='leninskii') echo "selected"; ?>>Ленинский
<option value='sormovskii' <?php if($_POST['district']=='sormovskii') echo "selected"; ?>>Сормовский
</select>
</td>
</tr>
<tr>
<td><p class='textcat'>количество комнат</td>
<td><select class="input" type=text name=rooms>
<option value=0 <?php if($_POST['rooms']==0) echo "selected"; ?>>не имеет значения
<option value=1 <?php if($_POST['rooms']==1) echo "selected"; ?>>1
<option value=2 <?php if($_POST['rooms']==2) echo "selected"; ?>>2
<option value=3 <?php if($_POST['rooms']==3) echo "selected"; ?>>3
<option value=4 <?php if($_POST['rooms']==4) echo "selected"; ?>>4
<option value=5 <?php if($_POST['rooms']==5) echo "selected"; ?>>5
<option value=6 <?php if($_POST['rooms']==6) echo "selected"; ?>>6
</select>
</td>
</tr>
<tr>
<td><p class='textcat'>цена общая, руб.</td>
<td><p class='textcat'>от <input class="input" size=6 type=text name=price_min value=<?php echo $_POST['price_min']; ?>>
до <input class="input" size=6 type=text name=price_max value=<?php echo $_POST['price_max']; ?>>
</td>
</tr>
<tr>
<td><p class='textcat'>цена за кв.метр, руб.</p></td>
<td><p class='textcat'>от <input class="input" size=6 type=text name=pricemeter_min value=<?php echo $_POST['pricemeter_min']; ?>>
до <input class="input" size=6 type=text name=pricemeter_max value=<?php echo $_POST['pricemeter_max']; ?>>
</td>
</tr>
</table>
</td><td width="10%"> </td><td>
<table border="0">
<tr>
<td><p class='textcat'>этаж</td>
<td><input class="input" size="4" type=text name=floor value=<?php echo $_POST['floor']; ?>></td>
</tr>
<tr>
<td><p class='textcat'>сан. узел</td>
<td>
<select class="input" type=text name=su>
<option value='none' <?php if($_POST['su']=='none') echo "selected"; ?>>не имеет значения
<option value='separate' <?php if($_POST['su']=='separate') echo "selected"; ?>>раздельный
<option value='combined' <?php if($_POST['su']=='combined') echo "selected"; ?>>совмещённый
</select>
</td>
</tr>
<tr>
<td><p class='textcat'>лоджия/балкон</td>
<td>
<select class="input" type=text name=balcony>
<option value='none' <?php if($_POST['balcony']==0) echo "none"; ?>>не имеет значения
<option value='balcony' <?php if($_POST['balcony']=='balcony') echo "selected"; ?>>балкон
<option value='loggia' <?php if($_POST['balcony']=='loggia') echo "selected"; ?>>лоджия
</select>
</td>
</tr>
<tr>
<td><p class='textcat'>Характеристика</td>
<td>
<select class="input" type=text name=material>
<option value='none' <?php if($_POST['material']=='none') echo "selected"; ?>>не имеет значения
<option value='brick' <?php if($_POST['material']=='brick') echo "selected"; ?>>кирпичный
<option value='concrete' <?php if($_POST['material']=='concrete') echo "selected"; ?>>панельный
<option value='reconcrete' <?php if($_POST['material']=='reconcrete') echo "selected"; ?>>монолитный
</select>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td colspan=2>
<input class=button type=submit value=Искать>
</td>
</tr>
</table>
<input type=hidden name=search value=search>
</form>
<?php
// Cкрипт-обработчик поискового запроса
// из формы
if(isset($_POST['search']))
{
?>
<a name=table></a>
<?php
// Флаг равен true, если есть хотя бы один критерий поиска
$is_query = false;
// Проверяем наличие и число параметров поиска
// Район
$tmp1 = $tmp2 = $tmp3 = $tmp3 = $tmp4 = $tmp5 = $tmp6 = $tmp7 = $tmp8 =
$tmp9 = $tmp10 = $tmp11 = $tmp12 = $tmp13 = $tmp14 = $tmp15 = $tmp16="";
if(isset($_POST['district']) && $_POST['district']!='none')
$tmp1 = " and district='".$_POST['district']."'";
// Площадь
if(isset($_POST['square_o_min']))
$tmp2 = " and square_o>".$_POST['square_o_min'];
if(isset($_POST['square_o_max']))
$tmp3 = " and square_o<".$_POST['square_o_max'];
if(isset($_POST['square_j_min']))
$tmp4 = " and square_j>".$_POST['square_j_min'];
if(isset($_POST['square_j_max']))
$tmp5 = " and square_j<".$_POST['square_j_max'];
if(isset($_POST['square_k_min']))
$tmp6 = " and square_k>".$_POST['square_k_min'];
if(isset($_POST['square_k_max']))
$tmp7 = " and square_k<".$_POST['square_k_max'];
// Количество комнат
if(!empty($_POST['rooms'])) $tmp8 = " and rooms=".$_POST['rooms'];
// Этаж
if(!empty($_POST['floor'])) $tmp9 = " and floor=".$_POST['floor'];
// Сан. узел
if(!empty($_POST['su']) && $_POST['su'] != 'none')
$tmp10 = " and su='".$_POST['su']."'";
// Характеристика
if(isset($_POST['material']) && $_POST['material'] != 'none')
$tmp11 = " and material='".$_POST['material']."'";
// Цена
if(!empty($_POST['price_min']))
$tmp12 = " and price>".$_POST['price_min'];
if(!empty($_POST['price_max']))
$tmp13 = " and price<".$_POST['price_max'];
if(!empty($_POST['pricemeter_min']))
$tmp14 = " and pricemeter>".$_POST['pricemeter_min'];
if(!empty($_POST['pricemeter_max']))
$tmp15 = " and pricemeter<".$_POST['pricemeter_max'];
if(isset($_POST['balcony']) && $_POST['balcony'] != 'none')
$tmp16 = " and balcony='".$_POST['balcony']."'";
// Формируем запрос из переданных данных
$query = "SELECT * FROM product
WHERE hide='show'
".$tmp11.$tmp1.$tmp2.$tmp3.$tmp4.$tmp5.$tmp6.$tmp7.$tmp8.
$tmp9.$tmp10.$tmp12.$tmp13.$tmp14.$tmp15.$tmp16."
ORDER BY pos";
// Выполняем SQL-запрос
$prt = mysql_query($query);
if(!$prt) puterror("Ошибка при обращении к таблице риэлторских услуг");
// количество рядов в наборе должно быть больше нуля
if (mysql_num_rows($prt)>0)
{
?>
<table class="table" border="1" cellpadding="3" cellspacing="0" width="100%" bordercolordark="white" bordercolorlight="silver">
<tr class="zagtrtable" align="center">
<td height="20">Кол.комн.</td>
<td>Район</td>
<td>Адрес</td>
<td>(О)</td>
<td>(Ж) </td>
<td>(К)</td>
<td>Этаж</td>
<td>Эт.дома</td>
<td>Материал</td>
<td>С/У</td>
<td>Лоджия/Балкон</td>
<td>Цена,м.кв.</td>
<td>Цена, общ. </td>
<td>Валюта</td>
<td>Прим.</td>
</tr>
<?
while($par = mysql_fetch_array($prt))
{
// Определяем район
switch ($par['district'])
{
case 'kanavinskii':
$distr = "Канавинский.";
break;
case 'nizhegorodskii':
$distr = "Нижегородский";
break;
case 'sovetskii':
$distr = "Советский";
break;
case 'priokskii':
$distr = "Приокский";
break;
case 'moskovskii':
$distr = "Московский";
break;
case 'avtozavodskii':
$distr = "Автозаводский";
break;
case 'leninskii':
$distr = "Ленинский";
break;
case 'sormovskii':
$distr = "Сормовский";
break;
}
// Определяем материал дома
switch ($par['material'])
{
case 'brick':
$_POST['material'] = "кирп.";
break;
case 'concrete':
$_POST['material'] = "панел.";
break;
case 'reconcrete':
$_POST['material'] = "монолит.";
break;
}
// Определяем тип сан.узла
switch ($par['su'])
{
case 'separate':
$_POST['su'] = "разд.";
break;
case 'combined':
$_POST['su'] = "сов.";
break;
}
// Определяем наличие балкона
switch ($par['balcony'])
{
case 'balcony':
$_POST['balcony'] = "балкон";
break;
case 'loggia':
$_POST['balcony'] = "лоджия";
break;
}
echo "<tr>
<td>".$par['rooms']."</td>
<td>$distr</td>
<td>".$par['address']."</td>
<td>".$par['square_o']."</td>
<td>".$par['square_j']."</td>
<td>".$par['square_k']."</td>
<td>".$par['floor']."</td>
<td>".$par['floorhouse']."</td>
<td>".$_POST['material']."</td>
<td>".$_POST['su']."</td>
<td>".$_POST['balcony']."</td>
<td>".$par['pricemeter']."</td>
<td>".$par['price']."</td>
<td>".$par['currency']."</td>
<td>".$par['note']."</td>
</tr>";
}
}
else echo "Поиск не дал результатов.
Попробуйте изменить критерии поиска.";
echo "</table>";
}
include "../util/bottom.php";
?>
|
| |
|
|
|
|
|
|
|
для: monolit
(08.02.2008 в 14:06)
| | используйте в запросе конструкцию limit $start,$end | |
|
|
|
|
|
|
|
для: monolit
(08.02.2008 в 14:06)
| | на самом деле все что нужно это всего выбранных, текущая страница и сколько выводить на страницу. | |
|
|
|
|
|
|
|
для: vbps
(08.02.2008 в 15:12)
| | И как это здесь реализовать? Покажите, пожалуйста! Я просмотрел все ссылки на эту тему, но как это именно здесь сделать - не понимаю, так как программист из меня очень начинающий. | |
|
|
|