Ankündigung

Einklappen
Keine Ankündigung bisher.

Umlaute werden nicht gefunden....

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Umlaute werden nicht gefunden....

    Guten Tag,

    habe ein kleines Problem. Ich werde es versuchen so einfach wie möglich zu erklären.

    Mein suchscript findet bei der Abfrage Wörter mit Umlauten nur in tabelle A der Datenbank, Umlaute die in der Tabelee B sind werden nciht gefunden. Wörter ohne Umlaute werden in beiden Tabellen gesucht und auch gefunden also die Suche funktioniert sehr gut im Bezug auf beide Tabellen in der Datenbank.

    Folgendes habe ich gesehen. Einträge in Tabelle A werden miot Umlauten reingeschrieben in Tabelle B aber nicht als Beispiel:

    In Tabelle A wird so reingeschrieben : Härteprüfer
    In Tabelle B wird so reingeschrieben : Härteprüfer

    Ich kann leider nicht mehr eine Umwadnlung neuer Einträge als Fehlerlösung akzeptieren weil es schon etliche einträge gibt in tabelle B.

    Also muss als Lösung es was geben wie :

    wenn eingetragen wird ä dann wandle um in ä und suche danach in DB Tabelle B.

    Ich hoffe ihr habt mein Problem verstanden. Ich habe bereits versucht mit html_entity_decode leider kein erfolg. Bitte wer kann helfen. Ich poste hier mal den Quellcode der PHP Datei. Weiter unten ist was ich versucht habe zu ändern aber keinen erfolg gebracht hat.


    Original Datei :

    PHP-Code:
    //Gruppendaten


                
    $sqlquery="SELECT * FROM markt_inserate_data WHERE";


                if(
    eregi("%",$q) || empty($q)){
                
    $sqlquery .= "";
                }else{



                if(
    preg_match("/ /",$q)){

                 
    $qarr explode(" ",$q);
                 
    $q_index end($qarr);

                 for(
    $i=0$i count($qarr); $i++) {

                       if(
    $qarr[$i] == $q_index){
                         
    $sqlquery .= " titel LIKE '%".$qarr[$i]."%' OR cont LIKE '%".$qarr[$i]."%'";
                       }else{
                         
    $sqlquery .= " titel LIKE '%".$qarr[$i]."%' OR cont LIKE '%".$qarr[$i]."%' AND";
                       }
                 }


                }else{
                
    $sqlquery .= " titel LIKE '%".$q."%' OR cont LIKE '%".$q."%'";
                }


                } 
    Das habe ich geändert

    PHP-Code:
               //Gruppendaten


                
    $sqlquery="SELECT * FROM markt_inserate_data WHERE";


                if(
    eregi("%",$q) || empty($q)){
                
    $sqlquery .= "";
                }else{



                if(
    preg_match("/ /",$q)){

                 
    $qarr explode(" ",$q);
                 
    $q_index end($qarr);

                 for(
    $i=0$i count($qarr); $i++) {

                       if(
    $qarr[$i] == $q_index){
                         
    $sqlquery .= " titel LIKE '%".$qarr[$i]."%' OR cont LIKE '%".html_entity_decode($qarr[$i])."%'";
                       }else{
                         
    $sqlquery .= " titel LIKE '%".$qarr[$i]."%' OR cont LIKE '%".html_entity_decode($qarr[$i])."%' AND";
                       }
                 }


                }else{
                
    $sqlquery .= " titel LIKE '%".$q."%' OR cont LIKE '%".html_entity_decode($q)."%'";
                }


                } 
    Vielen Dank im Voraus

  • #2
    Dass es Unsinn ist, den Beispielcode in [phpwiki]-Tags zu packen, muss einem doch auffallen, wenn man mal die Vorschau-Funktion benutzt *seufz*

    Bitte ändere dein Posting, und mache [php]-Tags daraus!


    Zitat von amadeus75 Beitrag anzeigen
    Mein suchscript findet bei der Abfrage Wörter mit Umlauten nur in tabelle A der Datenbank, Umlaute die in der Tabelee B sind werden nciht gefunden.
    Wenn keine Umlaute vorhanden sind, können auch keine gefunden werden.

    In Tabelle A wird so reingeschrieben : Härteprüfer
    In Tabelle B wird so reingeschrieben : Härteprüfer
    Na also, es gibt in Tabelle B also keine Umlaute, die zu finden wären.

    Ich kann leider nicht mehr eine Umwadnlung neuer Einträge als Fehlerlösung akzeptieren weil es schon etliche einträge gibt in tabelle B.
    Du willst die bestehenden Einträge umwandeln, so dass sie korrekten Text, und zwar nur reinen Text, enthalten.

    Danach kannst du auch richtig darin suchen.

    Also muss als Lösung es was geben wie :

    wenn eingetragen wird ä dann wandle um in ä und suche danach in DB Tabelle B.
    Nein, völliger Nonsense.

    HTML-Entities sollten in den Daten gar nicht erst drin stehen.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      habe es geändert [php]

      Kommentar


      • #4
        Du willst die bestehenden Einträge umwandeln, so dass sie korrekten Text, und zwar nur reinen Text, enthalten.

        Danach kannst du auch richtig darin suchen.
        Hallo aber deine Antwort hat mir keinen Zentimeter geholfen. Nicht mal eine Antwort auf meine eigene Fehlerlösung habe ich bekommen ob ich auf dem richtigen Weg bin...

        Weis jemand Rat ?

        Kommentar


        • #5
          ChrisB hat's eigentlich verständlich fomuliert...

          Du hast in Tabelle B Murks stehen. Die HTML Entites (ü etc.) gehören NICHT in die Datenbank, sondern dienen nur als Hilfsmittel für die Darstellung im Browser (und auch nur, wenn in Encodings gearbeitet wird, die keine Umlaute kennen). Das heisst: Speichere solche Daten nicht, sondern dekodiere vor dem speichern.

          html_entities_decode ist für deinen aktuellen Anwendungsfall die falsche Funktion. Wenn du in der Datenbank eine HTML-Entity suchst, im Suchparameter aber den konkreten Umlaut, dann musst du den Umlaut encoden, damit er gefunden werden kann.
          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

          Kommentar


          • #6
            Ist mir persönlich zu hoch. Wer hat Interesse mir das so umzushreiben das es einwandfrei funktioniert gegen Bezahlung ? Wenn Interesse Private PM an mich... Weil das schon ne nummer zu groß für meine Kenntnisse.

            Kommentar

            Lädt...
            X