Ankündigung

Einklappen
Keine Ankündigung bisher.

Suchen mit PHP

Einklappen

Neue Werbung 2019

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

  • Suchen mit PHP

    Guten Abend,

    bis jetzt dachte ich immer, wenn ich LIKE suche findet PHP alles was mit einem Wort zu tun hat egal ob Leerzeichen enthalten sind oder nicht. Scheinbar liege ich hier total falsch. Es geht konkret um folgendes Beispiel.

    Ich möchte gerne nach einer Telefonnummer suchen die auf 3 verschiedene Arten in der Datenbank stehen kann:

    02202 - XX XX XX
    02202 - XXXXXXX
    02202-XXXXXX

    Mein Ansatz lautete so:

    PHP-Code:
    $stmt $mysqli->prepare($select " WHERE telefon LIKE ?" );
                
    $stmt->bind_param("s"$param); 
    Derzeit wird nur die Nummer gefunden, die genau so drin der Datenbank steht, wie ich sie auch über die Suche eingebe. Gibt es eine Möglichkeit nach allen drei Varianten zu suchen?

  • #2
    Zitat von TashaReckless Beitrag anzeigen
    bis jetzt dachte ich immer, wenn ich LIKE suche findet PHP alles was mit einem Wort zu tun hat egal ob Leerzeichen enthalten sind oder nicht. Scheinbar liege ich hier total falsch. Es geht konkret um folgendes Beispiel.
    LIKE ist Teil der SQL-Sprache und hat mit PHP nichts zu tun.

    Zitat von TashaReckless Beitrag anzeigen
    Ich möchte gerne nach einer Telefonnummer suchen die auf 3 verschiedene Arten in der Datenbank stehen kann:

    02202 - XX XX XX
    02202 - XXXXXXX
    02202-XXXXXX

    Mein Ansatz lautete so:

    PHP-Code:
    $stmt $mysqli->prepare($select " WHERE telefon LIKE ?" );
    $stmt->bind_param("s"$param); 
    Derzeit wird nur die Nummer gefunden, die genau so drin der Datenbank steht, wie ich sie auch über die Suche eingebe. Gibt es eine Möglichkeit nach allen drei Varianten zu suchen?
    Bringe die Daten in ein einheitliches Format. Ansonsten wirst du dich mit Regex beschäftigen müssen.

    http://dev.mysql.com/doc/refman/5.7/en/regexp.html

    Kommentar


    • #3
      Hallo,

      danke für deine Antwort, das heißt ich sollte eine weitere Spalte in meiner Tabelle anlegen und die Daten ohne Leerzeichen und ohne Bindestrich zu speichern?

      Kommentar


      • #4
        Nein, siehe den Link in #2.

        Tel. Numern sind sowieso immer so eine Sache.. 02202XXXXXX, 02202/XXXXXX, +492202XXXXXX, etc etc...

        [MOD: Verschoben von PHP-Einsteiger]

        Kommentar


        • #5
          Vielleicht reicht es ja hier, wenn man seitens PHP die Leerzeichen aus dem Suchbegriff raushaut

          PHP-Code:
          $suchbegriff str_replace(' ','',$expr); 
          und seitens MySQL das genau so macht
          Code:
          WHERE REPLACE(telefon,' ','') LIKE ?

          Kommentar


          • #6
            Hängt vermutlich auch vom genauen Fall ab. Ev. wären dann - und / auch noch zum filtern, also "andersrum" quasi geich nur 0-9 daraus verwenden (Regex) und damit suchen gehen (Landesvorwahl mal beiseite gelassen).

            Kommentar


            • #7
              Zitat von TashaReckless Beitrag anzeigen
              ..snip..
              Derzeit wird nur die Nummer gefunden, die genau so drin der Datenbank steht,
              ..snip..

              ich sollte eine weitere Spalte in meiner Tabelle anlegen und die Daten ohne Leerzeichen und ohne Bindestrich zu speichern?
              Da spricht natürlich nichts gegen. Aber einfach sicherheitshalber: Weißt Du wie man Like benutzt? Platzhalter % einsetzt? Die zitierten Worte aus Deinem Eingangsposting deuten darauf hin, dass da vielleicht was nicht stimmt.

              Beispiel:
              Code:
              ..where phonecolumn like '%49%'
              Wenn Dir klar ist, wie Du das einsetzen musst, vergiß diesen Beitrag einfach

              Kommentar

              Lädt...
              X