problem mit ID-Löschen bei Gästebuch

ben_19

Mitglied
hey!

Ich habe ein "kleines" Problem mit meinem Gästebuch.
Wenn ich einen Beitrag löschen will gebe ich die ID des Beitrages (welches vermeintlich bei jedem Beitrag dabeisteht) ein und klicke auf "löschen", dann sollte der Beitrag aus der MySQL-datenbank gelöscht sein und die ID ebenso. Dem ist leider nicht so, der Beitrag samt Autor und email-adresse wird zwar gelöscht, aber die ID wird dennoch weitergezählt - sodass ich beim Löschen des nächsten Beitrages ID 2 eingeben muss um den ersten und einzigen Eintrag löschen zu können.

Hier der Code der Datei mit dem Formular wo ich die ID eingebe:
Code:
<?
include ("../inc/gb_connect.php");
?>
<center>
<form action="gb_delete.php">
<br>ID des zu löschenden Eintrages:
<br>
<input type="text" name="del_id" maxlength="5">

<br><br>
<input type="submit" value="l&ouml;schen">
</form>

<center><a href="gb_adminmenu.php">zurück zum Menü</a>&nbsp;|&nbsp;<a href="gb_index.php">zurück zum Gästebuch</a></center>

<? ############ AUFRUF DER INCLUDE DATEI UND ABFRAGE DER DATEN AUS DER MYSQL TABELLE #####
include ("../inc/gb_connect.php");
$count = 1;
$abfrage = "SELECT * FROM dgb_daten";
$ergebnis = mysql_query($abfrage);
while ($row = mysql_fetch_object($ergebnis))
{
?>

<!---------------- ANZEIGE DER TABELLENDATEN IN EINER HTML-TABELLE ---------------->
   <table style="border-collapse:collapse">
    <center>
    <table align="center" style="border-style: solid; border-color:#333333" width="600px"><center>

    <tr><center>
        <td span style="font-size:10pt; color:#FFFFFF; background-color:#465A86" style="width:450px"><p><b>&nbsp;<u><? echo $count; ?></b></u><? echo "&nbsp;eingetragen von:&nbsp;" ?><b><? echo"$row->gb_name" ?></b><? echo "&nbsp;am:"?><? echo"&nbsp;$row->gb_datum" ?> </td></span>
        <td span style="font-size:10pt; color:#FFFFF; background-color:#999999" style="width:450px" rowspan="2""><p>&nbsp;<center><img src="../img/email.gif" width="40" height="40" border="0"><br><a href="mailto:<? echo $row->gb_mail; ?>"><? echo $row->gb_mail; ?></a><br><br> </td></span></center>
    </tr>
    <tr>
        <td span style="font-size:10pt; color:#000000; background-color:#CCCCCC" width="450px"><p><? echo $row->gb_eintrag; ?><br></p></td></span>    </tr>
</table>
<br><br>

<?  # Zähler für die ID #
$count++;
  }
?>

und hier die gb_delete, welche den Eintrag aus der Datenbank löscht

