kostenloser Webspace werbefrei: lima-city


Daten werden immer 2 mal geschickt. Warum?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    j-s

    Kostenloser Webspace von j-s

    j-s hat kostenlosen Webspace.

    Ich bin ganz neu bei PHP also ich habe vor 3 Tagen angefangen.

    Als erstes wollte ich einmal ein Gästebuch machen.
    Das sieht dann so aus.

    form.php

    <html>
    <head>
    <title>Beitrag</title>
    </head>
    <body>
    
    <form method=post action="form_1.php">
    
    <h3>Beitrag</h3>
    
    <table>
    <tr><td>Name: </td><td> <input type=text name="name"></td><br> 
    <tr><td>Beitrag: </td><td> <textarea name="eintrag"></textarea></td><br>
    <tr><td></td><td><input type="submit" value="Send"></td></tr>
    
    </table>
    
    </td>
    </tr>
    </form>
    
    </body>
    </html>



    form_1.php

    <?
        session_start();
        $_SESSION['wert'] = $_POST['name']; 
    ?>
    <a href="./form_3.php"><input type=button value="weiter"></a>



    form_3.php

    <?  
        session_start();
        $mysql_user = 'xxxx';
        $mysql_pw   = 'xxxx';
        $mysql_host = 'localhost';
        $mysql_db   = 'buch';
       
     $name = $_SESSION['wert'];   
        
        if(@mysql_connect($mysql_host, $mysql_user, $mysql_pw))
        {
            echo "OK.<br>";  
        }
        else
        {   
            die('Fehler! Datenbank gibt es nicht');
        } 
    
        if(@mysql_select_db($mysql_db))
        {
            echo "OK Datenbank $mysql_db ausgewählt.";  
        }
        else
        {
            die('Fehler! Datenbank gibt es nicht');
        } 
    
        mysql_query("INSERT INTO `buch`.`beitrag` VALUES ('$name','')");
    ?>


    Wenn ich auf der ersten seite z.B: Klaus eingebe ist in meiner Datenbank nacher 2 mal Klaus?!.

    Bis jetzt wir nur der Name übertragen. Die Beiträge kann man ja später schnell ergänzen.

    Aber ich habe keine ahnung an was das liegt.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. t*****b

    Ich hatte einmal das selbe Problem und es lag an irgendeinem Bug in MySQL. Irgendwann ging das einfach so wieder, erklären konnte ich mir das auch nicht.
  4. b******a

    Hast du Plugins wie YSlow installiert, welche die Seite 2x laden?
  5. j-s schrieb:
    mysql_query("INSERT INTO `buch`.`beitrag` VALUES ('$name','')");



    Deine INSERT stimmt glaube ich nicht.
    Die Syntax ist: INSERT INTO tabellenname (spaltenname1, spaltenname2) VALUES ('wert1', 'wert2');

    Grüßle
  6. Autor dieses Themas

    j-s

    Kostenloser Webspace von j-s

    j-s hat kostenlosen Webspace.

    blacktea schrieb:
    Hast du Plugins wie YSlow installiert, welche die Seite 2x laden?


    nein habe ich nicht

    scout schrieb:
    j-s schrieb:
    mysql_query("INSERT INTO `buch`.`beitrag` VALUES ('$name','')");



    Deine INSERT stimmt glaube ich nicht.
    Die Syntax ist: INSERT INTO tabellenname (spaltenname1, spaltenname2) VALUES ('wert1', 'wert2');

    Grüßle


    doch der stimmt, ich habe es in myadmin raus kopiert :holy:

    Ich habe jetzt aber eine lösung gefunden, ich habe einfach die daten sofort an from_3 geschickt.

    form.php

    <html>
    <head>
    <title>Beitrag</title>
    </head>
    <body>
    
    <form method=post action="form_3.php">
    
    
    <h3>Beitrag</h3>
    
    <table>
    <tr><td>Name: </td><td> <input type=text name="name"></td><br> 
    <tr><td>Beitrag: </td><td> <textarea name="eintrag"></textarea></td><br>
    <tr><td></td><td><input type="submit" value="Send"></td></tr>
    
    </table>
    
    </td>
    </tr>
    </form>
    
    </body>
    </html>


    form_3.php

    <?  
        session_start();
        
        $name = $_POST['name'];
        
        $mysql_user = 'xxxx';
        $mysql_pw   = 'xxxx';
        $mysql_host = 'localhost';
        $mysql_db   = 'buch';
        
        if(@mysql_connect($mysql_host, $mysql_user, $mysql_pw))
        {
            echo "OK.<br>";  
        }
        else
        {   
            die('Fehler! Datenbank gibt es nicht');
        } 
    
        if(@mysql_select_db($mysql_db))
        {
            echo "OK Datenbank $mysql_db ausgewählt.";  
        }
        else
        {
            die('Fehler! Datenbank gibt es nicht');
        } 
    
       mysql_query("INSERT INTO `buch`.`beitrag` VALUES ('$name','')");
    ?>


    jetzt wir der name auch nur einmal geschickt.

    War wahrscheinlich wirklich nur ein Bug, aber gegen den kann man eh nix machen, als normaler user.

    gruß
    Johannes
  7. trueweb schrieb:
    Ich hatte einmal das selbe Problem und es lag an irgendeinem Bug in MySQL. Irgendwann ging das einfach so wieder, erklären konnte ich mir das auch nicht.


    Bis du zu solch einer Aussage greifst, sollte man sich schon sehr sicher sein, dass es en Bug ist...
    Das ist ja schon fast so, als ob du sagst der C++-Compiler hat nen Bug. Ist möglic haber unwahrscheinlich.
    Meist liegt der Fehler doch an einem selbst und er liegt einfach ganz woanders als man vermutet.
  8. t*****b

    nikic schrieb:
    trueweb schrieb:
    Ich hatte einmal das selbe Problem und es lag an irgendeinem Bug in MySQL. Irgendwann ging das einfach so wieder, erklären konnte ich mir das auch nicht.


    Bis du zu solch einer Aussage greifst, sollte man sich schon sehr sicher sein, dass es en Bug ist...
    Das ist ja schon fast so, als ob du sagst der C++-Compiler hat nen Bug. Ist möglic haber unwahrscheinlich.
    Meist liegt der Fehler doch an einem selbst und er liegt einfach ganz woanders als man vermutet.


    Ich programmiere schon einige Jahren u.a. SQL und hatte nie solch ein Problem, bis dann auf einmal - unerklärlicherweise - doppelte Einträge gemacht wurden, obwohl der INSERT-Query nur einmal ausgeführt wurde (es ist ein leichtes herauszufinden, wie oft ein Query ausgeführt wird). Nach meinen Recherchen habe ich in der MySQL-Community erfahren, dass dies ein äußerst seltener Bug ist, der nur unter ganz speziellen Rahmenbedienungen auftritt. Ich weiß nicht, in wie fern du dich mit Softwarearchitektur auskennst, aber wenn deine Anwendung 1x bei 1000000000... Operationen etwas falsch oder anders bzw. nicht so wie geplant macht, ist es sehr schwierig den Fehler auszumachen. Software ist ab bestimmten Größenordnungen (und wir reden hier nicht über ein paar Zeilen PHP-Script sondern einige hundert tausend Zeilen Code) sehr komplex. Hier ein Link, nur um dir einmal zu zeigen, wie viele Bugs in MySQL bisher gefunden wurden: http://bugs.mysql.com/bugstats.php. Jedem, der seine Software möglichst sicher und bugfrei entwickeln möchte, empfehle ich TDD und ein Autotester, dadurch hat man stetige Kontrolle über die Funktionalität des Programmes, egal an welcher Schraube man dreht.

    Beitrag zuletzt geändert: 14.5.2009 17:34:50 von trueweb
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!