Griever: /(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.

Ich peil nicht, was du damit meinst ... Welche gesetzlichen Regelungen?

// 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.

Hab ich versucht. Aber irgendwie hat er mir da schon 3 mal die komplette Datenbank verorkst. Sie ist noch eingetragen, die DB. Aber ich kann sie weder wählen, noch löschen (0hne, dass es abschmiert oder in einem Overflow Exception von Windows endet). Ich weiß genau, dass es an dem DATE-Format liegt. Da in allen Tabellen, wo dieses Date-Format verwendet wird, die Tabelle viele hundert Fehler in phpmyadmin aufweißt.

Die Site soll für Intranet-Zwecke vorliegen. Wie die Daten drin stehen, ist sch.... egal. Hauptsache ist, dass sie übernommen werden.

// 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.

$d ist der Wert, den ich für die Datumsübergabe benötige. Ohne diesen, kann ich nicht auf das Item zugreifen.

// 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.

Das hat mir phpMyAdmin so gegeben ... Ich hab halt nur den Wert eingefügt ...

// 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.

Hab ich auch schon probiert. Aber eine leere Fehlermeldung hab ich auch noch nicht bei einem Fehler von MySql gesehen.

So hab ichs bewerkstelligen wollen:

  
if(mysql_query($sql))  
{  
  echo "$d"; // Verkürzt ...  
}  
else  
{  
  echo mysql_error()."<br>";  
}  

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.

Thats the Problem! Da zerhaut es meine Datenbank ... (Apache unter Xampp)

MFG
Griever