Supportnet / Forum / Datenbanken
Automatisch eine ID in MySQL (PHP) vergeben
Frage
Hallo!
Ich möchte local eine Datenbank mit MySQL und PHP verwalten. Dazu habe ich unter anderem eine Spalte "ID" genannt, die automatisch immer um eins erhöht werden soll und nur als Primärschlüssel dient. Ich habe dazu in phpmyadmin die ID Spalte wie folgt eingestellt:
Name: ID
Typ: int
Länge: 10
Null: not Null
Extra: auto_increment
und halt Primärschlüssel angeklickt.
Ich kann nun mit meinem Script beliebig Daten hinzufügen. Funktioniert super! Aber wenn ich nun manuell einen Datensatz aus der Tabelle lösche, und im Browser auf aktualisieren klicke (wo ich mein php-Script aufgerufen habe), um meinen aktuellen Datensatz anzuzeigen, dann fügt er automatisch immer den letzten Eintrag dazu, den ich nicht gelöscht habe :-(((.
Was kann ich machen?
hier mal der code im body-Teil
[code]
<?php
if (isset($addfilme)): // Einen Film hinzufuegen
?>
<form action="<?=$PHP_SELF?>" method="post">
<p>Geben Sie den Film hier ein:<br />
<input type="text" name="titel" />
<input type="submit" name="submitfilme" value="Speichern" /></p>
</form>
<?php
else: // Vorgabeseite anzeigen
// Verbindung zum Datenbankserver
$dbcnx = @mysql_connect("localhost", "root", "pw");
if (!$dbcnx) {
echo( "<p>Zur Zeit keine Verbindung " .
"zum Datenbankserver möglich.</p>" );
exit();
}
// Film-Datenbank auswaehlen
if (! @mysql_select_db("filme_db") ) {
echo( "<p>Auswahl der Film-Datenbank " .
"zur Zeit nicht möglich.</p>" );
exit();
}
// Wenn ein Film eingetragen wurde,
// wird er zur Datenbank hinzugefuegt
if ($submitfilme == "Speichern") {
$sql = "INSERT INTO filme SET
filmtitel='$titel',
reg_date=CURDATE()";
if (@mysql_query($sql)) {
echo("<p>Ihr Film wurde hinzugefügt.</p>");
} else {
echo("<p>Fehler beim Hinzufügen des Filmes: " .
mysql_error() . "</p>");
}
}
echo("<p>Hier sind alle Filme aus der Datenbank: </p>");
// Titel aller Filme abfragen
$result = @mysql_query("SELECT filmtitel FROM filme");
if (!$result) {
echo("<p>Fehler bei der Ausführung der Abfrage: " . mysql_error() . "</p>");
exit();
}
// Filmtitel jedes Filmes in einem Absatz anzeigen
while ( $row = mysql_fetch_array($result) ) {
echo("<p>" . $row["filmtitel"] . "</p>");
}
// Wenn angeklickt, laedt dieser Link die Seite
// mit dem Formular zum Eingeben eines Filmes
echo("<p><a href='$PHP_SELF?addfilme=0'>Einen Film hinzufügen!</a></p>");
endif;
?>
[/code]
Wie mache ich es außerdem, dass, wenn ich einen Datensatz gelöscht habe (und damit auch die dazugehörige ID), diese gelöschte ID beim nächsten eintrag zu verwenden, so dass sich praktisch eine laufende Nummer ergibt?
Danke für die Hilfe!
Anja
Antwort 1 von Nessus
Zitat:
Wie mache ich es außerdem, dass, wenn ich einen Datensatz gelöscht habe (und damit auch die dazugehörige ID), diese gelöschte ID beim nächsten eintrag zu verwenden, so dass sich praktisch eine laufende Nummer ergibt?
Wie mache ich es außerdem, dass, wenn ich einen Datensatz gelöscht habe (und damit auch die dazugehörige ID), diese gelöschte ID beim nächsten eintrag zu verwenden, so dass sich praktisch eine laufende Nummer ergibt?
Du könntest dies machen, in dem Du alle Datensätze in ein Array legst, aus der DB löscht und dann wieder neu schreibst. Aber das ist absoluter Humbug. Alleine bei Verknüpften Tabellen würde dann jeder Zellbezug fehlen, bzw. falsch angezeigt werden.
Zitat:
um meinen aktuellen Datensatz anzuzeigen, dann fügt er automatisch immer den letzten Eintrag dazu, den ich nicht gelöscht habe :-(((.
um meinen aktuellen Datensatz anzuzeigen, dann fügt er automatisch immer den letzten Eintrag dazu, den ich nicht gelöscht habe :-(((.
So wie ich das jetzt verstanden habe, machst Du einen Insert, dann löscht Du den Datensatz und machst einen Refresh der Seite, oder?
Das mehrfache Absenden eines Scriptes (Was ja nichts anderes ist) umgehst Du damit, das Du nach erfolgter Aktion via Header_location() auf die Scriptseite leitest. Dadurch werden alle Bezüge gelöscht.
http://www.dclp-faq.de/q/q-formular-mehrfach.html
HTH
Nessus
Antwort 2 von Anja
Ja, genau, so mache ich es. Dein Tipp scheint vielversprechend, aber irgendwie bekomm ich das nicht so hin :-(((.
Kann mir vielleicht jemand ein gutes Tutorial zum hinzufügen und löschen von Daten aus einer Tabelle zeigen??
Anja
Kann mir vielleicht jemand ein gutes Tutorial zum hinzufügen und löschen von Daten aus einer Tabelle zeigen??
Anja

