strpos wird nicht TRUE

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by c0restalker; 17-11-2009, 19:41. Reason: [Erledigt]

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

    PHP: strpos - Manual

    Comment


    • #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.

      Comment


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

        Comment


        • #5
          Originally posted by onemorenerd View Post
          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

          Comment


          • #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.

            Comment


            • #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

              Comment


              • #8
                Originally posted by Kropff View Post
                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

                Comment


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

                  Comment

                  Working...
                  X