Code:
<?
include("../inc/gb_connect.php");
$aendern = "DELETE FROM dgb_daten WHERE id = '$del_id'";
$delete = mysql_query($aendern);
?><center><b>EINTRAG <? echo $del_id ?> wurde gelöscht!</b><br>
<a href="gb_index.php">Zum Gästebuch</a></center>
<?
$count = 1;
$abfrage = "SELECT * FROM dgb_daten";
$ergebnis = mysql_query($abfrage);
while ($row = mysql_fetch_object($ergebnis))
{
    ?>

<center><a href="gb_adminmenu.php">zurück zum Menü</a>&nbsp;|&nbsp;<a href="gb_index.php">zurück zum Gästebuch</a></center>
<!---------------- ANZEIGE DER TABELLENDATEN IN EINER HTML-TABELLE ---------------->
      <table style="border-collapse:collapse">
    <center>
    <table align="center" style="border-style: solid; border-color:#333333" width="600px"><center>

    <tr><center>
        <td span style="font-size:10pt; color:#FFFFFF; background-color:#465A86" style="width:450px"><p><b>&nbsp;<u><? echo $count; ?></b></u><? echo "&nbsp;eingetragen von:&nbsp;" ?><b><? echo"$row->gb_name" ?></b><? echo "&nbsp;am:"?><? echo"&nbsp;$row->gb_datum" ?> </td></span>
        <td span style="font-size:10pt; color:#FFFFF; background-color:#999999" style="width:450px" rowspan="2""><p>&nbsp;<center><img src="../img/email.gif" width="40" height="40" border="0"><br><a href="mailto:<? echo $row->gb_mail; ?>"><? echo $row->gb_mail; ?></a><br><br> </td></span></center>
    </tr>
    <tr>
        <td span style="font-size:10pt; color:#000000; background-color:#CCCCCC" width="450px"><p><? echo $row->gb_eintrag; ?><br></p></td></span>    </tr>
</table>
<br><br>

<?  # Zähler für die ID #
$count++;
  }
?>

<p><a href="mailto:<? $row->gb_mail; ?>"><?echo $row->gb_mail; ?></a></p>

ich habe den verdacht mit der $del_id und der $count passt was nicht ..

hat jemand ne idee? ich verzweifle schon langsam dran ..
 
Hi,
wenn ich dich richtig verstanden habe hast nur einen kleinen Denkfehler. Du hast mehrerre Einträge in einer Datenbank:
Eintrag1
Id = 1 | Text = bla bla
Eintrag2
Id = 2 | Text = bla bla
Eintrag3
Id = 3 | Text = bla bla

Dann löscht du einen Eintrag mit Id = 1 und möchtest das nächste mal wieder einen Eintrag löschen mit Id = 1. Das funktioniert deshalb nicht, weil jeder Eintrag in der Datenbank seine ID behält, die ihm einmal gegeben wurde, egal ob du Einträge mit einer niedrigeren Id löscht.
 
Wenn du eine ID löschst ändert das nichts an den anderen IDs in der Datenbank, die gelöschte fehlt dann einfach.

Stell dir vor du gibts jemanden einen Link für einen gewissen eintrag in deinem GB, du löscht dann nach 2 Tagen einen Eintrag der vorher eingegeben wurde raus.
Der User will dann 1 Woche später nochmal den Eintrag sehen und klikt nochmla den Link an den er von dir bekommen hat mit der ID.

Dann würde er ja einen total anderen Beitrag ausgeliefert bekommen wenn sich die IDs immer neu sortieren würde.
 
Für die Id die du zum Löschen eingibst, darfst du nicht den Zähler aus deiner Schleife nehmen sondern die Id des Beitrages aus der Datenbak, also $row->id in deinem Fall.
 
Hi!

Und was hat das mit der Auszeichnungssprache HTML zu tun?

Das Thema wandert dann mal rüber ins Datenbank-Forum.
 
wo muss ich $row->id setzen?

sorry, außer $ seh ich nur mehr $ :-(

sorry @ michaelsinterface .. hab eig. nach PHP gesucht :)
 
ja, heute bin ich echt blind :rolleyes:

also, kann mir noch jemand sagen wie ich dem script sage, dass er die ID auswählt welcher der Beitrag hat um ihn zu löschen? :)

also ich hab z.b. 3 gästebuch einträge mit den IDs 19,20 und 21. wie sag ich meinem obigen script, dass es die einträge mit diesen IDs löscht wenn ich z.b. den 2. eintrag lösch will?
 
Zuletzt bearbeitet:
Die sicherste Variante ist wenn du dein Script beim löschen gleich lässt und nicht die 2 für den 2ten Eintrag übergibst, sondern die Id die in der DB hinterlegt ist. Damit dass funktioniert musst du id ja auch kennen. Daher solltest du dir in deiner Adminoberfläche wo du die Einträge löschen kannst, die Id des jeweiligen Eintrages aus der Datenbank ausgeben ($row->id).
 
Zurück