strpos wird nicht TRUE

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

  • strpos wird nicht TRUE

    Guten Abend,

    ich habe mal wieder ein Problem und zwar wird das Ergebnis von strpos nicht true.
    Ich habe in MySQL eine spalte mit einem Haufen von Zahlen.
    In Zeile 1 z.B.
    Code:
    ID.....Zahlen......Timestamp
    1......1,2,3,7,8....17.11.2009
    Nun möchte ich mit strpos überprüfen ob in Zahlen die Zahl z.B. 3 enthalten ist.
    PHP-Code:
    [...]
           
    $sql = ("SELECT Zahlen FROM mytable WHERE ID = '".$id."'");
           
    $result mysql_query($sql);
           
    $row mysql_fetch_array($result);
           
    $checker $row['Zahlen'];
           if ((
    $pos strpos($zahl $checker)) === TRUE) {
              return 
    $errors TRUE;
              
           } else {
              return 
    $errors FALSE;
              
           } 
    Dieser Code steht in einer Fuction. Der Wert von $zahl wird auch 1:1 übertragen, jedoch ist das Ergebnis immer FALSE, auch wenn $zahl in "Zahlen" enthalten ist. Hab auch schon versucht ein Array zu bilden, ist etwas umständig, wie ich finde, doch das Ergebnis bleibt wieder FALSE.

    Ich hoffe ihr könnt mir helfen!


    MfG

    c0re
    Zuletzt geändert von c0restalker; 17.11.2009, 20:41. Grund: [Erledigt]

  • #2
    strpos() liefert niemals TRUE. Steht auch in der Doku:

    PHP: strpos - Manual

    Kommentar


    • #3
      Vertausch mal die Argumente von strpos()!

      Besser wäre aber gleich "WHERE ID = $id AND (Zahlen LIKE '$Zahl,%' OR Zahlen LIKE '%,$Zahl,%' OR Zahlen LIKE '%,$Zahl')".
      Aber noch besser wäre ein vernünftig normalisiertes DB-Schema.

      Kommentar


      • #4
        Wurde $zahl irgendwie ausserhalb des gezeigten Bereichs definiert?

        Kommentar


        • #5
          Zitat von onemorenerd Beitrag anzeigen
          Vertausch mal die Argumente von strpos()!

          Besser wäre aber gleich "WHERE ID = $id AND (Zahlen LIKE '$Zahl,%' OR Zahlen LIKE '%,$Zahl,%' OR Zahlen LIKE '%,$Zahl')".
          Aber noch besser wäre ein vernünftig normalisiertes DB-Schema.
          Argumente vertauschen hilft leider nichts.

          Mit "===FALSE" klappt es auch nicht, deswegen habe ich es auch nochmal mit True versucht.

          Und $zahl wurde nicht außerhalb des gezeigten Bereiches definiert.
          Habe sowhol $zahl auf meinem Schirm, also auch meine $sql und den string von $checker.

          MfG

          Kommentar


          • #6
            Sorry. Habe meinen Fehler gefunden.
            Schon mal versucht einen Integer mit strpos zu suchen?
            Hat irgendwie nicht hingehauen ;D
            $zahl = strval($zahl); hat Abhilfe geschaffen.

            Vielen Dank für Eure Bemühungen, Ratschläge und Tipps!

            Schönen Abend noch

            MfG

            c0re.

            Kommentar


            • #7
              Alternativ kannst du auch mit serialize/unserialize oder explode und dann in_array arbeiten. Aber ich schließe mich onemorenerd an und du solltest mal den Aufbau deiner Datenbank überdenken.

              Peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Zitat von Kropff Beitrag anzeigen
                Aber ich schließe mich onemorenerd an und du solltest mal den Aufbau deiner Datenbank überdenken.
                Ich auch!
                Ich habe in MySQL eine spalte mit einem Haufen von Zahlen.
                Ein Verstoß gegen die erste Normal Form.
                Siehe: Die 5 Normal Formen
                Wir werden alle sterben

                Kommentar


                • #9
                  FIND_IN_SET gibt's auch noch.
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar

                  Lädt...
                  X