Ankündigung

Einklappen
Keine Ankündigung bisher.

suchen nach einem Wert im String

Einklappen

Neue Werbung 2019

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

  • suchen nach einem Wert im String

    Hallo,

    ich habe mittels einem Formular einen String mit mehreren Werten in eine Datenbank gespeichert.
    Jetzt will ich nur die Datensätze aus der datenbank herauslesen, die einen bestimmten Wert innerhalb dieses Strings haben.
    D.h. Datensatz 1 String: Maus, Hund, katze
    Datensatz 2 String: Maus, Katze
    Bei der Suche nach Hund sollte also nur Datensatz 1 angezeigt werde.
    Code:
    if ($laender == "Holland" && $stadt == "alle""){
    $res = mysql_query("select * from tabelle ");
    $num = mysql_num_rows($res);
            while ($dsatz = mysql_fetch_assoc($res))
    {        echo "<td>" . $dsatz["unternehmen"] ."
    Die Variablen $laender und $stadt stammen aus einem Auswahlformular, das vorgeschaltet ist.
    Ich habe bisher keine adquate Lösung gefunden.
    Kann mir jemand helfen?

  • #2
    Du könntest jeden Datensatz mit preg_match() überprüfen.. aber schau mal im Manual, vielleicht gibt es da noch eine MySQL-eigene Funktion, die dürfte um einiges schneller sein.

    Kommentar


    • #3
      http://dev.mysql.com/doc/refman/5.0/...functions.html

      ... from bla where FIND_IN_SET('Hund',spalte) > 0;

      Kommentar


      • #4
        Ich habe FIND_IN_SET angewendet, aber das Ergebnis ist, dass kein Datensatz gefunden worden ist. Es sollte aber wenigstens einer sein.
        Muss ich den Inhalt der Spalte noch umwandeln mit unserialize?

        Kommentar


        • #5
          Wenn es so

          Maus,Hund,katze
          in der Tabelle steht wird es auch gefunden.
          Beantwortet dies deine Frage?

          FIND_IN_SET(str,strlist)

          Returns a value in the range of 1 to N if the string str is in the string list strlist consisting of N substrings. A string list is a string composed of substrings separated by ‘,’ characters. If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. Returns 0 if str is not in strlist or if strlist is the empty string. Returns NULL if either argument is NULL. This function does not work properly if the first argument contains a comma (‘,’) character.

          mysql> SELECT FIND_IN_SET('b','a,b,c,d');

          Kommentar


          • #6
            Nein,
            in der Spalte steht es so:
            a:3:{i:0;s:9:"Hund";i:1;s:9:"Katze";i:2;s:10:"Maus ";}

            Ist das dann anders

            Kommentar


            • #7
              Und das ist falsch!

              Nochmal...
              Der Wert muss so aussehen und nicht anders!

              Maus,Hund,katze
              kein
              a:3:{i:0;s:9:"Hund";i:1;s:9:"Katze";i:2;s:10:"Maus ";}
              oder sonstiges..

              Kommentar


              • #8
                Was macht man denn dann in meinem Fall

                Kommentar


                • #9
                  ich vermute mal das du die spalte so brauchst, dann schlage ich dir mal vor eine zusätzlich spalte hinzuzufügen.

                  dort pumpste dann halt die werte nochmal neu ein und stellst die suchabfrage über die neue spalte.
                  das wars..

                  Kommentar


                  • #10
                    Nun habe ich versucht die Werte ohne den folgenden Code einzuspeichern:
                    if (isset($_POST['tier'])) {
                    reset($_POST['tier']);
                    foreach ($_POST['tier'] as $k => $v){
                    $beruf = serialize($_POST['tier']);}}

                    Das Ergebnis war, dass in der Spalte jetzt array eingetragen wird.
                    Muss ich aus dem Formularfeld bei den Checkboxen die Zeichen [] entfernen, damit die Werte adequat eingetragen werden können?

                    Kommentar


                    • #11
                      http://de.php.net/implode


                      PHP-Code:
                      $beruf implode(',',$_POST['tier']); 

                      Kommentar


                      • #12
                        implode, es geht mit implode statt mit serialize.
                        Jetzt hat es funktioniert.

                        Kommentar

                        Lädt...
                        X