Datumswert vorbei -> Eintrag löschen

UncleB

Mitglied
Hey Jungs,
Bin dabei für unseren Fussballverein ne neue Website zu gestalten,
Und auf der Website sollte die nächste Begenung stehen..
Is das Spiel vorbei, soll der DB Eintrag gelöscht werden,
Und die nächste Begenung angezeigt werden,
wie würdet ihr das lösen iwie mit größer kleiner oder geht das auch direkt mit MySQL...
Hier der Coden den ich bist dato zusammen gezimmert hab..
PHP:
<?php
include ("connect.php");
$timenow = time();
$sql = "SELECT * FROM `sl` WHERE `datum` <=  CURDATE()  ORDER BY id DESC LIMIT 1";
$ausgabe = mysql_query($sql) OR die(mysql_error());

while ($news = mysql_fetch_object ($ausgabe))
{

?>
<table width="20%" border="1" cellspacing="0">
  <tr>
    <td colspan="2">1.Mannschaft</td>
  </tr>
  <tr>
    <td width="41%">Datum:</td>
    <td width="59%"><?php echo $news->datum; ?></td>
  </tr>
  <tr>
    <td>Gegner:</td>
    <td><?php echo $news->gegner; ?></td>
  </tr>
  <tr>
    <td>Wo:</td>
    <td><?php echo $news->ort; ?></td>
  </tr>
  <tr>
    <td>Art:</td>
    <td><?php echo $news->art; ?></td>
  </tr>
</table>

<?

}
?>
 
Hi,
ist die Ausgabe denn so korrekt? Ich mein, wenn du dir das nächste Spiel anzeigen lassen möchtest, dann muss doch im SQL >= CURDATE() stehen, oder verstehe ich da was falsch?

Du kannst vor deiner SQL Anweisung einfach eine DELETE Anweisung starten.
PHP:
$sql = "DELETE FROM s1 WHERE datum < CURDATE()";
$ausgabe = mysql_query($sql) OR die(mysql_error());

Mach zur Vorsicht vorher ein Backup der Tabelle:
PHP:
CREATE TABLE s1_backup AS (SELECT * FROM s1)
 
Oh Sorry, die Ausgabe war natürlich falsch...
Hatte ich nur zum testen mal geändert umd vor dem Kopieren vergessen wieder rückgängig zu machen...
Okay die Anweisung funktioniert soweit super,
Hätte dazu aber noch ne frage.... wär es den Möglich das der DB Eintrag erst eine Std bzw 90 Min. nach dem "Anpfiff" gelöscht wird?
Oder muss ich da eine neue Spalte erstellen?
 
Das kommt drauf an ob du auch die Zeit in dem Feld gespeichert hast, oder nur das Datum. Da du den Vergleich mit CURDATE() machst, anstelle mit NOW() gehe ich davon aus das nur das Datum in dem Feld steht.
Also irgendwo muss die Uhrzeit halt gespeichert werden dafür.

Bei der DELETE Anweisung die ich gepostet habe, ist es sogar so das der Eintrag erst am Tag danach gelöscht wird.
 
Danke für die Antwort,
Bin etwas weiter gekommen...
PHP:
    $sql = "DELETE FROM
                        sl
            WHERE
                        DATE_SUB(NOW(), INTERVAL 2 MINUTE) > datum
           ";
    mysql_query($sql);
Funktioniert soweit, jedoch passt das mit den 2 minuten nicht so ganz, der löscht den Eintrag nach ca 1:30 min, aber wieso
 
Zuletzt bearbeitet:
überprüfe doch mal ob bei DATE_SUB das herauskommt, was du dir vorstellst, indem du mal folgendes direkt auf der DB startest:
Code:
SELECT NOW( ) AS jetzt, DATE_SUB( NOW( ) , INTERVAL 2 MINUTE ) AS vorhin
 
Zurück