Mehrfacheinträge in der DB

R3DD3VIL

Mitglied
Hallo zusammen,

ich kämpfe mich gerade biserl durch php+mysql und versuche so meine ersten Selbstprogrammierungen. Und da hab ich irgendwie den Wurm drin und weiss nicht warum. Und zwar versuch ich mir im moment ein kleines Webinterface zu basteln, bei dem man Kundendaten eingibt, und auch wieder auslesen kann.

Nun hab ich das Problem, das mit der Eingabe und Speicherung funktioniert soweit einwandfrei. Nur jedesmal wenn ich die php-datei aufrufe, macht mir das Script einen "Blindeintrag" in meine DB, ohne das ich bisher irgendwelche KD-Daten eingegeben habe. So haben sich jetzt bei meinen Tests zig leere Einträge eingeschleust was eigentlich nicht soll.

Kann mir bitte jemand weiterhelfen, wo ich hier nun den Fehler drin habe das ich ständig leer einträge bekomme beim Seitenaufruf und nicht erst wenn ich auf Eintragen klicke ?
Oder hab ich bei den Tabellen der DB was falsch gemacht ?

Für Hife bedanke ich mich schonmal im voraus
MFG
R3DD3VIL

PHP:
<?php
  include("dbconnect.php"); 

  $pid = $_POST["pid"];
  $name = $_POST["name"];
  $vorname = $_POST["vorname"];
  $gebdat = $_POST["gebdat"];
  $dia_begin = $_POST["dia_begin"];
  $albis_id = $_POST["albis_id"];
  
  $eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')";
  
  $submit = mysql_query($eintrag)
  
?>
<html>
<body>
<form method="post">
<table border="0" align="center">
<tr>
<td>Kennzahl</td>
<td><input type="text" name="pid" value="" size="15"></td>
</tr><tr>
<td>Name</td>
<td><input type="text" name="name" value="" size="30"></td>
</tr><tr>
<td>Vorname</td>
<td><input type="text" name="vorname" value="" size="30"></td>
</tr><tr>
<td>Geburtsdatum</td>
<td><input type="text" name="gebdat" value="" size="15"></td>
</tr><tr>
<td>Beginn</td>
<td><input type="text" name="dia_begin" value="" size="15"></td>
</tr><tr>
<td>Nummer</td>
<td><input type="text" name="albis_id" value=""></td>
</tr><tr>
<td>&nbsp;</td>
<td><input type="submit" name="submit" value="Eintragen"></td>
</tr>
</table>
</form>
</body>
</html>
 
Hallo,

das Problem ist, dass du nicht überprüfst, ob das Formular abgeschickt wurde!

Das machst du dann so:

PHP:
<?php 
  if ( isset($_POST["pid"] )
  {
    include("dbconnect.php");  

    $pid = $_POST["pid"]; 
    $name = $_POST["name"]; 
    $vorname = $_POST["vorname"]; 
    $gebdat = $_POST["gebdat"]; 
    $dia_begin = $_POST["dia_begin"]; 
    $albis_id = $_POST["albis_id"]; 
   
    $eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')"; 
   
    $submit = mysql_query($eintrag) 
  }
   
?> 
<html> 
<body> 
<form method="post"> 
<table border="0" align="center"> 
<tr> 
<td>Kennzahl</td> 
<td><input type="text" name="pid" value="" size="15"></td> 
</tr><tr> 
<td>Name</td> 
<td><input type="text" name="name" value="" size="30"></td> 
</tr><tr> 
<td>Vorname</td> 
<td><input type="text" name="vorname" value="" size="30"></td> 
</tr><tr> 
<td>Geburtsdatum</td> 
<td><input type="text" name="gebdat" value="" size="15"></td> 
</tr><tr> 
<td>Beginn</td> 
<td><input type="text" name="dia_begin" value="" size="15"></td> 
</tr><tr> 
<td>Nummer</td> 
<td><input type="text" name="albis_id" value=""></td> 
</tr><tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="submit" value="Eintragen"></td> 
</tr> 
</table> 
</form> 
</body> 
</html>

MfG
Fabsch
 
Super ...
da hätte ich mir glaub noch ewig den Kopf drüber zerbrochen. An dass habe ich gar nicht gedacht. Vielen Dank für die schnelle Hilfe und sachliche Hilfe.

MFG
R3DD3VIL
 
So nun brauch ich doch nochmal Hilfe. Irgendwie hab ich grad den absoluten Blackout. Hab jetzt bei Google und hier im Forum gesucht, und nicht gefunden oder einfach übersehen.

Nach der Hilfe von Fabsch wird nun die Seite nicht mehr geladen, und ich erhalte nur noch eine weiße Fläche ohne die Eingabefelder. Entweder hab ich was übersehen oder ich steig überhaupt nimmer durch im moment. Über nochmalige Hilfe wär ich sehr dankbar. Bin eben noch in der Lernphase ;)

Danke schön schonmal im voraus an euch. Hie rnochmal der Code
PHP:
<?php 
  if ( isset($_POST["pid"] )
  {
    include("dbconnect.php");  

    $pid = $_POST["pid"]; 
    $name = $_POST["name"]; 
    $vorname = $_POST["vorname"]; 
    $gebdat = $_POST["gebdat"]; 
    $dia_begin = $_POST["dia_begin"]; 
    $albis_id = $_POST["albis_id"]; 
   
    $eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')"; 
   
    $submit = mysql_query($eintrag) 
  }
   
?> 
<html> 
<body> 
<form method="post"> 
<table border="0" align="center"> 
<tr> 
<td>Kennzahl</td> 
<td><input type="text" name="pid" value="" size="15"></td> 
</tr><tr> 
<td>Name</td> 
<td><input type="text" name="name" value="" size="30"></td> 
</tr><tr> 
<td>Vorname</td> 
<td><input type="text" name="vorname" value="" size="30"></td> 
</tr><tr> 
<td>Geburtsdatum</td> 
<td><input type="text" name="gebdat" value="" size="15"></td> 
</tr><tr> 
<td>Beginn</td> 
<td><input type="text" name="dia_begin" value="" size="15"></td> 
</tr><tr> 
<td>Nummer</td> 
<td><input type="text" name="albis_id" value=""></td> 
</tr><tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="submit" value="Eintragen"></td> 
</tr> 
</table> 
</form> 
</body> 
</html>

MFG
R3DD3VIL
 
Diese Seite wird leer bzw. weiss angezeigt wenn du schon nur drauf zugreifst oder erst wenn du den "Eintragen"-Button klickst.
Überprüfen, ob das Formular überhaupt gesendet wurde, macht man doch i.d.R. mit
PHP:
if(isset($_POST["submit"])){
...
}
und nicht mit einem Feld... geht natürlich auch...

anyway...diese Zeile:
PHP:
$eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')";
änderst du zu folgender Zeile:
PHP:
$eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('".$pid."','".$name."','".$vorname."','".$gebdat."','".$dia_begin."','".$albis_id."')";
So sollte es klappen. Denn wenn du Variablen in den String einfügst, musst du doch den String unterbrechen (mit " "beenden" und einen Punkt einfügen, damit du die Variable daranhänst, danach wieder einen Punkt, um den folgenden String auch wieder dranzuhängen.
 
Danke für deinen schnellen Eintrag.
Die weiße Seite wird bereits angezeigt wenn ich darauf zugreife. Das mit dem "submit" habe ich inzwischen auch rausgefunden. Allerdings die Änderung mit den Strings unterbechen und wieder dranhängen erzielt leider keinen Erfolg. Hab immer noch die weiße Seite wenn ich darauf zugreife. :confused:

Wie gesagt am Anfang funktionierte die Seite, hat lediglich den Eintrag schon beim Aufrufen der Seite in die DB gemacht, und nicht erst nach dem Klick auf den Absenden Button. Manchmal bin ich echt zu dämlich fürs Programmieren :rolleyes:

MFG
R3DD3VIL
 
Juhuu ...
hab es hinbekommen und nun funktioniert es. Trotzdem nochmal dickes Danke schön an die Hilfe. Hier noch der Code wie er nun funktioniert bei mir.
PHP:
<?php 
  if (isset($_POST["submit"]))
  include("dbconnect.php");  

    $pid = $_POST["pid"]; 
    $name = $_POST["name"]; 
    $vorname = $_POST["vorname"]; 
    $gebdat = $_POST["gebdat"]; 
    $dia_begin = $_POST["dia_begin"]; 
    $albis_id = $_POST["albis_id"]; 
   
    $eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')"; 
   
    $submit = mysql_query($eintrag) 
   
?> 
<html> 
<body> 
<form method="post"> 
<table border="0" align="center"> 
<tr> 
<td>Kennzahl</td> 
<td><input type="text" name="pid" value="" size="15"></td> 
</tr><tr> 
<td>Name</td> 
<td><input type="text" name="name" value="" size="30"></td> 
</tr><tr> 
<td>Vorname</td> 
<td><input type="text" name="vorname" value="" size="30"></td> 
</tr><tr> 
<td>Geburtsdatum</td> 
<td><input type="text" name="gebdat" value="" size="15"></td> 
</tr><tr> 
<td>Beginn</td> 
<td><input type="text" name="dia_begin" value="" size="15"></td> 
</tr><tr> 
<td>Nummer</td> 
<td><input type="text" name="albis_id" value=""></td> 
</tr><tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="submit" value="Eintragen"></td> 
</tr> 
</table> 
</form>
</body> 
</html>

MFG
R3DD3VIL
 
@uafc

Sofern man den Query oder überhaupt ein String mit doppelten Anführungszeichen verwendet, so parst der php-Interprer die Variablen mit, d.h. eine Trennung ist nicht notwendig. Dein Vorschlag würde als korrekt angesehen werden sofern man einfache Anführungsstriche benutzt. :)

mfg
 
:S merkwürdig.. bei mir geht das immer.

Was mir aber noch aufgefallen ist...der HTML-Code mit dem Formular soll doch nur angezeigt werden, wenn nicht auf den "Eintragen"-Button geklickt wurde, richtig? Ansonsten soll es ja eintragen - oder soll das Formular dann auch angezeigt werden?

Ich würde das jetzt so machen:
PHP:
<?php 
  if (isset($_POST["submit"])){
  include("dbconnect.php");  

    $pid = $_POST["pid"]; 
    $name = $_POST["name"]; 
    $vorname = $_POST["vorname"]; 
    $gebdat = $_POST["gebdat"]; 
    $dia_begin = $_POST["dia_begin"]; 
    $albis_id = $_POST["albis_id"]; 
   
    $eintrag = "INSERT INTO Pat_ListePatienten (pid, name, vorname, gebdat, dia_begin, albis_id) VALUES ('$pid','$name','$vorname','$gebdat','$dia_begin','$albis_id')"; 
   
    $submit = mysql_query($eintrag) 
  } else {
?> 
<html> 
<body> 
<form method="post"> 
<table border="0" align="center"> 
<tr> 
<td>Kennzahl</td> 
<td><input type="text" name="pid" value="" size="15"></td> 
</tr><tr> 
<td>Name</td> 
<td><input type="text" name="name" value="" size="30"></td> 
</tr><tr> 
<td>Vorname</td> 
<td><input type="text" name="vorname" value="" size="30"></td> 
</tr><tr> 
<td>Geburtsdatum</td> 
<td><input type="text" name="gebdat" value="" size="15"></td> 
</tr><tr> 
<td>Beginn</td> 
<td><input type="text" name="dia_begin" value="" size="15"></td> 
</tr><tr> 
<td>Nummer</td> 
<td><input type="text" name="albis_id" value=""></td> 
</tr><tr> 
<td>&nbsp;</td> 
<td><input type="submit" name="submit" value="Eintragen"></td> 
</tr> 
</table> 
</form>
</body> 
</html>
<?php } ?>
...dann hat man im if("button wurde gedrückt")-bereich das script, das die werte in die DB speichert und im else-teil hat man das formular, das nur erscheint, wenn nicht auf den button gedrückt wurde...
 
@uafc

Sofern man den Query oder überhaupt ein String mit doppelten Anführungszeichen verwendet, so parst der php-Interprer die Variablen mit, d.h. eine Trennung ist nicht notwendig. Dein Vorschlag würde als korrekt angesehen werden sofern man einfache Anführungsstriche benutzt. :)

mfg

Danke...hmmm aber sollte das nicht trotzdem auch so gehen :?

und was ist denn nun die Änderung, die das Funktionieren herbeigebracht hat
 
Zurück