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

  • flual2000
    hat ein Thema erstellt suchen nach einem Wert im String.

    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?

  • flual2000
    antwortet
    implode, es geht mit implode statt mit serialize.
    Jetzt hat es funktioniert.

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    http://de.php.net/implode


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

    Einen Kommentar schreiben:


  • flual2000
    antwortet
    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?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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..

    Einen Kommentar schreiben:


  • flual2000
    antwortet
    Was macht man denn dann in meinem Fall

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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..

    Einen Kommentar schreiben:


  • flual2000
    antwortet
    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

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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');

    Einen Kommentar schreiben:


  • flual2000
    antwortet
    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?

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    http://dev.mysql.com/doc/refman/5.0/...functions.html

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

    Einen Kommentar schreiben:


  • Corvin
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X