Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 17

Thema: suche soll gross/kleinschreibung ignorieren, aber wie ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    suche soll gross/kleinschreibung ignorieren, aber wie ?

    ich habe eine fertiges script mit suchfunktion, leider unterscheidet die suche
    gros-und kleinschreibung, was wenig sinnvoll ist.

    wie kann ich das ändern, bzw. nach was muss ich im script suchen ??

  2. #2
    Registrierter Benutzer
    Registriert seit
    24.03.2002
    Beiträge
    118
    script posten bitte
    rock and roll is for rebels, it´s not family entertainment

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    das müsste der teil sein

    PHP-Code:
    <?
    // *******************************************************************
    //  include/results.php
    // *******************************************************************

    if(isset($term) && strlen($term)>0){
        
        if(!isset($sr)){
            $sr=0;
        }

        if($logic == "phrase"){

            $st[0] = $term;

        } else {

            $term = eregi_replace("\+", " ", $term);
            $st = explode(" ", $term);
            $cst = sizeof($st);
            
            if($cst > 1){

                $sterm .= $st[0];
                for($p=1; $p<$cst; $p++){$sterm .= "+" . $st[$p];

            }

        } else {

            $sterm .= $st[0];
        }
    }

    $i = 0;

    while($st[$i]){
        
        if(strlen($st[$i]) > 2){
            $split_term[] = $st[$i];
        } else {
            $removed[] = $st[$i];}
            $i++;
        }

        $i = 0;

        while($split_term[$i]){
            
            if(strlen($split_term[$i]) > 2){
                $new_term .= $split_term[$i]." ";
            }

            $i++;
        }

        $i = 0;

        if(strlen($new_term)>2){
            
            if($ns!=1){
                
                $record_term = sql_query("
                    insert into $tb_terms(
                        ID,
                        Term
                    ) values (
                        '',
                        '$new_term'
                    )
                ");
            }
        }

        while($removed[$i]){

            $removed_term .= $removed[$i];
            if($removed[$i+1])    {$removed_term .= ",";
        }
        
        $i++;
    }

    $removed_html = stripslashes($new_term);

    if($removed_term){

        $removed_html .= "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(";
        $removed_html .= trim($removed_term).") " . $results_1;
    }

    if($logic == "or"){

        $sites_sql = "
            select
                $tb_links.ID as site_id,
                $tb_links.SiteName as site_name,
                $tb_links.SiteURL as site_url,
                $tb_categories.Category as category_name,
                $tb_categories.ID as cat_id,
                $tb_links.Added as added,
                $tb_links.LastUpdate as last_update,
                $tb_links.Description as site_description,
                $tb_links.Country as country,
                $tb_links.HitsIn as hits_in,
                $tb_links.HitsOut as hits_out,
                count($tb_reviews.ID) as total_reviews
            from
                $tb_links
            left join
                $tb_categories
            on
                $tb_links.Category=$tb_categories.ID
            left join
                $tb_reviews
            on
                $tb_links.ID=$tb_reviews.SiteID
            where (";
            
            if(isset($search_cat) && $search_cat != 0){
                $sites_sql .= "(";
            }

            $i = 0;

            while($split_term[$i]){

                $sites_sql .= "$tb_links.SiteURL like '%$split_term[$i]%'";

                if($split_term[$i+1]){
                    $sites_sql .= " or ";
                }

                $i++;
            }

            $sites_sql .= ") or (";    

            $i = 0;

            while($split_term[$i]){

                $sites_sql .= "$tb_links.Description like '%$split_term[$i]%'";
                
                if($split_term[$i+1]){
                    $sites_sql .= " or ";
                }

                $i++;
            }

            $sites_sql .= ") or (";
            $i = 0;

            while($split_term[$i]){
                
                $sites_sql .= "$tb_links.SiteName like '%$split_term[$i]%'";
                
                if($split_term[$i+1]){
                    $sites_sql .= " or ";
                }

                $i++;
            }

            $sites_sql .= ") ";

            if(isset($search_cat) && $search_cat != 0){
                $sites_sql .= ") and ($tb_links.Category = '$search_cat') "; 
            }

            $total_sql = $sites_sql . "group by site_id";
            $sites_sql .= "group by site_id limit $sr, $pp";
        
        } else {

            $sites_sql = "
                select
                    $tb_links.ID as site_id,
                    $tb_links.SiteName as site_name,
                    $tb_links.SiteURL as site_url,
                    $tb_categories.Category as category_name,
                    $tb_categories.ID as cat_id,
                    $tb_links.Added as added,
                    $tb_links.LastUpdate as last_update,
                    $tb_links.Description as site_description,
                    $tb_links.HitsIn as hits_in,
                    $tb_links.HitsOut as hits_out,
                    count($tb_reviews.ID) as total_reviews
                from
                    $tb_links
                left join
                    $tb_categories
                on
                    $tb_links.Category=$tb_categories.ID
                left join
                    $tb_reviews
                on
                    $tb_links.ID=$tb_reviews.SiteID
                where (";

            $i = 0;

            while($split_term[$i]){

                $sites_sql .= "$tb_links.SiteURL like '%$split_term[$i]%'";
                
                if($split_term[$i+1]){
                    $sites_sql .= " and ";
                }

                $i++;
            }

            $sites_sql .= ") or (";
            $i = 0;

            while($split_term[$i]){
                
                $sites_sql .= "$tb_links.Description like '%$split_term[$i]%'";
                
                if($split_term[$i+1]){
                    $sites_sql .= " and ";
                }

                $i++;
            }

            $sites_sql .= ") or (";
            $i = 0;

            while($split_term[$i]){

                $sites_sql .= "$tb_links.SiteName like '%$split_term[$i]%'";
                
                if($split_term[$i+1]){
                    $sites_sql .= " and ";
                }

                $i++;
            }

            $sites_sql .= ") ";
            $total_sql = $sites_sql . "group by site_id";
            $sites_sql .= "group by site_id limit $sr, $pp";
        }

    if(isset($term) && strlen($term)>0){
        
        if($logic == "or"){

            $cats_sql = "
                select
                    $tb_categories.ID as category_id,
                    $tb_categories.Category as category_name,
                    $tb_categories.PID as category_pid
                from
                    $tb_categories
                where (";
            
                $i = 0;

                while($split_term[$i]){
                    
                    $cats_sql .= "$tb_categories.Category like '%$split_term[$i]%'";
                    
                    if($split_term[$i+1]){
                        $cats_sql .= " or ";
                    }

                    $i++;
                }

                $cats_sql .= ") ";
            
            } else {

                $cats_sql = "
                    select
                        $tb_categories.Category as category_name,
                        $tb_categories.ID as category_id,
                        $tb_categories.PID as category_pid
                    from
                        $tb_categories
                    where (";

                    $i = 0;

                    while($split_term[$i]){
                        
                        $cats_sql .= "$tb_categories.Category
                            like '%$split_term[$i]%'";

                        if($split_term[$i+1]){
                            $cats_sql .= " and ";
                        }

                        $i++;
                    }

                $cats_sql .= ") ";
            }
        }

        $mtime1 = getmicrotime();
        $site_results = sql_query($sites_sql);
        $cat_results = sql_query($cats_sql);
        $total_results = sql_query($total_sql);
        $total = sql_num_rows($total_results);
        $mtime2 = getmicrotime();
        $search_time = $mtime2 - $mtime1;

        $htmlsrc .= $table2 . "<tr>";
        $htmlsrc .= "\r\n\t<td width=\"100%\" class=\"whatText\">" . $results_2;
        $htmlsrc .= "<font class=\"slide\">" . $removed_html;
        $htmlsrc .= "</font>&nbsp;&nbsp;" . $results_3;
        $htmlsrc .= "<font class=\"slide\">" . substr($search_time, 0, 6);
        $htmlsrc .= "</font>" . $results_4 . "...<br />";
        $htmlsrc .= "</td>\r\n</tr>\r\n</table>\r\n";
        
        echo whattable("100%","center","",$htmlsrc);
        unset($htmlsrc);

        $htmlsrc = $table2 . "<tr><td width=\"100%\" ";
        $htmlsrc .= "class=\"whatText\">" . $results_5 . "</td></tr></table>";;

        echo whattable("100%","center","",$htmlsrc);
        unset($htmlsrc);

        $x=0;

        $htmlsrc =  $table2;
        
        while($x<25){

            $htmlsrc .=  "<tr>";

            $pop_terms = sql_query("
                select
                    Term,
                    count(*) as Count
                from
                    $tb_terms
                group by
                    Term
                order by
                    Count desc
                limit
                    $x,5
            ");

            while($pt_rows = sql_fetch_array($pop_terms)){
                    
                $htmlsrc .= "<td class=\"slide\">&nbsp;<a class=\"slide\"";
                $htmlsrc .= "href=\"index.php?" . session_name() . "=" . session_id() . "&amp;ns=1&amp;logic=or&amp;maximum=10&amp;term=";
                $htmlsrc .= $pt_rows[Term] . "\">" . $pt_rows[Term] . "</a>(";
                $htmlsrc .= $pt_rows[Count] . ")&nbsp;&nbsp;&nbsp;&nbsp;</td>";
            }

            $htmlsrc .= "</tr>";
            $x=$x+5;
        }

        $htmlsrc .= "</table>";

        echo table("99%","center","",$htmlsrc);
        unset($htmlsrc);

        if($cp<=1){
            echo draw_search_categories($cat_results, $split_term);
        }
        
        echo draw_search_sites($total, $site_results, $split_term);
        
        $htmlsrc = $table2 . "<tr><td class=\"whatText\">" . $results_6 . "</td></tr></table>";

        echo whattable("100%","center","",$htmlsrc);
        unset($htmlsrc);

        $htmlsrc = $table2 . "<tr><td class=\"searchEngineText\">&nbsp;&nbsp;";
           /*-------
            $htmlsrc .="<a class=\"slide\" ";
        $htmlsrc .= "target=\"_blank\" href=\"index.php?" . session_name() . "=";
        $htmlsrc .= session_id() . "&amp;logic=or&amp;maximum=10&amp;term=";
        $htmlsrc .= $sterm . "\">" . $site_title . "</a> - ";

        
                 if($SERVER_NAME != "phplinks.org" && $SERVER_NAME != "dev.phplinks.org"){
            $htmlsrc .= "<a class=\"slide\" href=\"http://phplinks.org/";
            $htmlsrc .= "phplinks/index.php?logic=or&amp;maximum=10&amp;term=" . $sterm;
            $htmlsrc .= "\">phpLinks</a> - ";
        }
            --------*/
        $htmlsrc .= "<a class=\"slide\" target=\"_blank\" ";
        $htmlsrc .= "href=\"http://www.altavista.digital.com/cgi-bin/query?pg=q&what=web&q=";
        $htmlsrc .= $sterm . "\">Alta Vista</a> - <a class=\"slide\"";
        $htmlsrc .= "target=\"_blank\" href=\"http://www.hotbot.com/?MT=" . $sterm;
        $htmlsrc .= "&DU=days&SW=web\">HotBot</a> - <a class=\"slide\" ";
        $htmlsrc .= "target=\"_blank\" href=\"http://www.infoseek.com/Titles?qt=" . $sterm;
        $htmlsrc .= "\">Infoseek</a> - <a class=\"slide\" target=\"_blank\" ";
        $htmlsrc .= "href=\"http://www.google.de/search?q=$term&ie=UTF-8&oe=UTF-8&hl=de&btnG=Google-Suche&meta=lr%3Dlang_de\"";
        $htmlsrc .= "\">Google</a> - <a class=\"slide\" target=\"_blank\" ";
        $htmlsrc .= "href=\"http://www.lycos.com/cgi-bin/pursuit?query=" . $sterm;
        $htmlsrc .= "&maxhits=20\">Lycos</a> - <a class=\"slide\" target=\"_blank\" ";
        $htmlsrc .= "href=\"http://search.yahoo.com/bin/search?p=" . $sterm;
        $htmlsrc .= "\">Yahoo</a></td></tr></table>";

        echo table("99%","center","",$htmlsrc);
        unset($htmlsrc);

    } else {

        $htmlsrc = $table2 . "<tr><td class=\"errorText\" align=\"center\"><br /><br />" . $results_7;
        $htmlsrc .= "<br /><br /></td></tr></table>";

        echo table("100%","center","",$htmlsrc);
            unset($htmlsrc);
    }

    ?>

  4. #4
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo!

    Ich hab mir das Skript jetzt nicht genau angesehen, aber wenn du Vergleiche machen willst, ohne auf Groß- und Kleinschreibung einzugehen, dann würd ich den Suchterm und den zu durchsuchenden Text einfach mit ucase() in Großbuchstaben umwandeln, und dann vergleichen.


  5. #5
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    ähem...

    aber dann klappt es doch auch nicht, oder ?

    ich will dass die eingabe:
    "hans mueller"
    sowohl Hans Mueller als auch hans Mueller oder alle kombinationen findet
    es fehlt die funktion "ignore_case" oder sowas...

  6. #6
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317

    doch...

    Sorry, hatte mich bei der funktion geirrt
    Die funktion heisst strtoupper() und macht aus
    hans Müller => HANS MÜLLER
    HANS mÜllEr => HANS MÜLLER

    ...und aus dem Text
    Der Hans Müller war ein toller mann, der hatte immer latschen an!
    wird
    DER HANS MÜLLER WAR EIN TOLLER MANN, DER HATTE IMMER LATSCHEN AN!

    Also ist es vollkommen wurscht wie du Hans Müller schreibst... es wird immer HANS MÜLLER draus
    Geändert von Gaert (07-02-2003 um 18:02 Uhr)


  7. #7
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    aber wenn ich

    dann HANS MUELLER habe, wird doch trotzdem nur HANS MUELLER
    gefunden und nicht hans mueller, Hans Mueller etc.. nicht gefunden ????
    stehe ich auf dem schlauch ?

  8. #8
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317

    ja...

    Ja du stehst auf dem Schlauch!

    Du musst den Text in dem du suchst natürlich auch komplett in Großbuchstaben umwandeln!


  9. #9
    Registrierter Benutzer
    Registriert seit
    05.06.2002
    Ort
    Hof
    Beiträge
    154
    ähm, ich denke in dem script
    oben will er eine mysql-select
    abfrage machen und dabei eine
    like %<suche>% suche machen.

    da dürfte str_toupper nicht viel
    bringen.

    cu, stop.h

  10. #10
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    genau so ist es

    es muss doch eine möglichkeit geben, die gross/kleinschreibung nicht zu beachten..??
    da es sich um technische bezeichnungen handelt , würde ich sogar gerne leerzeichen ignorieren.
    ct 4 = CT4 = Ct 4

  11. #11
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Ok...

    Wie gesagt ich hatte das Skript nicht ganz gelesen!

    Bei einer Abffage mit WHERE feld LIKE '%suchterm%' wird die Groß / Kleinschreibung sowieso nicht berücksichtigt... ich verstehe also das Problem nicht.
    Bei einer Abfrage mit WHERE feld='suchterm' wird Groß / Kleinschreibung übrigens ebenfalls nicht berücksichtigt.

    Im übrigen:
    da dürfte str_toupper nicht viel
    bringen.
    Logisch in nem SQL bringt das natürlich nichts... ich bin davon ausgegangen, dass sich sowohl Suchterm, als auch Suchtext bereits in einer Variable befinden.
    Dann hättest du die Inhalte beider Variablen mit strtoupper() in Großbuchstaben umwandeln können und dann vergleichen / durchsuchen können.
    Bei MySQL gibt es dafür übrigens die Funktionen UPPER und UCASE für diesen Zweck.

    Lehrzeichen aus dem Suchterm löschen:
    $suchterm = str_replace(' ','',$suchterm);


  12. #12
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    tja,

    wenn das
    PHP-Code:
    $sites_sql .= "$tb_links.SiteURL like '%$split_term[$i]%'"
    die
    entscheidende stelle ist, ist an der theorie wohl etwas falsch, denn "mueller" findet "mueller", aber nicht "Mueller"...

  13. #13
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Merkwürdig, denn es ist keine Theorie, bei mir ist es so...

    Vorschlag:
    PHP-Code:
    $split_term[$i] = strtoupper(str_replace(' ','',$split_term[$i]));
    $sites_sql .= "UCASE($tb_links.SiteURL) like '%$split_term[$i]%'"
    Geändert von Gaert (08-02-2003 um 12:27 Uhr)


  14. #14
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    ich verstehe es auch nicht

    danke für deine mühe;
    wenn ich das so ändere, wird nur noch "MUELLER" gefunden;
    "ct 4" findet CT4, nicht aber ct 4, Ct 4, usw..
    eigentlich auch logisch.
    das brächte alles nur etwas, wenn ich es fallweise machte, nach dem motto:
    wenn leerzeichen, dann suche nach beiden varianten.
    das mit dem leerzeichen ist auch nicht so wichtig, wie die sache mit gross/klein

    ich habe mal direkt in sql die abfrage getestet
    PHP-Code:
    select from yp_links where description like'%mueller%' 
    findet wirklich nur "mueller", aber nicht "Mueller"!
    evtl. gibt es da eine sql "ini" einstellung, die das verursacht...

  15. #15
    Registrierter Benutzer
    Registriert seit
    30.01.2002
    Beiträge
    86

    die lösung

    falls jemand mal das gleiche problem hat:

    die sql feld art BLOB ist immer case sensitive, VARCHAR, TEXT nicht.

    ändern in TEXT löste das problem.

    eigentlich sollte es in sql auch so gehen:
    PHP-Code:
    SELECT LCASE('*'FROM `yp_linksWHERE description like LCASE('%MUelLeR%'
    tut´s aber nicht ..
    naja, eagl ..

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •