Existensprüfung schlägt fehl warum?

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

  • Existensprüfung schlägt fehl warum?

    Hallo Forum und zwar habe ich ein Problem was mir bald graue Haare wachsen lässt!

    Und zwar schreibe ich ein Gästebuchscript wo der Nutzer die Gelegenheit hat eigene Smiliesanzulegen,soweit klappt alles gut nur eines haut überhaupt nicht hin nämlich die Prüfung ob ein Smilie oder ein dazugehöriger Code schon vorhanden ist.

    Das Problem hierbei ist das er die Fehlermeldung die im echo steht immer ausgibt obwohl das Smilie wie der Code gar nicht vorhanden sind.

    Hier mal der Code mit Prüfung und einsenden!

    PHP-Code:
    <?php
    if(isset($_POST['sendsmile']))
    {    
        
    //Prüfung ob Smiliecode in Ordnng ist
        
    $code $_POST['code'];
        if(!
    eregi("^[:][a-z0-9]{3,}[:]$mi",$code))
        {
            require(
    'kopf.php');
            require(
    'admin_kopf.php');
            echo
    "der code ist falsch";
            require(
    'fuss.php');
            exit();
        }
        
    //Auslesen aus der Datenbank zur Kontrolle
        
    $sqlbefehl ="Select * From $tab_smilie";
        
    $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
        while(
    $row mysql_fetch_array($ergebnis)){
                
    $smilie $row['image'];
                
    $smiliecode $row['code'];
        }
        
    //Kontrolle nach existirenden Smilie
        
    if($smilie)
        {
            echo
    "Das Smilie ist schon vorhanden!";
            exit();
        }
        
    //Kontorlle nach existierenden Smiliecode
        
    elseif($smiliecode)
        {
            echo
    "Der Smiliecode existiert schon";
            exit();
        }
        
    //Falls beides nicht vorhanden Smilie in Datenbank eintragen
        
    else
        { 
        
    $image=getimagesize($_FILES[img][tmp_name]);
        {
            if(!
    $image[2]==|| !$image[2]==|| !$image[2]==3)
            {
                require(
    'kopf.php');
                require(
    'admin_kopf.php');
                echo
    "Das Format ist falsch!<br>
                <a href=\"smile_upload.php\">Zurück</a>
                "
    ;
                require(
    'fuss.php');
                exit();
            }
            else
            {
                
    copy($_FILES[img][tmp_name],"smilies/".$_FILES[img][name]);
                
    $bild="".$_FILES[img][name]."";
                
    $sqlbefehl ="Insert Into $tab_smilie
                            (code,image)
                    VALUES    ('
    $code','$bild')
                            "
    ;
                
    $result mysql_query($sqlbefehl)or die(mysql_error());
                
    header("Location: smile_list.php");
            }
        }
        }
    //ende else smilie und code kontrolle
    }//ende post
    ?>
    Wäre nett wenn mir jemand sagen kann wo hier der Fehler liegt.

    Mfg der Litter
    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
    http://www.lit-web.de

  • #2
    PHP-Code:
    while($row mysql_fetch_array($ergebnis)){
      
    $smilie $row['image'];
      
    $smiliecode $row['code'];

    hier überschreibst du ja immer wieder die variablen. probier mal
    PHP-Code:
    while($row mysql_fetch_array($ergebnis)){
      
    $smilie[] = $row['image'];
      
    $smiliecode[] = $row['code'];
    }
    print_r($smilie); 
    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Das Problem hierbei ist das er die Fehlermeldung die im echo steht immer ausgibt obwohl das Smilie wie der Code gar nicht vorhanden sind.
      POST Feld nicht gesetzt --> eregi() scheitert --> Fehlermeldung kommt --> works as designed
      Prüfe zusätzlich, dass der Code (POST) gesetzt ist und nicht leer ist
      PHP-Code:
      if(isset($_POST['code']) && !empty($_POST['code']) && !eregi("^[:][a-z0-9]{3,}[:]$mi",$code)){ 
      könnte helfen

      Gruss

      tobi
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar


      • #4
        Array ( [0] => top.gif [1] => bottom.gif [2] => daumen.gif [3] => winke.gif [4] => klatsch.gif [5] => zwink.gif [6] => stiel.gif [7] => macke.gif [8] => frage.gif [9] => traurig3.gif [10] => zorn.gif [11] => fies2.gif [12] => cool.gif ) Der Smiliecode existiert schon

        Jetzt kommt dieses Ergebnis und er gibt wieder die Fehlermeldung aus obwohl der Code wie das Smilie gar nicht existieren
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          $smilie und $smiliecode werden immer existieren solange deine Tabelle nicht ganz leer ist. Du musst deine SQL Abfrage doch noch irgendwie einschränken, denn du suchst doch in der Tabelle ob ein bestimmter Code schon exisitert. Also musst du doch eine WHERE-Klausel einführen die z.B. nach dem Code sucht.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Habe das jetzt so geändert aber bekomme nun eine Sql Fehlermeldung. Ich stehe grad komplett auf den Schlauch oder habe das berühmte Brett vorm kopf!

            Bekomme diese Fehlermeldung!

            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and image=' at line 1

            PHP-Code:
            <?php
            $sqlbefehl 
            ="Select code,image From $tab_smilie where code=".$smiliecode." and image=".$smilie."";
                
            $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
                while(
            $row mysql_fetch_array($ergebnis)){
                        
            $smiliecode[] = $row['code'];
                        
            $smilie[] = $row['image'];
                }
                
            print_r($smilie);
                
            //Kontorlle nach existierenden Smiliecode
                
            if($smiliecode)
                {
                    echo
            "Der Smiliecode existiert schon";
                    exit();
                }
                
            //Kontrolle nach existirenden Smilie
                
            elseif($smilie)
                {
                    echo
            "Das Smilie ist schon vorhanden!";
                    exit();
                }
            ?>
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              PHP-Code:
              $sqlbefehl ="Select code,image From $tab_smilie where code='".$smiliecode."' and image='".$smilie."'"
              So in etwa ?

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                zeichenkettenverknüpfung!
                PHP-Code:
                $sqlbefehl ='select code,image from '.$tab_smilie.' where code=\''.$smiliecode.'\' and image=\''.$smilie.'\'';
                $sqlbefehl ='select code,image from '.$tab_smilie.' where code='."'".$smiliecode."'".' and image='."'".$smilie."'"
                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  So sieht es jetzt aus und er läd das Smilie jetzt hoch wenn nichts gefunden wurde,jedoch läd er es auch hoch wenn Code wie Smilie schon vorhanden sind!

                  PHP-Code:
                  <?php
                  //Auslesen aus der Datenbank zur Kontrolle
                      
                  $sqlbefehl ='select code,image from '.$tab_smilie.' where code='."'".$smiliecode."'".
                  and image='
                  ."'".$smilie."'";
                      
                  $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
                      while(
                  $row mysql_fetch_array($ergebnis)){
                              
                  $smiliecode[] = $row['code'];
                              
                  $smilie[] = $row['image'];
                      }
                      
                  print_r($smilie);
                      
                  //Kontorlle nach existierenden Smiliecode
                      
                  if($smiliecode)
                      {
                          echo
                  "Der Smiliecode existiert schon";
                          exit();
                      }
                      
                  //Kontrolle nach existirenden Smilie
                      
                  elseif($smilie)
                      {
                          echo
                  "Das Smilie ist schon vorhanden!";
                          exit();
                      }
                  ?>
                  Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                  http://www.lit-web.de

                  Kommentar


                  • #10
                    So sieht es jetzt aus und er läd das Smilie jetzt hoch wenn nichts gefunden wurde,jedoch läd er es auch hoch wenn Code wie Smilie schon vorhanden sind!
                    Der Client muss doch die Daten erst hochladen, damit du überhaupt feststellen kannst ob du den Smilie bereits hast. Danach, falls der Smilie bereits vorhanden ist, bricht doch dein Script einfach ab. Oder wird der Smilie trotzdem noch in die DB eingetragen, obwohl der Smilie bei dir bereits vorhanden ist?
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Also muss ich die Prüfung nach den Insert Into Anweisung schreiben das er es hochladen kann und erst dann alarm schlägt wenn das Smilie oder der Code schon existieren?
                      Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                      http://www.lit-web.de

                      Kommentar


                      • #12
                        Wieso machst du eigentlich eine Prüfung auf den Dateinamen? Nur weil zwei Dateien gleich heissen, haben sie noch lange nicht den gleichen Inhalt. Speichere doch von jedem Smilie in einer zusätzlichen Spalte den md5-Hash Wert des Bildes. Nach dem Upload machst du den md5 des Uploads und suchst danach in der DB. Wenn er nicht vorhanden ist, dann kannst du prüfen ob du den Namen des Bildes resp den Code bereits in der DB hast und falls vorhanden musst du diese Wert anpassen, damit diese eindeutig sind.

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar

                        Lädt...
                        X