Ankündigung

Einklappen
Keine Ankündigung bisher.

Problem mit Update

Einklappen

Neue Werbung 2019

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

  • Problem mit Update

    Hi,

    wie ich schon geschrieben habe, habe ich ein kleines Problem mit meinem Update.
    Mit folgenden Script speichere ich Antworten auf Threads in meinem Forum in meiner DB:

    PHP-Code:
    <?php
    error_reporting
    (E_ALL);
    include (
    "function/function/verbindung.php");

    if(isset(
    $_POST["forum_id"]) && isset($_POST["thread_id"]))
    {
    $post $_POST["message"];
    $autor_id $_POST["autor_id"];
    $thread_id $_POST["thread_id"];
    $date time();
    $forum_id $_POST["forum_id"];

        
    $sql "INSERT INTO posts
                    (post, autor_id, thread_id, forum_id, date)
                VALUES
                    ('"
    .$post."',
                    '"
    .$autor_id."',
                    '"
    .$thread_id."',
                    '"
    .$forum_id."',
                    '"
    .$date."')";
                    
        
    mysql_query($sql) OR die(mysql_error());

              
    $sql "UPDATE user SET posts = posts + 1 WHERE id ='".$autor_id."'";
                
    mysql_query($sql) OR die(mysql_error());

    echo 
    "<meta http-equiv='refresh' content='0; URL=posts.php?forum_id=".$forum_id."&thread_id=".$thread_id."'>"

    }


    ?>
    Naja aber beim dazurechnen eines Posts, rechnet er nicht nur einen post drauf sondern zwei, und ich kann mir nicht erklären warum?


  • #2
    Naja ist doch klar, du fügst eine Zeile hinzu, in der der Wert von $_POST steht und dann machst du nochmal ein Update darauf und addierst 1.

    Ist das hier Absicht?
    Code:
    WHERE id ='".$autor_id."'";
    ?

    Wie in einem anderen Thread von dir, von mir schon erwähnt kannst du eine Weiterleitung auch mit PHP machen.

    Kommentar


    • #3
      Hää?

      ich habe posts nur einmal heir stehen:

      PHP-Code:
      <?php
                $sql 
      "UPDATE user SET posts = posts + 1 WHERE id ='".$autor_id."'";
                  
      mysql_query($sql) OR die(mysql_error());

      ?>
      Und nur dort addiere ich was drauf.
      Ich weiß jetzt eigentlich nicht so richtig was du meinst

      Kommentar


      • #4
        Sorry hab nicht auf den Tabellennamen geachtet.
        Deine UPDATE ist aber richtig. Der Fehler liegt irgendwo vor uns verborgen in deinem Skript. Zumindest sehe ich ihn nicht auf Anhieb.

        Dein Skript übrigens in Kurzform (übersichtlicher):

        PHP-Code:
        <?php
        error_reporting
        (E_ALL);
        include (
        "function/function/verbindung.php");

        if(isset(
        $_POST["forum_id"], $_POST["thread_id"])) {
          
        $sql1 sprintf("INSERT INTO posts (post, autor_id, thread_id, forum_id, date) VALUES ('%s', %u, %u, %u, NOW())",
            
        $_POST['message'], $_POST['autor_id'], $_POST['thread_id'], $_POST['forum_id']);
          
        mysql_query($sql1) or die(mysql_error());

          
        $sql2 sprintf("UPDATE user SET posts = posts + 1 WHERE id = %u LIMIT 1"$_POST['autor_id']);
          
        mysql_query($sql2) or die(mysql_error());

          
        header(sprintf('Location: posts.php?forum_id=%u&thread_id=%u'$_POST['forum_id'], $_POST['thread_id']));
          exit;
        }
        ?>
        Du solltest dich übrigens dringend mit der Validierung von Usereingaben beschäftigen.

        Kommentar


        • #5
          Was ist genau mit Validierung gemeint:

          stripshlash()

          zum Beispiel ???

          Kommentar


          • #6
            - http://de3.php.net/manual/en/security.database.php
            - http://php-faq.de/q/q-sql-injection.html

            Kommentar


            • #7
              was bedeutet in deinem code %s oder %u

              Kommentar


              • #8
                Each conversion specification consists of a percent sign (%), followed by one or more of these elements, in order: [...]
                http://www.php.net/sprintf

                Kommentar


                • #9
                  Zitat von malte
                  Was ist genau mit Validierung gemeint:
                  http://www.phpfriend.de/forum/ftopic51545.html

                  Was da im Edit steht.
                  Diese Erweiterung ist EXPERIMENTELL.
                  [...]
                  Seien Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko..

                  Kommentar

                  Lädt...
                  X