|
|
|
| В настоящий момент работу моего скрипта можно посмотреть тут: 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) == 0 ) {
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 % 2 == 0 ) ? "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-скрипт по запросу к БД. А вот еще, я в принципе не настаиваю на создании новой колонки в таблице результата поиска, пусть бы такой ссылкой являлось бы значение из уже имеющейся колонки "Наименование товара". | |
|
|
|
|
|
|
|
для: mjc66
(12.08.2007 в 05:05)
| | Ну так в чем проблема? Передавайте по ссылке id товара и проверяйте в цикле вывода результатов запроса. Если совпало, пишите какой-нибудь ccs-класс active. | |
|
|
|
|
|
|
|
для: 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');
|
| |
|
|
|
|
|
|
|
для: mjc66
(12.08.2007 в 06:28)
| | Как у вас выглядит сейчас вывод товаров? Не в поиске, а в каталоге? | |
|
|
|
|
|
|
|
для: 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 % 2 == 0 ) ? "odd" : "even";
echo "<tr class=".$class."><td>".$rows[name]."</td></tr>";
}
echo "</table>"
?>
|
| |
|
|
|
|
|
|
|
для: 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 - имя столбца в таблице
|
?
И у вас единственная группа товаров - 'ГСО(Государственные Стандартные Образцы)'? | |
|
|
|
|
|
|
|
для: Shiva
(12.08.2007 в 09:11)
| | Для данной группы товаров запросы отличаются лишь изменением LIMIT, т.е. выводятся последующие 50-т элементов на страницу. Для других групп товара запрос меняется в зависимости к какой группе товара идет запрос с аналогичным изменением LIMIT | |
|
|
|
|
|
|
|
для: mjc66
(12.08.2007 в 09:19)
| | Вы меня запутали. У вас что, для каждой группы товаров свой скрипт вывода? | |
|
|
|
|
|
|
|
для: Shiva
(12.08.2007 в 09:27)
| | Вы правильно меня поняли-так и есть, для каждой группы товаров свой скрипт вывода, но отличаются они только в деталях. | |
|
|
|
|
|
|
|
для: mjc66
(12.08.2007 в 11:16)
| | Тогда для начала следовало бы сделать один скрипт вывода для всех групп.
Я имел в виду:
1) В поиске выводите ссылки вида
catalog.php?group_id=$group_id&product_id=$product_id
|
2) На странице вывода проверяете в цикле, не равно ли id товара $_GET["product_id"]. Если равно, выводите CSS-класс с выделением цветом и т.п. | |
|
|
|