DATUM aus Datenbank abfragen Wenn datum erreicht soll andere Spalte aktualisiert werd

bastiekleve

Mitglied
Hallo Freunde******!


Ich habe mal wieder eine frage.

Wie die Überschrift schon sagt. Möchte ich aus einer MYSQL Datenbank DATE wert abfrage.

Diesen wert trage ich zuvor in die Tabelle ein.
Das klappt auch soweit ganz gut.

dieses datum ( das Feld ist ein date feld) welches ich dort eingetragen habe liegt in der Zukunft.

So jetrzt möchte ich das wenn das Zukunftsdatum erreicht ist, das dann eine andere spalte aktualisiert wird.

als beispiel:

datum in der zukunft 23.03.2013

heute wäre der 03.01.2013

so wenn der zukunftswert erreicht soll spate XY aktualisiert werden.
Diese Script läuft immer im Hintergrund mit


danke schon mal für eure hilfe
 
SQL:
UPDATE mytable
SET xyz = 'abc'
WHERE 
  -- mit DATE() sicherstellen dass die Uhrzeit keine Rolle spielt
  DATE(SYSDATE()) = DATE(my_date_field)
  -- Sicherstellen dass der Update nicht schon erfolgt ist
  AND xyz != 'abc'
 
Zuletzt bearbeitet von einem Moderator:
hallo mein bisherigerversuch war eine IF abfrage.
dazu habe ich das start datum welches aktuell von dem Tag war. und ein end datum welches aktuel plus gewisse tage war.

erst habe ich eine einfach Abfrage gemacht dann die beiden in eine Variable gespeichert und anschliessend eine iff abfrage gemacht. aber egal wie cih sie geschrieben habe es passierte nicht denn ich will wenn das end datum dann aktuell (also das zukunftsdatum )das dann beide auf null gestellt werden
 
Mach es wie oben geschrieben doch direkt mit einer UPDATE - ohne unnütze if() in PHP

Und wenn du deinem Satz noch einige Satzzeichen schenkst, wird er ev. sogar lesbar.
 
Leider passiert damit nichts.<code>$sql = "UPDATE USER
SET VIP_ende = '0', VIP_anfang = '0', VIP = '0'
WHERE
-- mit DATE() sicherstellen dass die Uhrzeit keine Rolle spielt
DATE(SYSDATE()) = DATE(VIP_ende)
-- Sicherstellen dass der Update nicht schon erfolgt ist
AND VIP != '0' AND ID = $id";</code>

der code sieht so aus
 
item: Ist VIP_ende und VIP_anfang als String deklariert?
Du solltest ein DATUM auf NULL setzen, nicht auf 0. Gut, MySQL setzt es freundlicherweise auf NULL.

item: Was hat das Feld VIP für ein Format? Anhand deines Codes geh ich mal davon aus dass es einen VARCHAR oder einen CHAR ist.

item: Da du vip_end auch überschreibst ist die Prüfung auf vip hinfällig

SQL:
UPDATE `user`
SET 
    vip_ende = NULL, 
    vip_anfang = NULL, 
    vip = '0'
WHERE
    -- mit DATE() sicherstellen dass die Uhrzeit keine Rolle spielt
    DATE(SYSDATE()) = DATE(vip_ende)
    AND ID = $id

Und damit gehst du jetzt mal auf Fehlersuche: PHP MySQL Debug Queries
 
Zuletzt bearbeitet von einem Moderator:
Das feld VIP ist ein INT wo nur 1 oder 0 eingetragen wird.
Wie deklariere ich den String?

PHP:
<?
session_start();
$id = $_SESSION['UserID'];
     error_reporting(E_ALL);
    include("mysql.php");

$sql="UPDATE `User`
SET 
    VIP_ende = NULL, 
    VIP_anfang = NULL, 
    VIP = '0'
WHERE
    -- mit DATE() sicherstellen dass die Uhrzeit keine Rolle spielt
    DATE(SYSDATE()) = DATE(VIP_ende)
    AND ID = $id ";


?>

habe es so gemacht. Nach aufruf des Scripts bleibt die Seite weiss aber die datenbank wird nicht aktualisiert.
 
Zurück