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

Форум MySQL

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

 

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

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

тема: Поиск
 
 автор: Wolfram   (03.07.2007 в 09:39)   письмо автору
10.4 Кб
 
 

Я хочу сделать на своём сайте поиск по примеру "поиска по каталогу", который описан в книге "PHP 5 Практика создания веб-сайтов". Скрипт формы для поиска в приложении.
Система поиска на моём сайте должна искать по трём параметрам: категория, вид товара и цена. Я изменил searchform.php, чтобы подогнать под эти параметры. Но ищет он только по цене. И когда вводишь что-нибудь в строке "вид товара", выдается вся таблица с товарами, даже теми которые не подходят по параметру. Я думаю, что здесь проблема в том, что я неправильно оформил скрипт, а именно ту часть, где про вид товара. Но как изменить его я не знаю. Помогите с советом.

Скрипт у меня выглядит так:

<?php

  
// Устанавливаем соединение с базой данных
  
require_once("config.php");
  
$title="Поиск в каталоге";
  include 
"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=categoria>
     <option value='none' <?php if($_POST['categoria']=='none') echo "selected"?>>Во всех категориях
     <option value='avtomobili' <?php if($_POST['categoria']=='avtomobili') echo "selected"?>>Автомобили
     <option value='apteki' <?php if($_POST['categoria']=='apteki') echo "selected"?>>Аптеки
     <option value='banki' <?php if($_POST['categoria']=='banki') echo "selected"?>>Банки
     <option value='dvd' <?php if($_POST['categoria']=='dvd') echo "selected"?>>DVD
    </select>
  </td>

<tr>
  <td><p class='textcat'>Вид товара</td>
  <td><input class="input" size="8" type=text name=vid
  <option value = <?php echo $_POST['vid']; ?>></td>
</tr>
<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>
        <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 $tmp4 ="";
  if(isset(
$_POST['categoria']) && $_POST['categoria']!='none')
     
$tmp1 " and categoria='".$_POST['categoria']."'";
//Вид
     
if(!isset($_POST['vid']))
      
$tmp2 " and vid=".$_POST['vid']."'";
  
// Цена
  
if(!empty($_POST['price_min']))
    
$tmp3 " and price>".$_POST['price_min'];
  if(!empty(
$_POST['price_max']))
    
$tmp4 " and price<".$_POST['price_max'];



  
// Формируем запрос из переданных данных
  
$query "SELECT * FROM product
            WHERE hide='show'
            "
.$tmp1.$tmp2.$tmp3.$tmp4."
            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>Категория</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['categoria'])
      {
        case 
'avtomobili':
          
$categ "Автомобили";
          break;
        case 
'apteki':
          
$categ "Аптеки";
          break;
        case 
'banki':
          
$categ "Банки";
          break;
        case 
'DVD':
          
$categ "DVD";
          break;

      }

      echo 
"<tr>

                <td>
$categ</td>
<td>"
.$par['vid']."</td>
                <td>"
.$par['price']."</td>
                <td>"
.$par['marka']."</td>
                  <td>"
.$par['strana']."</td>
                   <td>"
.$par['note']."</td>
                    <td>"
.$par['photo']."</td>
                     <td>"
.$par['firma']."</td>
                      <td>"
.$par['address']."</td>
              </tr>"
;
    }
  }
  else echo 
"Поиск не дал результатов.
             Попробуйте изменить критерии поиска."
;
  echo 
"</table>";
}

include 
"/bottom.php";
?>

   
 
 автор: Trianon   (03.07.2007 в 09:52)   письмо автору
 
   для: Wolfram   (03.07.2007 в 09:39)
 


<td><input class="input" size="8" type=text name=vid value="<?php 
          
echo htmlspecialchars($_POST['vid']); ?>"></td> 

   
 
 автор: Wolfram   (03.07.2007 в 14:16)   письмо автору
 
   для: Trianon   (03.07.2007 в 09:52)
 

я вставил

<td><input class="input" size="8" type=text name=vid value="<?php
          
echo htmlspecialchars($_POST['vid']); ?>"></td>



вместо

<tr>
  <td><p class='textcat'>Вид товара</td>
  <td><input class="input" size="8" type=text name=vid
  <option value = <?php echo $_POST['vid']; ?>></td>
</tr>
<tr>

но результат тот же. По виду товара не ищет...только по категории и цене...
может быть проблема с таблицей..? или код неправильный?

   
 
 автор: Trianon   (03.07.2007 в 19:19)   письмо автору
 
   для: Wolfram   (03.07.2007 в 14:16)
 


if(!empty($_POST['vid'])) 
      $tmp2 = " and vid=".$_POST['vid']."'"; 

   
 
 автор: Wolfram   (04.07.2007 в 07:25)   письмо автору
 
   для: Trianon   (03.07.2007 в 19:19)
 

спасибо. получилось!!! супер!!

   
Rambler's Top100
вверх

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