ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
669
669
EMPFEHLEN
-
12.08.05 17:25 #1
- Registriert seit
- Mar 2005
- Beiträge
- 184
Also ich will folgendes machen. Immer wenn man sich einloggt, wird gecheckt ob an diesem Tag die Datenbank schon aktualisiert wurde. Wenn dies nicht der Fall ist, wird dieses Script ausgeführt:
Zur Erklärung: Als erstes wird das Datum des letzten Checks ausgelesen. Dann werden alle User ausgegeben welche seit dem letzten Check Geburstag hatten. Deren Alter soll um 1 hochgezählt werden.PHP-Code:<?
$checkresult=mysql_query("SELECT `datum` FROM `systemcheck`");
$check=mysql_result($checkresult, 'datum');
$result=mysql_query("SELECT `ID` FROM `userdaten` WHERE `geb` between '$check' and now()");
for($i=0;$i<mysql_num_rows($result);$i++)
$data[$i]=mysql_fetch_array($result);
for($i=0;$i<count($data);$i++){
$ageresult=mysql_query("SELECT `age` FROM `profil` WHERE `ID`='".$data[$i]["ID"]."'");
$age=mysql_result($ageresult, 'age');
$age=$age++;
mysql_query("UPDATE `profil` SET `age`='$age' WHERE `ID`='".$date[$i]["ID"]."'");
}
$mailage = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-1, date("Y")));
$mailold = date("Y-m-d",mktime(0, 0, 0, date("m"), date("d")-2, date("Y")));
//gelesene Nachrichten löschen
mysql_query("DELETE `inbox` WHERE `date`<$mailage AND `lesen`>'0'");
mysql_query("DELETE `outbox` WHERE `date`<$mailage AND `lesen`>'0'");
//ungelesene Nachrichten löschen
mysql_query("DELETE `inbox` WHERE `date`<$mailold");
mysql_query("DELETE `outbox` WHERE `date`<$mailold");
mysql_query("UPDATE `systemcheck` SET `datum`=now()");
?>
Der 2. Teil löscht alle Nachrichten die älter als 1 bzw. 2 Monate alt sind.
Also das mit dem Alter konnte ich bisher noch nicht testen, weil bisher keiner Geburtag hatte. Nachrichten die alt genug sind gibt es aber. Leider werden die aber nicht gelöscht. Das Script wird ausgeführt. Das merke ich daran dass das Datum in der Tabelle "systemcheck" erneuert wird.
Kann mir da jemand weiterhelfen?!
Danke im Vorraus
MfGGeändert von lifehunter (12.08.05 um 17:52 Uhr)
-
12.08.05 18:05 #2
- Registriert seit
- Mar 2005
- Beiträge
- 184
selbst nach dieser Änderung klappt es net

