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

Форум MySQL

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

 

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

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

тема: Постраничная навигация при выдаче из MySQL
 
 автор: monolit   (08.02.2008 в 14:06)   письмо автору
 
 

К авторам книги "Профессиональный сайт на 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%">&nbsp;</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(!
$prtputerror("Ошибка при обращении к таблице риэлторских услуг");
  
// количество рядов в наборе должно быть больше нуля
  
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"
?>

   
 
 автор: KPETuH   (08.02.2008 в 14:28)   письмо автору
 
   для: monolit   (08.02.2008 в 14:06)
 

используйте в запросе конструкцию limit $start,$end

   
 
 автор: vbps   (08.02.2008 в 15:12)   письмо автору
 
   для: monolit   (08.02.2008 в 14:06)
 

на самом деле все что нужно это всего выбранных, текущая страница и сколько выводить на страницу.

   
 
 автор: monolit   (08.02.2008 в 17:08)   письмо автору
 
   для: vbps   (08.02.2008 в 15:12)
 

И как это здесь реализовать? Покажите, пожалуйста! Я просмотрел все ссылки на эту тему, но как это именно здесь сделать - не понимаю, так как программист из меня очень начинающий.

   
Rambler's Top100
вверх

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