• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Formular MySql Insert Refresh

DBlog

Mitglied
Hallo ich habe folgendes Problem.
Ich möchte gerne ein Formular und eine Ausgabe dieses auf einer Seite haben. Nun funktioniert das Senden bzw. Ausgeben von Date schon gut.
Öffne ich die Seite, so wird jedoch ein neuer Datensatz mit keiner Information gepeichert und ausgegeben.
Refresh ich die Seite, kommt ein Meldung und der davor eingegebene Datensatz wird ein 2 mal gespeichert.
Was kann man dagegen tu ?
Weiters ist mir folgendes Aufgefallen: Habe in phpmyadmin einen primärschlüssel auf Nr. mit a_i damit jeder Wert eine eindeutige Zahl hat. Gibt man ein paar Werte ein, so werden sie aufsteigen durchnummeriert, löscht man aber einige der Datesätze und fügt danach wieder ein paar hinzu so gibt zB einen Sprung von Nr. 4 auf Nr.20. Wie kann ich das verhindern ?

Code:

html
HTML:
<!-- Formular -->
 
    <form method="post" name="formular" onsubmit="return checkForm();" action="mysql_insert+echo.php">
     
       <div style="margin-top: 5%;" class="row">
         <label style="text-align: center;" for="produkt"><h5>Produkt</h5></label>
         <input style="text-align: center;" class="u-full-width" id="produkt" type="text" name="produkt" value="" />
       </div>
       <div style="" class="row">
         <label style="text-align: center;" for="art"><h5>Art</h5></label>
         <select style="text-align: center;" class="u-full-width" id="art" type="text" name="art" value="">
           <option value="Kamera">Kamera</option>
           <option value="Computer">Computer</option>
           <option value="Zubehör">Zubehör</option>
         </select> 
       </div>
       <div style="" class="row">
         <div class="six columns">
           <label style="text-align: center;" for="preis"><h6>Preis</h6></label>
           <input style="text-align: center;" class="u-full-width" id="preis" type="number" name="preis" value="" />
         </div>
         <div class="six columns">
           <label style="text-align: center;" for="datum"><h6>Datum</h6></label>
           <input class="u-full-width" id="datepicker" type="date" name="datum" value="" />
         </div>
       
       
         <input name="submit" style="margin-top: 1%;" class="twelve columns button-primary" value="Submit" type="submit">
       </div>
    </form>
   
    <!-- / Formular -->

php
PHP:
$db_server = mysql_connect("localhost","root", "root_pw") OR die('Verbindung zum <b>Server</b> fehlgeschlagen'); // verbindung zu server
     
       mysql_select_db("DB_Tests") OR die('Verbindung zur <b>Datenbank</b> fehlgeschlagen');
     
       $produkt = @$_POST['produkt'];
       $art = @$_POST['art'];
       $preis = @$_POST['preis'];
       $datum = @$_POST['datum'];
           
       $sql_w = "INSERT INTO `i+e_entries` (Produkt, Art, Preis, Datum) VALUES ('$produkt','$art','$preis','$datum')" OR die ("MySQL-Error: " . mysql_error());
     
       $result_w = mysql_query($sql_w);
     
     
       $sql_r = "SELECT * FROM `i+e_entries`" OR die ("MySQL-Error: " . mysql_error()); // ACHTUNG: `` statt: "" oder ''
     
       $result = mysql_query($sql_r);
     
       // tabelle
     
       echo "<table class='u-full-width'>";
     
       echo "<thead>
             <tr>
               <th>Produkt</th>
               <th>Art</th>
               <th>Preis</th>
               <th>Datum</th>
               </tr>
            </thead>
         
            <tbody>";
     
     
       while ($var = mysql_fetch_assoc($result)) {
     
         echo "<tr>";
         echo "<td>" . $var["Produkt"] . "</td>";
         echo "<td>" . $var["Art"] . "</td>";
         echo "<td>" . $var["Preis"] . "</td>";
         echo "<td>" . $var["Datum"] . "</td>";
         echo "</tr>";
               
       }
     

       echo "</tbody></table>";
     
       // / tabelle
     
     
       mysql_close($db_server); 
   
    ?>


js
Code:
function checkForm() {
 
     if (document.formular.produkt.value == "") {
       document.forms["formular"]["produkt"].style.border = "1px solid red";
       return false;
     }
     if (document.formular.art.value == "") {
         document.forms["formular"]["art"].style.border = "1px solid red";
         return false;
       }
  if (document.formular.preis.value == "") {
         document.forms["formular"]["preis"].style.border = "1px solid red";
         return false;
       }
     if (document.formular.datum.value == "") {
         document.forms["formular"]["datum"].style.border = "1px solid red";
         return false;
       }   
  }
Danke im Voraus
 
Zuletzt bearbeitet:
Werbung:
Ouch. http://www.vlmedia.de/566/sql-injection

... Refresh ich die Seite, kommt ein Meldung und der davor eingegebene Datensatz wird ein 2 mal gespeichert.
Was kann man dagegen tu ?
Nur dann in die Datenbank eintragen, wenn der Senden-Button betätigt wurde.

... gibt zB einen Sprung von Nr. 4 auf Nr.20. Wie kann ich das verhindern ?
Du solltest das nicht verhindern wollen. Es würde die Relationen der Datenbank zerschießen.
 
Diese Zeilen sind Klasse:
PHP:
$sql_w = "INSERT INTO ..." OR die ("MySQL-Error: " . mysql_error());
    
$sql_r = "SELECT ..." OR die ("MySQL-Error: " . mysql_error());
Welchen Datenbankfehler erwartest du bei einer Stringzuweisung? :D :D :D
 
Werbung:
Werbung:
Hierbei
PHP:
<?php
    $sql = "" or die("Fehler");
  
    echo "Kein Fehler";
?>
kommt "Fehler" raus, und ich glaube kaum, dass man das möchte. :D
Einen leeren String wertet PHP bei schwacher Identität auch als false aus.
PHP:
<?php
    $sql = "A" or die("Fehler"); 
   $sql = "" !== false or die("Fehler");
  
    echo "Kein Fehler";
?>
Dürfte keinen Fehler geben.
 
Können wir uns darauf einigen, dass das, was DBlog geschrieben hat, nicht unbedingt falsch, aber Blödsinn ist? Denn genau darum ging es mir.
 
Werbung:
Zurück
Oben