[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Поиск строки целиком
ByLex
Всем привет. Есть самописный движок. Есть файл отвечающий за поиск search.php. Есть артикул товара, например 12a2hr-12 и есть артикул 12a2hr-25. При поиске выдает два результата. И тот и тот. Как делать поиск строки целиком? Т.е.е если я ввел 12a2hr-12, то и результат выдачи был соответственно один 12a2hr-12. Товаров много и у всех похожий артикул....и в выдаче идет куча похожих товаров...Необходимо реализовать поиск строки целиком. Но сделать не могу. За поиск артикула товара отвечает type1, здесь и прописывается артикул товара в базе mysql. Подскажите пожалуйста. Помогите дописать поиск. Спасибо.

<?php

function
print_cat_path($id) {
$res = mysql_query("select idp,path from grandi_catalog where id = '$id'");
while (list($idp, $path) = mysql_fetch_array($res)) {
if ($path) {
$pth = $path."/".$pth;
}
else {
$pth = $id."/".$pth;
}
$res = mysql_query("select idp,path from grandi_catalog where id = '$idp'");
}
return $pth;
}

?>

<table width="100%">

<?php
if (issets($str)) {
$str = trim($str);
$all_counter = 0;
$sql = '( SELECT 1, isprod, id, name, concat( string1, string2, string3, string4, string5, string6, string7, string8, string6, string10 ) , concat( text1 ) , '
. ' MATCH ( name, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'
. ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
. ' IN BOOLEAN'
. ' MODE ) AS sort'
. ' FROM grandi_catalog'
. ' WHERE MATCH ( name, type1, string1, string2, string3, string4, string5, string6, string7, string8, string6, string10, text1 )'
. ' AGAINST ( \'+'.str_replace(' ', '* +', $str).'*\''
. ' IN BOOLEAN'
. ' MODE )
and hide != 1
'

. ' GROUP BY name )'
;
$result = mysql_query($sql);

$j = 1;
while (list($num,$isprod,$id,$name,$info,$text)=@mysql_fetch_array($result)) {
if ($num == 1){
$link = "/".print_cat_path($id);
}
else if($num == 2){
$link = "/".$info."/";
}
else if($num == 3) {
if ($isprod == 1) {
$link = "/news/".$id."/";
}
}

?>

<tr>
<
td valign="top"><strong> <?= sprintf("%02d", $j) ?> </strong></td>
<
td valign="top" width="100%">

<?php
if ($info || $num != 2) {
echo "<a href=\"".$link."\">".eregi_replace($str, "<font color='#00214C'>".$str."</font>", $name)."</a><br>";
}
while(ereg("  ",$text)){
$text = ereg_replace("  "," ",$text);
}
$text = ereg_replace(" "," ",$text);
$text = explode(" ",brp_repl($text));
$string = "";
for($f=0; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
while($string){
if(eregi($str,$string)){
$tmp .= '...'.eregi_replace($str,"<font color='#00214C'>".$str."</font>",$string).'...';
}
if($tmp) print $tmp."<br>";
$tmp = "";
$string = "";
if($text[$f]) $string = $text[$f]." ";
$f++;
for( ; $f%10 != 9 and isset($text[$f]); $f++) $string .= $text[$f]." ";
}
?>
<a href="<?=$link?>">http://<?= $HTTP_HOST.$link?></a>
</td>

</
tr>
<
tr><td colspan="2"> </td></tr>

<?php
$j++;
}

$part_old = $part;
$j++;

$all_counter = $all_counter + $j;
if ($all_counter == 2) {
?>

<tr><td colspan="2" align="center">По Вашему запросу ничего не найдено. Попробуйте сформулировать свой запрос по-другому.</td></tr>

<?php
}
?>

<?php

}
?>

</table>




Спустя 1 минута, 10 секунд (2.03.2011 - 11:47) ByLex написал(а):
wink.gif

Спустя 12 минут, 43 секунды (2.03.2011 - 12:00) Adil написал(а):
Структуру базы данных покажи

Спустя 57 минут, 16 секунд (2.03.2011 - 12:57) ByLex написал(а):
-- phpMyAdmin SQL Dump
-- version 2.6.1
-- http://www.phpmyadmin.net
--
-- Хост: localhost
-- Время создания: Мар 02 2011 г., 12:21
-- Версия сервера: 5.0.45
-- Версия PHP: 5.2.4
--
-- БД: `kardan`
--

-- --------------------------------------------------------

--
-- Структура таблицы `zaphasti_catalog`
--

CREATE TABLE `zaphasti_catalog` (
`id` int(11) NOT NULL auto_increment,
`idp` int(11) NOT NULL default '0',
`name` varchar(255) NOT NULL default '',
`path` varchar(30) NOT NULL default '',
`isprod` char(1) NOT NULL default '0',
`sort` int(11) NOT NULL default '0',
`hide` char(1) NOT NULL default '0',
`idheaders` int(11) NOT NULL default '0',
`photo` text NOT NULL,
`links` text NOT NULL,
`type1` varchar(255) NOT NULL default '0',
`type2` varchar(255) NOT NULL default '0',
`type3` varchar(255) NOT NULL default '0',
`string1` varchar(255) NOT NULL default '',
`string2` varchar(255) NOT NULL default '',
`string3` varchar(255) NOT NULL default '',
`string4` varchar(255) NOT NULL default '',
`string5` varchar(255) NOT NULL default '',
`string6` varchar(255) NOT NULL default '',
`string7` varchar(255) NOT NULL default '',
`string8` varchar(255) NOT NULL default '',
`string9` varchar(255) NOT NULL default '',
`string10` varchar(255) NOT NULL default '',
`number1` double NOT NULL default '0',
`number2` double NOT NULL default '0',
`number3` double NOT NULL default '0',
`number4` double NOT NULL default '0',
`new` int(4) NOT NULL default '0',
`text1` text NOT NULL,
`text2` text NOT NULL,
`text3` text NOT NULL,
`text4` text NOT NULL,
`text5` text NOT NULL,
`hasmore` enum('y','n') NOT NULL default 'y',
`ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
`brand_id` int(11) NOT NULL default '0',
`nal` int(4) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idp` (`idp`),
KEY `id` (`id`,`idp`),
KEY `idp_2` (`idp`,`isprod`),
KEY `ts` (`ts`)
) ENGINE=MyISAM AUTO_INCREMENT=3994 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3994 ;

--
-- Дамп данных таблицы `zaphasti_catalog`
--

INSERT INTO `zaphasti_catalog` VALUES (1, 0, 'Каталог', 'catalog', '0', 1, '1', 0, 'Фотографии', 'Полезныессылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-01-29 13:26:15', 3875, 0);
INSERT INTO `zaphasti_catalog` VALUES (3924, 1, 'Alfa Romeo', 'alafa-romeo', '0', 29, '0', 0, '1280470707', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:35:58', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3984, 1, 'Audi', 'audi', '0', 31, '0', 0, '1298990167', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:36:07', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3985, 1, 'BMW', 'bmw', '0', 32, '0', 0, '1298990180', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:36:20', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3986, 1, 'Chery', 'chery', '0', 33, '0', 0, '1298990193', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:36:33', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3987, 1, 'Chevrolet', 'chevrolet', '0', 34, '0', 0, '1298990207', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:36:47', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3988, 1, 'Chrysler', 'chrysler', '0', 35, '0', 0, '1298990218', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:36:58', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3989, 3924, 'Alfa Romeo 145/146 (94-)', 'Alfa-Romeo-145-146-94', '0', 36, '0', 0, '1298990257', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:37:37', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3990, 3924, 'Alfa Romeo 155 (92-96)', 'alfa-romeo-155-92-96', '0', 37, '0', 0, '1298990292', 'Полезные ссылки', '0', '0', '0', '', '', '', '', '', '', '', '', '', '', 0, 0, 0, 0, 0, '', '', '', '', '', 'y', '2011-03-01 17:38:12', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3991, 3989, 'A 155 БАЛКА СУППОРТА РАДИАТ НИЖН В СБОРЕ', '', '1', 38, '0', 1, '1298990404', '', 'AF15592-410', '60584051', 'шт.', '', '', '', '', '', '', '', '', '', '', 2184, 0, 0, 0, 0, '', '', '<br />', '', '', 'y', '2011-03-01 17:40:04', 0, 0);
INSERT INTO `zaphasti_catalog` VALUES (3993, 3989, 'A 155 КАПОТ', '', '1', 39, '0', 1, '1298991521229_1[1].jpg', '', 'AF15592-330', '60617712', '', '', '', '', '', '', '', '', '', '', '', 11056, 0, 0, 0, 0, '', '', '<br />', '', '', 'y', '2011-03-01 17:58:41', 0, 0);


Спустя 2 минуты, 17 секунд (2.03.2011 - 13:00) ByLex написал(а):
AF15592-410 и AF15592-330. это артикулы. Мне кажется что при поиске обрезает до знака тире. тоесть есть артикул AF15592-410, при поиске он обрезается до AF15592, и выдает соответственно два результата. Как исправить очень нужна помощь!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.