Vinzenz Mai: /(MySql) Löschen aus Datenbank wird nicht ausgeführt?

Beitrag lesen

Hallo Griever,

Hier meine "recht einfache" Lösung:

die von gesetzlichen Regelungen in unserem Lande zu bestimmten Zeiten ausgehebelt wird :-) Berücksichtige diese gesetzlichen Regelungen. Oder besser noch, mache Deine Berechung davon unabhängig.

// Sql erstellen.
          $sql = 'INSERT INTO sondertage (datum) VALUES ("' . date("d.m.Y",$currentDatum) . '");';

Warum verwendest Du für Datumsangaben nicht den Datentyp DATE? Mit solch wunderbaren Datentypen wie DATE oder DATETIME können Datenbankmanagementsysteme sogar rechnen. Vielleicht machen diese Rechenmöglichkeiten Deine PHP-Experimente überflüssig.

// Fragt, ob d gesetzt ist und stellt es dann einer einfachen variable zur verfügung.
if(isset($_GET['d']))
$d=$_GET['d'];

Hast Du $d außerhalb sauber initialisiert? Wenn nein, dann solltest Du dies tun. Noch besser wäre es auf diese Variable zu verzichten.

// Sql erzeugen.
  $sql = 'DELETE FROM sondertage WHERE CONVERT(datum USING utf8) = ''+$d+'' LIMIT 1;# Betroffene Datensätze: 1';

Wow, jetzt noch CONVERT() einsetzen. Verwende doch einen Datumstyp. Dazu eine tolle Quotierungsorgie, die Du Dir bei geschickterer Auswahl von Anführungszeichen ersparen könntest.

// Query ausführen und gleichzeitig abfragen.
  if(mysql_query($sql))
  {
    echo "Eintrag für den " . $d . " gelöscht.";
  }

// es funktioniert aber nicht.

Was noch nie eine Fehlerbeschreibung war und auch hier keine ist. Gibt es einen else-Zweig? Nein. Befragst Du MySQL, ob es Fehlermeldungen gab? Nein.

Dein erster Schritt sollte in der Optimierung Deiner Tabellenstruktur liegen. Ersetze alle Spalten, in denen Du Datumsangaben in Zeichenketten speicherst durch Spalten, die das gleiche Datum mit dem Datentyp DATE oder DATETIME enthalten. Das hat wahrscheinlich Konsequenzen für Deine ganzen Skripte, auf Dauer sollte es Dir die Arbeit erleichtern.

Freundliche Grüße

Vinzenz