SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #11  
Alt 04.01.2010, 01:35:27
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #12  
Alt 04.01.2010, 11:47:44
bernhard3105 bernhard3105 ist offline
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
Mit Zitat antworten
  #13  
Alt 04.01.2010, 16:06:53
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: Datumsvergleich innerhalb 7 Tagen

Hi

Zitat:
Zitat von bernhard3105 Beitrag anzeigen
Erstmal vielen Dank.
kein problem
Zitat:
Zitat von bernhard3105 Beitrag anzeigen
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 Beitrag anzeigen
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!
Mit Zitat antworten
  #14  
Alt 04.01.2010, 19:15:46
bernhard3105 bernhard3105 ist offline
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
Mit Zitat antworten
  #15  
Alt 04.01.2010, 20:42:47
Ckaos Ckaos ist offline
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!
Mit Zitat antworten
  #16  
Alt 05.01.2010, 14:54:58
bernhard3105 bernhard3105 ist offline
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
Mit Zitat antworten
  #17  
Alt 08.01.2010, 18:26:20
bernhard3105 bernhard3105 ist offline
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;"

Mit Zitat antworten
  #18  
Alt 08.01.2010, 18:42:41
Benutzerbild von vt1816
vt1816 vt1816 ist offline
Administrator
 
Registriert seit: Jul 2004
Beiträge: 3.707
AW: Datumsvergleich innerhalb 7 Tagen

Zitat:
Zitat von bernhard3105 Beitrag anzeigen
[...]
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!
Mit Zitat antworten
  #19  
Alt 08.01.2010, 19:01:21
bernhard3105 bernhard3105 ist offline
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.
Mit Zitat antworten
  #20  
Alt 08.01.2010, 19:22:38
Benutzerbild von vt1816
vt1816 vt1816 ist offline
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!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Alle Tabellen innerhalb DB auslesen Midgard87 MySQLi/PDO/(MySQL) 1 31.03.2009 17:24:51
datumsvergleich Willow HTML, CSS und JavaScript Help! 3 12.07.2005 00:31:34
Variablen innerhalb eines Objekts in einer Session speichern luca PHP für Fortgeschrittene und Experten 6 09.09.2004 16:57:00
sendmail über popen innerhalb einer schleife mannydi PHP für Fortgeschrittene und Experten 0 06.06.2003 21:50:29
abstand in tagen? Willy PHP Grundlagen 31 18.02.2003 00:06:48


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43:09 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt