Denkfehler oder Scriptfehler?

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

  • Denkfehler oder Scriptfehler?

    PHP-Code:
    <?php
    if($_REQUEST['do']=="insertshout"){
    $uname trim($_REQUEST['data']['uname']);
    $uname htmlentities($uname);
    $uname strip_tags($uname);
    $htmltext trim($_REQUEST['data']['htmltext']);
    $htmltext htmlentities($htmltext);
    $htmltext strip_tags($htmltext);
        
    if(
    $uname && $htmltext){
    mysql_query("INSERT INTO ".$sp_jos."shout_inserts 
    uname,idate,htmltext)VALUES('"
    .$uname."','".time()."','".$htmltext."')");
    }
    else{
    ?>
    <script type="text/javascript">alert("Es wurden nicht 
    alle\nnotwendigen Daten eingegeben.");</script>
    <?php        
    }
    }
    ?>
    Öhm die Daten werden 2 mal in die Datenbank eingetragen. Hab ich n Denkfehler? theo müsste doch nur ein eintrag erfolgen oder?
    Signatur-Text ...

  • #2
    Das Lustige iss - geb ichs mit nem echo aus kommts nur einmal - füg ichs in die datenbank ein kommts 2 mal ... ôO
    Signatur-Text ...

    Kommentar


    • #3
      Kann es daran liegen das ich den bereich mit ob_start() einbinde?
      Signatur-Text ...

      Kommentar


      • #4
        Irgendwann werde ich aufhören, solch unformatierten Code überhaupt noch anzuschauen. Es ist wirklich kein Aufwand, den Code anständig einzurücken - viele Editoren machen sowas sogar (fast) automatisch - aber es erhöht die Lesbarkeit enorm.
        Und was du schreibst stimmt - mindestens mit dem gezeigeten Code - nicht, es werden nicht zwei Einträge gemacht, sondern gar keiner. Wenn du mysql_error() abfragen würdest, dann würde ein Fehler ausgeben.
        Weiter hoffe ich doch, dass du das Datum (idate) in einem Attribut vom Typ DATETIME abspeicherst. Korrekt sähe das dann etwa so aus:
        PHP-Code:
        <?php
        if($_REQUEST['do'] == "insertshout"){
            
        $uname strip_tags(htmlentities(trim($_REQUEST['data']['uname'])));
            
        $htmltext strip_tags(htmlentities(trim($_REQUEST['data']['htmltext'])));
            
            if(!empty(
        $uname) && !empty($htmltext)){
                
        $sql "INSERT INTO ${sp_jos}shout_inserts (name, idate, htmltext)
                        VALUES('
        $uname', NOW(), '$htmltext')";
                
        mysql_query($sql) || or die(mysql_error());
            }
            else{
                echo 
        "
                  <script type='text/javascript'>alert('Es wurden nicht 
                  alle\nnotwendigen Daten eingegeben.');</script>"
        ;
            }
        }
        ?>
        Gruss
        H2O

        Kommentar


        • #5
          Original geschrieben von H2O
          Und was du schreibst stimmt - mindestens mit dem gezeigeten Code - nicht, es werden nicht zwei Einträge gemacht, sondern gar keiner. Wenn du mysql_error() abfragen würdest, dann würde ein Fehler ausgeben.
          Ich werd doch wohl noch meine Datenbank anschauen können. Klar werden 2 Einträge vorgenommen! Hallo? Wo kommen die sonst her? Denksu da sitzt n Zwerg und schreibt das da rein? und mysql_error liefert gar nix - anscheinend radiert der das sogar noch weg - omg ...
          Signatur-Text ...

          Kommentar


          • #6
            Dann hast du einen anderen Code, Insert-Befehle mit ungeraden Klammerpaaren werden definitiv nicht ausgeführt.
            Gruss
            H2O

            Kommentar


            • #7
              Ich habe denselben Code - Eine Klammer wurde hier im Code weggenommen - jetzt weiß ich was Du meinst ;-)
              Trotzdem isses 2 mal drinne ...
              Signatur-Text ...

              Kommentar


              • #8
                wenn du schon die vermutung hast, dass es an ob_start liegen könnte, warum probierst du es denn nicht mal ohne??

                denn das ist durchaus möglich. einmal beim buffern, einmal beim ausgeben - das kann man aber anhand des codes hier nicht sagen.

                warum eigentlich gebuffert... bei dem hier geposteten code doch scheinbar unnötig, oder?
                **********
                arkos
                **********

                Kommentar


                • #9
                  Ja habs ja eben probiert - liegt an dem sch*** buffern. Doch iss nötig, da es in ein System eingebunden wird
                  Signatur-Text ...

                  Kommentar


                  • #10
                    Original geschrieben von dani_o
                    Ja habs ja eben probiert - liegt an dem sch*** buffern. Doch iss nötig, da es in ein System eingebunden wird
                    Kann ich mir kaum vorstellen, dass es am Ausgabebuffer liegt. Schließlich wird nicht das Skript an sich gebuffert, sondern nur die Ausgabe!
                    Du wirst das Skript irgendwo doppelt aufrufen!!

                    Kommentar


                    • #11
                      Original geschrieben von PHP-Desaster
                      Du wirst das Skript irgendwo doppelt aufrufen!!
                      Dann hätte ich mit echo $query; aber auch 2 ausgaben oder? ;-)
                      Signatur-Text ...

                      Kommentar


                      • #12
                        Original geschrieben von PHP-Desaster
                        Kann ich mir kaum vorstellen, dass es am Ausgabebuffer liegt. Schließlich wird nicht das Skript an sich gebuffert, sondern nur die Ausgabe!
                        Du wirst das Skript irgendwo doppelt aufrufen!!
                        wenn er beim buffern schon mysql_query ausführt und den puffer ggf noch mit flush oder gar echo ausgibt, ist es durchaus denkbar, dass der query zweimal ausgeführt wird. habs nicht getestet, aber denkbar isses in meinen augen schon.

                        verstehe nur nicht ganz, warum es gebuffert werden muss. ein include an der richtigen stelle täts auch....
                        **********
                        arkos
                        **********

                        Kommentar


                        • #13
                          Original geschrieben von arkos
                          ein include an der richtigen stelle täts auch....
                          Nur wenn der Code generiert wird, würde ein Include den Bereich an der falschen stelle ausgeben ;-)
                          Signatur-Text ...

                          Kommentar


                          • #14
                            Original geschrieben von dani_o
                            Nur wenn der Code generiert wird, würde ein Include den Bereich an der falschen stelle ausgeben ;-)
                            da scheint mir aber bös was an der struktur zu fehlen....

                            wie sagt tobiaz immer so schön: EVA-prinzip
                            **********
                            arkos
                            **********

                            Kommentar


                            • #15
                              wenn er beim buffern schon mysql_query ausführt und den puffer ggf noch mit flush oder gar echo ausgibt, ist es durchaus denkbar, dass der query zweimal ausgeführt wird. habs nicht getestet, aber denkbar isses in meinen augen schon.
                              Der Buffer beinhaltet lediglich die Ausgaben, die eigentlich der Client direkt erhalten würde. Da ist nix mit zweimal im Buffer ausführen!!

                              Kommentar

                              Lädt...
                              X