Reload verursacht SQL-Eintrag

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

  • Reload verursacht SQL-Eintrag

    Hallo Leute
    Vorab: Ich bin ein absoluter PHP-Noob und gerade dabei mir den Spass durch verschiedene Tutorials und diverse Handbücher selbst beizubringen.
    Momentan spiele ich etwas damit herum per Formular Daten in die SQL zu schreiben.
    Nun habe ich aber ein Problem hinter das ich nicht so wirklich steige.

    Ich hab mir was kleines zusammengetippt, was mir Textfelder, Checkboxen und Radiobuttons in die SQL schreibt.
    Der Code sieht (hier etwas gekürzt) so aus:
    PHP-Code:
    <?php
    include("db.php");
    $eintrag "INSERT INTO links (init, urlname, name, banner, beschreibung, frage1, frage2) 
    VALUES ('"
    .$_POST["init"]."','".$_POST["urlname"]."','".$_POST["name"]."','".$_POST["banner"]."','".$_POST["beschreibung"]."','".$_POST["frage1"]."','".$_POST["frage2"]."')";
    $eintragen mysql_query($eintrag);
    ?>
     <form method="post" action="index.php">
     <input type="text" name="init">
     <input type="text" name="urlname">
     <input type="text" name="name">
     <input type="text" name="banner">
     <input type="text" name="beschreibung">
     <input type="checkbox" name="frage1" value="1"> Wert 1<br>
     <input type="checkbox" name="frage1" value="2"> Wert 2
     <input type="radio" name="frage2" value="1"> Wert 1<br>
     <input type="radio" name="frage2" value="2"> Wert 2
     <input type="submit" name="button" value=" OK ">
     </form>
    Das Eintragen der Daten funktioniert auch wunderbar.
    Das Problem ist nur, daß auch ein Datenbankeintrag erfolgt, wenn die Seite aufgerufen oder ohne Eingabe von Daten reloadet wird.

    Kann mir irgendwer sagen wo genau mein Fehler liegt?

  • #2
    Benutz nen "if" um das zu umgehen - z.B. if (empty($_POST['daten']) && mehrere bedingungen)
    Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
    var_dump(), print_r(), debug_backtrace und echo.
    Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
    Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
    Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

    Kommentar


    • #3
      Du solltest zuerst überprüfen, ob das Formular auch abgesendet wurde, also auf den Submit-Button geklickt wurde.
      PHP-Code:
      <input type="submit" name="submit" value="OK" />

      if (isset(
      $_POST['submit'] and ($_POST['submit'] == 'OK'))
      {
          
      // Nutzlast

      Grüße
      Nieder mit der Camel Case-Konvention

      Kommentar


      • #4
        hab jetzt mal mit nem if rumgespielt.
        noch längst nicht perfekt. diente nur mal zum testen.
        folgendermassen hab ichs mal hingefummelt:
        PHP-Code:
        <?php
        include("db.php");
        if (isset(
        $_POST['init']))
        {
        $eintrag "INSERT INTO links (init, urlname, name, banner, beschreibung, frage1, frage2) 
        VALUES ('"
        .$_POST["init"]."','".$_POST["urlname"]."','".$_POST["name"]."','".$_POST["banner"]."','".$_POST["beschreibung"]."','".$_POST["frage1"]."','".$_POST["frage2"]."')";
        $eintragen mysql_query($eintrag);
        }
        ?>
        Die ungewollten Einträge in der SQL sind nun weg.
        Aber wenn ich das nicht völlig verpeile habe ich doch mit
        PHP-Code:
        if (isset($_POST['init'])) 
        überprüft ob das Feld init ausgefüllt wurde. Erst dann sollen Daten an die SQL gesendet werden. Richtig? Oder hab ich das jetzt total verrafft?

        Warum werden nun die anderen Felder an die SQL gesendet, obwohl ich das Feld init leer lasse?

        Kommentar


        • #5
          isset() ist eben nicht empty().

          Kommentar

          Lädt...
          X