PHP-Code:mysql_query("DELETE `inbox` WHERE `date` between $mailage and now() AND `lesen` IS NOT '0'");
mysql_query("DELETE `inbox` WHERE `date` between $mailold and now()");
mysql_query("DELETE `outbox` WHERE `date`between $mailage and now() AND `lesen` IS NOT '0'");
mysql_query("DELETE `outbox` WHERE `date` between $mailold and now()");
-
Wenn du mit mysql_error() arbeiten würdest, wäre der Fehler gleich gefunden. Mehr sag ich dazu nicht.
Gruß fanste
Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )
Problem gelöst? Dann markiere das Thema bitte als erledigt!
Beachte bitte die Netiquette. Insbesondere Punkt 15.
-
12.08.05 18:32 #4
- Registriert seit
- Mar 2005
- Beiträge
- 184
Hab jetzt diese Änderung vorgenommen:
Er gibt diesen Fehler aus:PHP-Code:$now=date("Y-m-d");
mysql_query("DELETE `inbox` WHERE `date` between '$mailage' and '$now' AND `lesen` IS NOT '0'") or die("error1: " . mysql_error());
mysql_query("DELETE `inbox` WHERE `date` between '$mailold' and '$now'")or die("error2: " . mysql_error());
mysql_query("DELETE `outbox` WHERE `date`between '$mailage' and '$now' AND `lesen` IS NOT '0'") or die("error3: " . mysql_error());
mysql_query("DELETE `outbox` WHERE `date` between '$mailold' and '$now'") or die("error4: " . mysql_error());
Den Fehler finde ich nun trotzdem netCode :1
error1: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE `date` between '2005-08-10' and '2005-08-12' AND `lesen`
-
Soweit ich weiß, muss die Abfrage (nennt man das dort auch so?) bei einem Löschvorgang
DELETE FROM tabelle WHERE ...
lautetGruß fanste
Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )
Problem gelöst? Dann markiere das Thema bitte als erledigt!
Beachte bitte die Netiquette. Insbesondere Punkt 15.
-
12.08.05 19:51 #6
- Registriert seit
- Mar 2005
- Beiträge
- 184
fehler gefunden:
So muss des aussehen.PHP-Code:mysql_query("DELETE FROM `inbox` WHERE `date` > '$mailage' AND `lesen` > '0'") or die("error1: " . mysql_error());
mysql_query("DELETE FROM `inbox` WHERE `date` > '$mailold'")or die("error2: " . mysql_error());
mysql_query("DELETE FROM `outbox` WHERE `date` > '$mailage' AND `lesen` > '0'") or die("error3: " . mysql_error());
mysql_query("DELETE FROM `outbox` WHERE `date` > '$mailold'") or die("error4: " . mysql_error());
So das mit dem löschen geht, aber wie mach ich des mit dem Alter hochzählen? Eben ist mir aufgefallen das ich bei der Abfrage, nach Einträgen suche die zb zwischen 2005-05-01 und 2005-08-12 Geburstag haben.
Aber eigentlich muss man ja nur nach dem Tag und Monat suchen. Wie mach ich das denn? Also das Gebursdatum ist so in die Datenbank geschrieben
Beispiel: 2005-08-12
Wenn jemand ne Lösung hat bitte melden!
Geändert von lifehunter (12.08.05 um 20:01 Uhr)
-
Ich denke, die MySQL-Funktionen MONTH() und DAY(), auf das Feld mit dem Datum angewendet, helfen.
Im Ruhestand.
-
12.08.05 21:55 #8
- Registriert seit
- Mar 2005
- Beiträge
- 184
ich habe eben mal nach dieser Funktion gesucht jedoch nix gefunden. Kann man mir da vielleicht jemand weiterhelfen? Am besten ein Beispiel wiedergeben
-
Du solltest dringend an deiner Suchtechnik feilen, ich brauchte dafür keine zwei Minuten: MySQL Reference Manual :: 12.5 Date and Time Functions
Im Ruhestand.
-
12.08.05 22:13 #10
- Registriert seit
- Mar 2005
- Beiträge
- 184
da hatte ich auch was gefunden. Das hatte ich auch gefunden http://www.little-idiot.de/mysql/mysql-166.html
Eine gescheite Erklärung ist aber bei beiden irgendwie nicht.
-
Doch, eigentlich schon. Du musst sie nur lesen. Was soll an den Funktionen so kompliziert sein?
Code :1
SELECT field_a, field_b FROM table_a WHERE YEAR(field_c) = 1999;
Im Ruhestand.
-
12.08.05 22:39 #12
- Registriert seit
- Mar 2005
- Beiträge
- 184
okay ich habe da jetzt was in einem Buch gefunden, aber ich mach da irgendwas falsch:
Also der Fehler liegt irgendwo bei dem MONTH | DAYCode :1
SELECT `ID`, `geb` FROM `userdaten` WHERE `geb`BETWEEN EXTRACT(MONTH | DAY FROM 2005-05-01) and EXTRACT(MONTH | DAY FROM 2005-08-12)
Wenn ich es so mache wird zwar keine Fehler ausgegeben:
Aber Ergebnisse werden trotzdem nicht gefunden, obwohl es welche geben sollte.Code :1
SELECT `ID`, `geb` FROM `userdaten` WHERE `geb`BETWEEN EXTRACT(MONTH FROM 2005-05-01) and EXTRACT(MONTH FROM 2005-08-12)
-
Ich verschiebe das jetzt einfach mal in das Datenbankenforum...
Im Ruhestand.
-
13.08.05 18:20 #14
- Registriert seit
- Mar 2005
- Beiträge
- 184
So ich werd dann mal nach langem rumprobieren die Lösung preisgeben.
Vorher werd ich noch mal erklären was man damit machen kann:
Ich habe in der Datenbank das Gebursdatum und das Alter jedes Users stehen.
Bei ersten Login des Tages wird ein Systemcheck gemacht. Das Datum dieses Systemchecks wird gespeichert, damit falls ein paar Tage niemand online ist, die übergangen Systemchecks nachgeholt werden.
Bei diesem Systemcheck werden alle User aus der Datenbank gelesen, die seit dem letzten Systemcheck Geburstag hatten und deren Alter um 1 hochgezählt.
Und so sieht die Auslese der User aus:
Die Var. $check beinhaltet das Datum des letzten Systemchecks.PHP-Code:SELECT `ID`,`Nick`,`geb` FROM `userdaten` WHERE EXTRACT(MONTH FROM `geb`) BETWEEN EXTRACT(MONTH FROM '$check') and EXTRACT(MONTH FROM '".date("Y-m-d")."') AND EXTRACT(DAY FROM `geb`) BETWEEN EXTRACT(DAY FROM '$check') and EXTRACT(DAY FROM '".date("Y-m-d")."')
Ich hoffe ihr könnt das auch bei euch anwenden.
Ähnliche Themen
-
MySQL-Ausgabe wenn Bedingung erfüllt ist
Von bloodytriker im Forum PHPAntworten: 2Letzter Beitrag: 22.06.10, 16:31 -
Weiterleitung wenn Bedingung erfüllt ist
Von DrBonsai im Forum PHPAntworten: 7Letzter Beitrag: 12.03.10, 19:53 -
Wenn Bedingung erfüllt, Aktion ausführen
Von creativeheadz im Forum PHPAntworten: 1Letzter Beitrag: 05.07.09, 19:56 -
Verlinkung wenn if bedingung erfüllt ist?
Von fluorescence im Forum PHPAntworten: 13Letzter Beitrag: 22.09.08, 20:47 -
Neue auswahl wenn Bedingung erfüllt ist
Von eternitysoft im Forum Javascript & AjaxAntworten: 1Letzter Beitrag: 17.10.05, 02:55





Zitieren
Login





