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

Форум PHP

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

 

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

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

тема: Народ, помогите с доработкой поискового скрипта
 
 автор: mjc66   (12.08.2007 в 05:05)   письмо автору
 
 

В настоящий момент работу моего скрипта можно посмотреть тут: http://www.el-eko.ru/State_Standard_Samples.php или на любой другой странице каталога товаров. Мне бы хотелось добавить в таблицу результата поиска еще одну колонку, назовем ее к примеру "Найти на странице" в которой бы располагалась ссылка, которая бы переадресовывала бы, конкретно, к странице на которой расположена найденная поиском позиция и при этом эта позиция еще бы и выделялась каким-нибудь цветом. Сдается мне, что для этого должны задействоваться "id" товарных позиций, которые имеются у меня в БД под MySQL. Код поиковика:

<?php
//соединение с MySQL
include "config_mysql.php";

if( ! 
function_exists 'mysql_real_escape_string' ) )
{
   function 
mysql_real_escape_string$value )
   { return 
addslashes($value); }
}

//переменные
@$id =$_GET['id'];
@
$name =  mysql_real_escape_string($_GET['name']);
@
$group_production =$_GET['group_production'];

//checkboxes
if ( empty($name ) )
{
   
// не заполнено поле
   
print("<div class='search' align='center'>
    <font color='#CC0000'><b>Необходимо заполнить поле поиска!</b></font></div>"
);
} else {

if (isset(
$id)) {
   
$srch='id';} //id - имя столбца в таблице
   
if (isset($name)) {
       
$srch='name';} //name - имя столбца в таблице
       
if (isset($group_production)) {
           
$srch='group_production';} //group_production - имя столбца в таблице
               

               
@$query "SELECT * FROM tovary WHERE $srch like '%".mysql_escape_string(addslashes($name))."%' ";
               
$result mysql_query($query) or die('Ошибка запроса');

               if ( 
mysql_num_rows($result) == ) {
                   print(
"<div class='search' align='center'>
    <font color='#CC0000'><b>По вашему запросу ничего не найдено! Попробуйте изменить запрос.</b></font></div>"
);
               } else {
                   print(
"<table border='1' cellspacing='1' cellpadding='1' class='search'><caption align=top class='search'>Результат поиска:</caption><tr><td width='55%' class='search_top' align='center'><b>Наименование товара</b></td><td width='30%' class='search_top' align='center'><b>Группа товаров</b></td></tr>");
                   
// Переменная i следит чередование цвета
                   
$i 0;
                   while(
$t = @mysql_fetch_array($result)) {
                       
$i++;
                       
$class = ( $i == ) ? "odd" "even";
                       print(
'
  <style> 
           .odd{background:99FFCC}  
           .even{background:FFFFCC}  
           </style>
         <tr class="'
.$class.'">
          <td  width="55%" class="search"><font color="#000000">'
.$t[name].'</font></td>
          <td  width="30%" class="search"><font color="#000000">'
.$t[group_production].'</font></td>
         </tr>'
);
                   }

                   print(
"</table>");
               }
}
?>

Помогите с реализацией этой идеи!!! Небольшое дополнение, незнаю, правда насколько нужно: все таблицы в каталоге с товаром формирует тоже php-скрипт по запросу к БД. А вот еще, я в принципе не настаиваю на создании новой колонки в таблице результата поиска, пусть бы такой ссылкой являлось бы значение из уже имеющейся колонки "Наименование товара".

   
 
 автор: Shiva   (12.08.2007 в 06:06)   письмо автору
 
   для: mjc66   (12.08.2007 в 05:05)
 

Ну так в чем проблема? Передавайте по ссылке id товара и проверяйте в цикле вывода результатов запроса. Если совпало, пишите какой-нибудь ccs-класс active.

   
 
 автор: mjc66   (12.08.2007 в 06:28)   письмо автору
 
   для: Shiva   (12.08.2007 в 06:06)
 

Передать "id" по ссылке:

