Glück auf!
Erstmal möchte ich mich schonmal für den langen Code, der jetzt kommt entschuldigen. Leider weiß ich den gerade nicht sinnvoll zu kürzen, ohne möglicherweise relevante Informationen vorzuenthalten.
Ich habe eine Datenbank mit zwei Tabellen (blog und guestbook). Ich habe nun für die Tabelle Blog ein Script, welches je nach Inhalt der Variablen "$status" unterschiedliche Aktionen durchführen soll.
<?php
if ($status == "Vorschau") {
echo "<h3>", $datum, "</h3><h4>Eintrag:</h4><p>", format($eintrag), "</p><h4>Kurzeintrag:</h4><p>", format($kurzeintrag), "</p>";
}
elseif ($status == "Eintragen") {
$query = "INSERT INTO blog SET
datum = now(),
eintrag = '".addslashes($eintrag)."',
kurzeintrag = '".addslashes($kurzeintrag)."'
";
$sql = mysql_query($query) or die(mysql_error());
unset($status,$eintrag,$kurzeintrag);
}
elseif ($status == "Bearbeiten") {
$query = "UPDATE blog SET
eintrag = '$eintrag', kurzeintrag = '$kurzeintrag' WHERE id = $id";
$sql = mysql_query($query);
unset($id, $datum, $eintrag, $kurzeintrag);
}
elseif ($status == "edit") {
$query = "SELECT * FROM blog WHERE id = $id";
$sql = mysql_query($query) or die (mysql_error());
$ds = mysql_fetch_object($sql);
$id = $ds -> id;
$datum = $ds -> datum;
$eintrag = $ds -> eintrag;
$kurzeintrag = $ds -> kurzeintrag;
}
elseif ($status == "delete") {
$query = "DELETE FROM blog WHERE id = $id";
$sql = mysql_query($query);
unset($id, $datum, $eintrag, $kurzeintrag);
}
?>
Das Problem tritt nun auf, wenn ich die Blogeinträge/-kurzeinträge bearbeiten will. Das klappt ab und an, aber meist nicht. Wann dieser "ab und an"-Fall eintrifft, kann ich mir/euch nicht erklären.
Wenn ich einen Eintrag bearbeiten will, gehe ich wie folgt vor:
1. Ich lasse mir alle Einträge anzeigen und klicke dann beim entsprechenden Eintrag auf ein Formularbutton, der den Status "edit" übergibt.
<form action="blog_admin.php" method="post">
<input type="image" src="../bilder/layout/edit.gif" name="status" value="edit" />
<input type="image" src="../bilder/layout/delete.gif" name="status" value="delete" />
<input type="hidden" name="id" value="<?php echo $id ?>" />
</form>
2. Dann wird mir der betroffene Datensatz in dem nachfolgendem Formular angezeigt:
<form action="blog_admin.php" method="post">
<input type="hidden" name="id" value="<?php echo $id ?>" />
<input type="hidden" name="datum" value="<?php echo $datum ?>" />
<h4>Eintrag:</h4>
<p><textarea cols="75" rows="10" name="eintrag"><?php echo htmlentities($eintrag) ?></textarea></p>
<h4>Kurzeintrag:</h4>
<p><textarea cols="75" rows="5" name="kurzeintrag"><?php echo htmlentities($kurzeintrag) ?></textarea></p>
<p><input type="submit" name="status" value="Vorschau" />
<?php if (!empty($id)) { ?>
<input type="submit" name="status" value="Bearbeiten" />
<?php } else { ?>
<input type="submit" name="status" value="Eintragen" />
<?php } ?>
</p>
</form>
3. Bis 2. klappt alles wie gewollt. Klicke ich nun jedoch auf "Bearbeiten", werden die Änderungen mal übernommen, mal nicht.
Ich weiß, dass das o. g. Script eine Zumutung ist. Das macht es mir wohl auch so schwer den Fehler zu finden. Aber das war irgendwann mal nen ganz süßes kleines Script, was ich nach und nach angepasst habe, bis das da oben draus geworden ist. Wäre wirklich sehr nett, wenn sich trotzdem jmd. darin versucht, dort durchzublicken.
An alle die es versuchen oder überhaupt erst bis hier gelesen haben schonmal ein Dankeschön.
Freundliche Grüße
zwerg Alex
P.S.
Ich hoffe ihr versteht, dass ich das obige Script aus Sicherheitsgründen nicht verlinken kann. Ich hoffe aber alle relevanten Angaben gemacht zu haben. Ansonsten reiche ich die natürlich gerne nach.