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

id 0 automatische in DB

Jeremygolf

Mitglied
Hallo,

ich habe eine Seite in der Ein Formular ist, das ich ausfülle um daten in die DB zu speicher. Mein Problem ist aber, dass immer wenn ich die seite öffne ein neuer Eintrag in die DB gemacht wird mit der id: 0 und die anderen Felder leer.
Was könnte das problem sein?

P.S Ich habe die ID nicht auf Auto Increment da diese einem Datum entspricht gebe ich sie manuell ein.
 
Was passiert, wenn man das Formular abschickt? Wird die selbe Seite erneut aufgerufen? Dann würde ich darauf tippen, dass dein Mechanismus, der Einträge in die Datenbank macht, IMMER aufgerufen wird und nicht nur, wenn du z.B. auf den Submit-Button gedrückt hast.
 
Genau wie bodil vermute ich auch, dass Du ein sogenanntes "Affenformular" programmiert hast, oder es zumindest versucht hast.

Schau mal hier, dort wird Dir das Prinzip erklärt: Affenformular

Gruß thuemmy
 
Was passiert, wenn man das Formular abschickt? Wird die selbe Seite erneut aufgerufen? Dann würde ich darauf tippen, dass dein Mechanismus, der Einträge in die Datenbank macht, IMMER aufgerufen wird und nicht nur, wenn du z.B. auf den Submit-Button gedrückt hast.
Immer wenn ich die Seite aufrufe gibt es einen leeren Eintrag. Und sobald einaml die id: 0 in der DB ist kann ich die Seite nicht mehr aufrufen.
 
Ich formuliere meine Frage genauer: Was SOLL passieren, wenn man das Formular abschickt? Wird die selbe Seite erneut aufgerufen oder landet der Seitenbesucher auf einer anderen Seite? Quasi (anders formuliert) Gibt es in deinem Form-Tag ein Action-Parameter? Und wenn, steht da der Name des Skripts drinne, über das wir gerade reden oder das eines anderen Skripts?
 
Ich formuliere meine Frage genauer: Was SOLL passieren, wenn man das Formular abschickt? Wird die selbe Seite erneut aufgerufen oder landet der Seitenbesucher auf einer anderen Seite? Quasi (anders formuliert) Gibt es in deinem Form-Tag ein Action-Parameter? Und wenn, steht da der Name des Skripts drinne, über das wir gerade reden oder das eines anderen Skripts?
Im moment wenn ich ds Formular abschicke öffnet es die selbe seite. Aber es wäre besser, wenn ich auf die die startseite umgeleitet werden würde. Nein es gibt kein action Parameter die Seite sieht so aus.
Code:
<?php
include_once('connect_to_mysql.php');
$sql = mysql_query("SELECT * FROM turniere WHERE id='$id'");
$numRows = mysql_num_rows($sql);
$id = $_POST["id"];
$turnier = $_POST['turnier'];
$map = $_POST["map"];
$bericht = $_POST["bericht"];
$club_link = $_POST["club_link"];
$bild = $_POST["bild"];
$bild_kl = $_POST["bild_kl"];
$datum = $_POST["datum"];
$ort = $_POST["ort"];
$club = $_POST["club"];
$runde1 = $_POST["runde1"];
$runde2 = $_POST["runde2"];
$runde3 = $_POST["runde3"];
$runde4 = $_POST["runde4"];
$rang = $_POST["rang"];
$rangliste_link = $_POST["rangliste_link"];
$turnier_link = $row["turnier_link"];
    
