Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск строки целиком 
:(
    Опции темы
bylex
Дата 2.3.2011, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 22.11.2008

Репутация: нет
Всего: нет



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

[php]<?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>&nbsp;<?= sprintf("%02d", $j) ?>&nbsp;</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("&nbsp;&nbsp;",$text)){
                $text = ereg_replace("&nbsp;&nbsp;","&nbsp;",$text);
            }
            $text = ereg_replace("&nbsp;"," ",$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">&nbsp;</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>[/php]
PM MAIL   Вверх
Gold Dragon
Дата 2.3.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



bylex, всё здорово, вот только ты не сказал какая у тебя строка поиска что выдаёт разные результаты


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
bylex
Дата 2.3.2011, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 22.11.2008

Репутация: нет
Всего: нет



Что то не понял? type1 это артикул товара, который из таблицы берется. А при поиске почему то обрезает и ищет то что до тире..есть два товара например артикул 12a2hr-12 а у второго 12a2hr-25, при поиске одного из них выдает два результата, та.к. до тире у них идет одинаковый номер. Помогите пожалуйста кто нибудь. готов отблагодарить. В асю напишите 242307013. 
Код

<?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

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0623 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.