<td  width="55%" class="search"><font color="#000000"><a class=1 href=$t[id]>'.$t[name].'</a></font></td>
Я правильно понял? А вот что касается проверки в цикле, то здесь я не совсем понимаю как правильно сделать, т.к. в php плохо разбираюсь, но вариант такой:
if(!is_numeric($_GET['id'])) die('Это не число');

$query=mysql_query("SELECT * FROM production WHERE id='".intval($_GET['id'])."'") or die(mysql_error());
if(mysql_num_rows($query)<1)die('Ничего не найдено');
echo mysql_result($query,0,'name');

   
 
 автор: Shiva   (12.08.2007 в 07:19)   письмо автору
 
   для: mjc66   (12.08.2007 в 06:28)
 

Как у вас выглядит сейчас вывод товаров? Не в поиске, а в каталоге?

   
 
 автор: mjc66   (12.08.2007 в 07:23)   письмо автору
 
   для: Shiva   (12.08.2007 в 07:19)
 

Вот:

<?php
//соединяемся с MySQL
include "config_mysql.php";

//checkboxes  
if (!empty($id)) $srch='id'//id - имя столбца в таблице  
if (!empty($name)) $srch='name'//name - имя столбца в таблице  
if (!empty($group_production)) $srch='group_production'//group_production - имя столбца в таблице

//выводим заголовок таблицы
echo "<table border='1' cellspacing='1' cellpadding='1' class='3'>";
echo 
"<tr><td class='3' align='center'><b>Наименование товара</b></td></tr>";

//запрос
$r mysql_query("SELECT * FROM tovary WHERE group_production = 'ГСО(Государственные Стандартные Образцы)' LIMIT 0,50 ");

//выводим таблицу  

echo "<style>   
            .odd{background:99FFCC}    
            .even{background:FFFFCC}    
            </style>"


while(
$rows=mysql_fetch_array($r)){  
  
$i++; 
  
$class = ( $i == ) ? "odd" "even";  
  echo 
"<tr class=".$class."><td>".$rows[name]."</td></tr>";  


echo 
"</table>"
?>

   
 
 автор: Shiva   (12.08.2007 в 09:11)   письмо автору
 
   для: mjc66   (12.08.2007 в 07:23)
 

У вас запрос всегда

"SELECT * FROM tovary WHERE group_production = 'ГСО(Государственные Стандартные Образцы)' LIMIT 0,50 ")

?
Тогда зачем вам

if (!empty($id)) $srch='id'; //id - имя столбца в таблице   
if (!empty($name)) $srch='name'; //name - имя столбца в таблице   
if (!empty($group_production)) $srch='group_production'; //group_production - имя столбца в таблице 

?

И у вас единственная группа товаров - 'ГСО(Государственные Стандартные Образцы)'?

   
 
 автор: mjc66   (12.08.2007 в 09:19)   письмо автору
 
   для: Shiva   (12.08.2007 в 09:11)
 

Для данной группы товаров запросы отличаются лишь изменением LIMIT, т.е. выводятся последующие 50-т элементов на страницу. Для других групп товара запрос меняется в зависимости к какой группе товара идет запрос с аналогичным изменением LIMIT

   
 
 автор: Shiva   (12.08.2007 в 09:27)   письмо автору
 
   для: mjc66   (12.08.2007 в 09:19)
 

Вы меня запутали. У вас что, для каждой группы товаров свой скрипт вывода?

   
 
 автор: mjc66   (12.08.2007 в 11:16)   письмо автору
 
   для: Shiva   (12.08.2007 в 09:27)
 

Вы правильно меня поняли-так и есть, для каждой группы товаров свой скрипт вывода, но отличаются они только в деталях.

   
 
 автор: Shiva   (13.08.2007 в 02:53)   письмо автору
 
   для: mjc66   (12.08.2007 в 11:16)
 

Тогда для начала следовало бы сделать один скрипт вывода для всех групп.

Я имел в виду:
1) В поиске выводите ссылки вида

catalog.php?group_id=$group_id&product_id=$product_id


2) На странице вывода проверяете в цикле, не равно ли id товара $_GET["product_id"]. Если равно, выводите CSS-класс с выделением цветом и т.п.

   
Rambler's Top100
вверх

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