$sql_insert= mysql_query("INSERT INTO `turniere`(`id`, `turnier`, `datum`, `ort`, `bild`, `bild_kl`, `map`, `club`, `bericht`, `runde1`, `runde2`, `runde3`, `runde4`, `rang`, `rangliste_link`, `club_link`, `turnier_link`) VALUES ('$id', '$turnier', '$datum', '$ort', '$bild', '$bild_kl', '$map', '$club', '$bericht', '$runde1', '$runde2', '$runde3', '$runde4', '$rang', '$rangliste_link', '$club_link', '$turnier_link')") or die (mysql_error());
?>
<html>
<body>
   <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   Id: <input name="id" type="text" value="<?php echo $id; ?>" /><br /> 
   Turniername: <input name="turnier" type="text" value="<?php echo $turnier; ?>" /><br /> 
   Datum: <input name="datum" type="text" value="<?php echo $datum; ?>" /><br /> 
   Ort: <input name="ort" type="text" value="<?php echo $ort; ?>" /><br />
   Bild: <input name="bild" type="text" value="<?php echo $bild; ?>" /><br />
   Bild klein: <input name="bild" type="text" value="<?php echo $bild_klein; ?>" /><br />
   Map: <input name="bild" type="text" value="<?php echo $map; ?>" /><br />
   Golf Club: <input name="club" type="text" value="<?php echo $club; ?>" /><br /> 
   Bericht: <textarea name="bericht" cols="35" rows="10" value="<?php echo $bericht; ?>"></textarea><br /> 
   Runde 1: <input name="runde1" type="text" value="<?php echo $runde1; ?>" /><br /> 
   Runde 2: <input name="runde2" type="text" value="<?php echo $runde2; ?>" /><br /> 
   Runde 3: <input name="runde3" type="text" value="<?php echo $runde3; ?>" /><br /> 
   Runde 4: <input name="runde4" type="text" value="<?php echo $runde4; ?>" /><br /> 
   Rang: <input name="rang" type="text" value="<?php echo $rang; ?>" /><br /> 
   Rangliste: <input name="rangliste_link" type="text" value="<?php echo $rangliste_link; ?>" /><br /> 
   Link Golf Club: <input name="club_link" type="text" value="<?php echo $club_link; ?>" /><br /> 
   Turnier Link: <input name="turnier_link" type="text" value="<?php echo $turnier_link; ?>" /><br />
   <input name="submit" type="submit" value="Erstellen" />
   </form>
</body>
</html>
 
Nun, dann ist doch eigentlich nicht verwunderlich, dass da ein Datensatz eingefügt wird, oder? Jedes mal wenn die Seite aufgerufen wird, wird die Zeile
PHP:
$sql_insert= mysql_query("INSERT INTO `turniere`(`id`, `turnier`, `datum`, `ort`, `bild`, `bild_kl`, `map`, `club`, `bericht`, `runde1`, `runde2`, `runde3`, `runde4`, `rang`, `rangliste_link`, `club_link`, `turnier_link`) VALUES ('$id', '$turnier', '$datum', '$ort', '$bild', '$bild_kl', '$map', '$club', '$bericht', '$runde1', '$runde2', '$runde3', '$runde4', '$rang', '$rangliste_link', '$club_link', '$turnier_link')") or die (mysql_error());
ausgeführt.
Also auch beim ersten mal.
In welchem Skript du auch immer in die Datenbank schreibst, das darf nur passieren, wenn die Variable $_POST["submit"] gesetzt ist und den Wert "Erstellen" hat.
Im Code sähe das ungefähr so aus:
PHP:
if (isset($_POST["submit"]) && $_POST["submit"]) == "Erstellen") {

// hier alle steht der Code, der die Daten in die Datenbank schreibt

}
Aber auch abgesehen davon ist dein Code etwas merkwürdig. In Zeile 2 verwendest du die Variable $id, die erst in Zeile 4 definiert wird. Du definierst eine Variable $numRows, die du nie wieder benutzt. Deine POST-Variablen schreibst du alle in neue Variablen um und verwendest sie erst dann.
Solltest du ein komplettes INSERT machen, darfst du die Aufzählung der Feldnamen auch weglassen, wenn du die Variablen in der richtigen Reihenfolge übergibst ... (geht so auch, macht den Code nur etwas unübersichtlich ...)
 
Zurück
Oben