MySQL Abfrage

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

  • MySQL Abfrage

    Ich habe folgende MySQL Abfrage
    PHP-Code:
    $result mysql_query (" SELECT * FROM Deckkater WHERE Beschreibung LIKE '%".addslashes($suche)."%' OR Rasse LIKE '%".addslashes($suche)."%' 
    OR PLZ LIKE '%"
    .addslashes($suche)."%' OR Bundesland LIKE '%".addslashes($suche)."%' OR Ort LIKE '%".addslashes($suche)."%'"
    Das funktioniert auch alles soweit, wenn ich ein Suchwort eingebe, was unter Beschreibung existiert oder oder, aber bei Angaben, von Suchwörter von Spalte Rasse und noch einem Wort was in der Spalte Beschreibung existiert, wird nix gefunden. Also wenn man suchwörten kombiniert. UNd dazunoch, wenn man Leerzeichen eingibt, wird alles aus der DB ausgegeben, da jede Einragung in der Beschreibung die Leerzeichen enthält
    Kann bir bitte jemand sagen wie ich die Leerzeichen ignorieren kann und im Formularfeld mehrere Suchwörter eingeben kann sodass auch was gefunden wird?

  • #2
    Zumindest zum Abblocken einer Leereingabe kann ich Dir einen Tipp geben.

    PHP-Code:
    if ($suche == " ") {
       print 
    "Bitte geben Sie einen gültigen Suchbegriff ein";
    } else {
       
    // Hier Deine weitere Verarbeitung

    Nachdem man aber auch nach anderen sinnlosen Zeichen Abfragen könnte, könntest Du gleich alle Suchbegriffe blocken, deren Länge kleiner 4 Zeichen ist:
    PHP-Code:
    if (strlen($suche) < 4) {
       print 
    "Suchbegriff zu kurz, mindestens ein Wort bestehnd aus 4 Zeichen ist erforderlich";
    } else {
       
    // Hier Deine weitere Verarbeitung

    Wenn Du als Suchbegriff "geile katze" eingibst (man verzeihe meine Ausdrucksweise, aber das ist ja noch harmlos zu Deckkater ), dann werden über Deine Abfrage alle Records gefunden, die im Text "geile katze" beinhalten und nicht alle die "geile" und/oder "katze" beinhalten. Ein Record mit dem Inhalt "geile getigerte katze" würde nicht mehr gefunden werden.

    Wolltest Du aber dennoch die Worte einzeln kombiniert haben wollen mußt Du den Suchbegriff parsen und in einzelne Begriffe zerlegen. Dabei müßtest Du aber festlegen, ob Du die Suchbegriffe über eine AND oder eine OR Verbindung an die DB richtest.

    Über explode(" ",$suche) kannst Du die Eingabe in einen ARRAY zerlegen und dann den select über diesen ARRAY aufbauen:

    WHERE Beschreibung like '%geile%' OR Beschreibung like '%katze%' OR Rasse like '%geile%' OR Rasse like '%katze%' ....

    Jetzt kann aber sein daß jemand nur "geile katzen" finden will und nicht "geile getigerte katzen", also mußt Du dann vorsehen, daß die eingegebenen Suchbegriffe unter Hochkomma gestellt nicht zerlegt werden.

    Vielleicht fragt aber auf Deiner Seite ohnehin niemand nach Katzen ab, sondern eher nach Kater, dann müßte es natürlich "geiler kater" heißen


    (An alle Moderatorinnen, mir tut es leid, konnte es aber nicht mit anderen Worten erklären)

    Kommentar


    • #3
      Da gibt es eine praktische Funktion des PX: PHP Code Exchange
      http://px.sklar.com/code-pretty.html?code_id=216
      PHP-Code:
      function b_parse($str$field)  

         if(
      $str) {  
         
      $quoted explode("\\\""$str); 
                   
         for(
      $i 0$i count($quoted); $i++) { 
            if(
      $i == && !$quoted[$i]) { 
            
      //quote came at beginning of string 
            
      $begin True
            
      $i++; 
            } 
            if(
      $begin) { $words[] = $quoted[$i]; } 
            else { 
               
      $phrase explode(" "$quoted[$i]); 
               for(
      $n 0$n count($phrase); $n++) { 
                  if(
      $phrase[$n]) { $words[] = $phrase[$n]; } 
               } 
            } 
            
      $begin = !$begin
         }             
                   
         for(
      $i 0$i count($words); $i++) { 
            if(
      $words[$i]) { 
               if(
      $words[$i] == "and" || $words[$i] == "or" || $words[$i] == "not") { 
                  if(
      $words[$i] == "not") { 
                     
      $i++; 
                     if(
      $sql_out) { $sql_out .= " AND "; } 
                     
      $sql_out .= $field " NOT LIKE '%" $words[$i] . "%'"
                   } 
                   else if(
      $i 0) { 
                     
      $sql_out .= " " strtoupper($words[$i]) . " "
                     
      $boolean True
                   } 
                } 
                else { 
                  if(
      $sql_out && !$boolean) { $sql_out .= " OR "; } 
                  
      $sql_out .= $field " LIKE '%" $words[$i] . "%'"
                  
      $boolean False
                } 
            } 
          } 
          } 
          return 
      $sql_out

      aufgerufen wird sie so:
      $string = "Geiler getigerter Kater";
      $feld = "beschreibung";
      $sql = b_parse($string,$feld);
      gibt zurück: beschreibung LIKE 'Geiler' AND beschreibung LIKE 'getigerter' AND beschreibung LIKE 'Kater'

      Zusätzlich lässt die Funktion auch AND, OR, NOT (Standart ist OR oder AND -> kannst du ja ändern) und auch die Suche nach einem ganzen String zu (dazu müssen die Schlüsselwörter in " " ).
      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

      © Harald Schmidt

      Kommentar


      • #4
        Übrigens habe ich ganz vergessen:

        Liebe Grüße an Nicole !!!

        Titty: geb. am: 22.Jul.2001 klingt annähernd wie Titus (Titty hat Fledermaus ähnliche Züge , aber sags Titty bitte nicht weiter und Nicole bitte auch nicht, Nicole hat ja ein © auf Titty http://www.deck-kater.de/photos.html)

        wann wird Handy geboren?

        Noch eine Frage: Heißt "Katzensnupfen" nicht richtigerweise "Katzenschnupfen"?

        Kommentar


        • #5
          HI Hand Danke dir für so eine schöne Erklärung. (Du könntest gleich als ein Tutor auf ner UNI arbeiten )
          Dieses Teil interessiert mich am meisten:
          Wolltest Du aber dennoch die Worte einzeln kombiniert haben wollen mußt Du den Suchbegriff parsen und in einzelne Begriffe zerlegen. Dabei müßtest Du aber festlegen, ob Du die Suchbegriffe über eine AND oder eine OR Verbindung an die DB richtest.
          Wo kann ich darüber mehr Infos bekommen?
          PS: Danke Troublegum ich werde es mal ausprobieren

          Kommentar


          • #6
            @Troublegum
            Mit $string = "Geiler getigerter Kater"; bekommt man aber keine Liste der geilen Katzen

            PHP-Code:
            if (geil($katze)) {
               exit(
            8);

            Kommentar


            • #7
              Original geschrieben von archie
              Wo kann ich darüber mehr Infos bekommen?
              Bei Troublegum

              Kommentar


              • #8
                Bist du gemein
                Titus wird auf dich sehr böse sein wenn er das ließt und setzt dein Status auf Junior Member
                PS: Handys sind schon längst geboren am 4 April
                PSS: Katzenschnupfen das ist net meine Suppe, sondern NIcole kann nix schreiben
                PSSS: HIer könnt ihr die Sache ansehen: http://www.deck-kater.de/deckkater1.php ist noch nicht officiel als LInk gesetzt deshalb ist dort nur 1 Kater eingetragen. Thai Berlin
                OK CU DANKE EUCH ALLEN

                Kommentar


                • #9
                  @archie
                  Hab noch was gefunden: Wie kastriert man eigentlich ein Burmakatzenmädchen? Ist das ein Aprilscherz?

                  Kommentar


                  • #10
                    Original geschrieben von archie
                    PS: Handys sind schon längst geboren am 4 April
                    Wo? Zeig, ich möchte meine Jungs sehen !!!!

                    Kommentar


                    • #11
                      So, ich hab die Funktion mal so erweitert, dass du als optionalen dritten Parameter den Standart Operator angeben kannst. Standart ist normal OR.

                      Als Beispiel hab ich einfach mal eine Beispiel Datei angehängt, ich hoffe damit wird das ganze klarer.
                      Angehängte Dateien
                      [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                      [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                      [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                      © Harald Schmidt

                      Kommentar


                      • #12
                        Ja Hand kastrieren kann man seit kurzem auch die Katzen, wenn du es genauer wissen willst schaue hier: http://www.deck-kater.de/infothek.html
                        HIer sind die Handys:
                        http://www.deck-kater.de/photos/baby1.jpg
                        PS:

                        Kommentar


                        • #13
                          Ey ihr redet ja nur noch über Katzen und Kater
                          [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                          [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                          [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                          © Harald Schmidt

                          Kommentar


                          • #14
                            Bist ja zeimlich flott beim updaten. Hast noch einen Schreibfehler von mir übernommen "bestehnd" anstatt "bestehend".

                            Ab zurück zum kastrieren. Ich lese da auf Nicoles Seite: "Bei der Kastration werden der Katze die Eierstöcke komplett entfernt, dem Kater die Samenleiter." Das habe ich wirklich nicht gewußt und ist ja sowas von grausam!

                            Und Nicole ist damit einverstanden?

                            Kommentar


                            • #15
                              @Troublegum

                              Eigentlich über Nicole

                              Kommentar

                              Lädt...
                              X