CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
04.01.2010, 00:35:27
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hi
ich sage mal dann brauchst du einen subselect wie das performancemässig bei
dir dann aussieht sofern deine Veranstaltungstermine/Werbung o.ä. bei jeden Seitenaufruf
abgefragt werden musst du mit "explain" und logfiles prüfen. Ansonsten empfehle ich dir das Ergebnis in einer seperaten Tabelle täglich
vom ersten Besucher oder per Cron zu cachen
Hier mit subselect
Code:
$sql = "SELECT * FROM msc_infos WHERE vdatum >= CURDATE() and vdatum <= date_add((SELECT vdatum FROM msc_infos WHERE vdatum >= CURDATE() limit 1),INTERVAL 7 DAY) ORDER BY vdatum LIMIT 3;"
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
04.01.2010, 10:47:44
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hallo Ckaos.
Erstmal vielen Dank. Die Sache mit dem doppelten select hätte ich nie hin bekommen.
Dein sql funktioniert, hattest nur im DATE_ADD im SELECT nochmal das 'ORDER BY vdatum' vergessen, denn die Datensätze sind ein bischen durcheinander in der db.
Wie gesagt es funktioniert, nach einigenb Test und unter xamp sp wie ich da brauche und schnell genug, sind ja max 100 aktuelle und mit Datenmüll 200 Datensätze in dieser Tabelle.
Ich hatte allerdings der Übersichtlichkeit wegen, nicht alle Auswahlkriterien angegeben.
Neben
- auf jeden Fall den datumsnächsten Datensatz, egal was für ein vdatum
- Datensatz2 nur, wenn vdatum1 zu vdatum2 < 7 Tage
- Datensatz3 nur, wenn vdatum1 zu vdatum3 < 7 Tage
gibt es da noch ein bdatum, welches genau wie oben verglichen werden muss.
(vdatum = Beginn einer Veranstaltung,
bdatum = Ende einer Veranstaltung wenn diese über mehrere Tage läuft, 0000-00-00 Werte möglich !)
-weiterhin noch ein Feld names 'sort', welches mir eine Zahl von 0-6 beiinhaltet und die Wertigkeit der Veranstaltung kennzeichnet. Nur Datensätze mit Wert über 0 werden gebraucht.
-weiterhin ein Feld 'infoseitefreigeben' mit Wert ja oder nein, ob der Werbebanner oder die gesamte Termininfo überhaupt angezeigt werden soll.
Meine komplette Abfrage lautet nun so:
PHP-Code:
$sql = "SELECT * FROM msc_infos WHERE
infoseitefreigeben='ja' AND sort > 0 AND
vdatum >= CURDATE()
AND vdatum <= DATE_ADD((SELECT vdatum
FROM msc_infos
WHERE infoseitefreigeben='ja' AND sort > 0 AND vdatum >= CURDATE()
ORDER BY vdatum LIMIT 1),
INTERVAL 7 DAY)
OR
infoseitefreigeben='ja' AND sort > 0 AND
vdatum >= CURDATE()
AND vdatum <= DATE_ADD((SELECT vdatum
FROM msc_infos
WHERE infoseitefreigeben='ja' AND sort > 0 AND vdatum >= CURDATE()
ORDER BY vdatum LIMIT 1),
INTERVAL 7 DAY)
AND bdatum >= CURDATE()
ORDER BY vdatum LIMIT " . $maxtoplimit;
wenn du Lust hast, kannst sie ja mal kurz überdenken, wäre toll.
Ansonsten viele Grüße und bis zum nächsten Problem
Bernhard
|
04.01.2010, 15:06:53
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hi
Zitat:
Zitat von bernhard3105
Erstmal vielen Dank.
|
kein problem
Zitat:
Zitat von bernhard3105
Die Sache mit dem doppelten select hätte ich nie hin bekommen.
|
Subselects sind schon was feines aber man muss dort schon zwecks performance aufpassen.
Warum das nachfolgende ausgewertet werden soll und in welchem Verhältnis versteh
ich nicht. Oder sollen quasi laufende mit gewertet werden quasi
Heute 04.01 event geht bis 10.01 also wird dieser inkl. der nächsten startenden angezeigt?
Zitat:
Zitat von bernhard3105
gibt es da noch ein bdatum, welches genau wie oben verglichen werden muss.
(vdatum = Beginn einer Veranstaltung,
bdatum = Ende einer Veranstaltung wenn diese über mehrere Tage läuft, 0000-00-00 Werte möglich !)
|
Ansonsten reicht das den dein "or" macht so kein sinn
PHP-Code:
$sql = "
SELECT * FROM msc_infos
WHERE
infoseitefreigeben='ja' AND
sort > 0 AND
vdatum >= CURDATE() and
vdatum <= DATE_ADD((SELECT vdatum FROM msc_infos WHERE infoseitefreigeben='ja' AND sort > 0 AND vdatum >= CURDATE()
ORDER BY vdatum LIMIT 1),
INTERVAL 7 DAY)
ORDER BY vdatum LIMIT " . $maxtoplimit;
mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
04.01.2010, 18:15:46
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hallo Ckaos.
Ja, bdatum muss unbedingt mit rein.
Veranstaltung
vdatum= 09.05.2010,
bdatum=12.05.2010
aktuelles Datum ist 10.05.2010
bei Prüfung von nur vdatum würde die Veranstaltung nicht mehr angezeigt, da vdatum schon Vergangenheit ist, obwohl die Veranstaltung noch ein paar Tage läuft.
Bin mir aber auch nicht sicher, ob meine OR-Geschichte so in allen Fällen läuft, bei Tests hats aber geklappt.
Viele Grüße
Bernhard
|
04.01.2010, 19:42:47
|
Member
|
|
Registriert seit: Nov 2007
Beiträge: 843
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hi
na das is mal ne Aufgabe ;)
Ich kann dir leider nur einen Ansatz und weitere Fragestellungen mit auf den
Weg geben da alles weitere für mich in arbeit enden würde *hust
Und nun denk ich solltest du mit dem nächsten codesatz kommen *hrhr
Code:
SELECT * FROM `msc_infos`
where
infoseitefreigeben='ja' AND
sort > 0 AND
(vdatum>=CURDATE() OR bdatum>=CURDATE()) AND
vdatum <= DATE_ADD((SELECT vdatum FROM msc_infos WHERE infoseitefreigeben='ja' AND
sort > 0 AND (vdatum >= CURDATE() OR bdatum>=CURDATE())
ORDER BY vdatum LIMIT 1),
INTERVAL 7 DAY) ORDER BY vdatum LIMIT 3
Diese Abfrage berücksichtigt den Zeitraum des ersten gefundenen Ergebnisses.
Würde aber bei sich überschneidenen Zeiträumen nicht mehr die richtigen Ergebnisse liefern da dazu weitere kontrollstrukturen nötig wären.
bsp vereinfacht
id|vdatum|bdatum {checktag (erstes gefundenes startdatum+interval 7 tage)}
1|01.01|10.01 {8}
2|02.01|09.01 {9}
3|03.01|08.01 {10}
4|04.01|07.01 {11}
Hoffe du verstehst worauf ich hinaus will.
Mfg
Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
|
05.01.2010, 13:54:58
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hallo Ckaos.
Vielen herzlichen Dank.
Im Prinzip arbeitet Deine Abfrage gut und ausreichend.
Ich habe den ganzen Vormittag getestet und nur eine Kleinigkeit gefunden, was noch nicht 100% und perfekt ist.
Wenn bdatum, also das Enddatum unter 7 Tage an die nächste Veranstaltung heran geht, wird die nächste Veranstaltung noch nicht angezeigt. Also vdatum ist weit über 7 Tage voneinander entfernt aber bdatum reicht bis unter 7 Tage an die Nächste heran.
Wie gesagt, ich habe den ganzen Vormittag versucht dafür eine Lösung zu finden, aber nicht geschafft. Ist mir jetzt auch egal, bzw. werde abwarten, wie sich das in der Praxis auswirkt. Die Webseite läuft ja seit Jahren, ich bin an einem Update mit zusätzlichen Funktionen, wo diese Abfrage auch zu gehört.
Also vielen Dank nochmal und viele Grüße aus Schwerte
Bernhard
|
08.01.2010, 17:26:20
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hallo Ckaos.
Habe soeben den Code online gestellt, gehostet bei 1&1 und siehe da - funktioniert nicht.
Offline unter xamp tadellos, online funzt nicht - keine Fehlermeldung.
Was kann das jetzt sein ???
Wäre echt Mist,wenn das unter 1&1 nicht läuft.
PHP-Code:
$sql = "SELECT id,sparte,von,bis,bezeichnung,startzeit FROM msc_termin
where
infoseitefreigeben='ja' AND sort >= $plakatsort AND
(von >= CURDATE() OR bis >= CURDATE()) AND
von <= DATE_ADD((SELECT von FROM msc_termin WHERE
infoseitefreigeben='ja' AND sort >= $plakatsort AND
(von >= CURDATE() OR bis >= CURDATE())
ORDER BY von LIMIT 1),INTERVAL $maxdatumspanne DAY)
ORDER BY von LIMIT $maxtoplimit;";
|
08.01.2010, 17:42:41
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Zitat:
Zitat von bernhard3105
[...]
keine Fehlermeldung.
Was kann das jetzt sein ???
Wäre echt Mist,wenn das unter 1&1 nicht läuft.
|
Was hast Du schon zu Fehlereingrenzung getan?
Hast Du die Fehleranzeige aktiviert?
PHP-Code:
error_reporting(-1);
ini_set('display_errors', TRUE);
Arbeitest Du mit mysql_error()?
Hast Du das SQL-Statment bei 1&1 mittels phpMyAdmin getestet?
Hast Du das SQL-Statment in Teile zerlegt und getestet?
Dauert die Abfrage zu lange und es kommt zum TimeOut?
Hast Du Dir die Abfrage vor der Ausführung mal ausgeben lassen - sind die Variablen richtig aufgelöst?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
08.01.2010, 18:01:21
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 66
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Hallo vt1816
Abfrage vor Ausführung ausgegeben ist ok,
Dauert nicht zu lange, kein timeout,
in Teile zerlegt ja, scheint am subselect zu liegen.
Mit mysql_error arbeite ich nicht, werde mich als nächstes damit befassen
in phpadmin eingegeben ergibt folgende Fehlermeldung:
MySQL meldet: Dokumentation
#1064 - 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 'SELECT von FROM msc_termin WHERE
Hoffe das hilft dir weiter.
|
08.01.2010, 18:22:38
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Datumsvergleich innerhalb 7 Tagen
Welche MYSQL-Version ist auf den beiden Systemen?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:52:20 Uhr.
|