Vinzenz Mai: Datenbank updaten

Beitrag lesen

Hallo Zwerg Alex,

ich zerpflücke ein bißchen Dein Posting und knüpfe dort an, wo Du aufgehört hast.

Ich weiß, dass das o. g. Script eine Zumutung ist.

ist es in der Tat. Du solltest es schnellstens aus dem Verkehr ziehen, um- bzw. neu schreiben und danach wieder in den Verkehr bringen.

P.S.
Ich hoffe ihr versteht, dass ich das obige Script aus Sicherheitsgründen nicht verlinken kann.

Ja.

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.

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

$status? Bitte $_POST['status']. Das gilt gleichermaßen für alle Parameter, die aus Deinem Formular kommen.

Statt if - elseif - elseif ... solltest Du switch ... case verwenden.

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(),

Nein, kein addslashes, sondern mysql_real_escape_string. Oder prepared Statements.

eintrag = '".addslashes($eintrag)."',
         kurzeintrag = '".addslashes($kurzeintrag)."'
         ";

die() ist keine Fehlerbehandlung.

$sql = mysql_query($query) or die(mysql_error());
unset($status,$eintrag,$kurzeintrag);
}

elseif ($status == "Bearbeiten") {
$query = "UPDATE blog SET

Aua, $id kommt ebenfalls über $_POST. Hier ohne jegliche Behandlung :-(

eintrag = '$eintrag', kurzeintrag = '$kurzeintrag' WHERE id = $id";
$sql = mysql_query($query);

Wo ist die Überprüfung, ob der Vorgang erfolgreich war?
Wie willst Du hier einen Fehler bei "Bearbeiten" finden?

[...]

  

> 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.  
  
Hmm, das ist kein Wunder, wenn Du es nicht überprüfst :-)  
  
  
Vinzenz