meiner meinung nach gibt es keinen einfachen und performanten weg mit mysql.
diese informationen dynamisch zu holen halte ich für problematisch, du müsstest ja wenn's blöd läuft eine for-schleife mit korrekten start- und end-daten mit php generieren, und damit würde der mysql-query ziemlich lang werden machen.
aus diesem grund würde ich solche daten bereits beim einfügen in die datenbank redundant in einer zusätzlichen tabelle speichern, die den fremdschlüssel zum dazugehörigen eintrag enthält.
angenommen, die originaltabelle lautet:
eintraege: id | datum | ...
eine performante lösung wäre eine zusätzliche tabelle, in der form:
wochentage: dokumentid | wochentag
bereits bei einem INSERT in die tabelle 'eintraege' fügst du zusätzlich in die 'wochentage' eine zeile ein:
Code:
INSERT INTO wochentage (dokumentid,wochentag) VALUES ( $deineDokumentID, date('w',$datumDesDokuments)) ...
beim auslesen aller 'montags-einträge' kannst du dann, als beispiel hier für 'alle einträge die auf montage und freitage des monats februar 2005 datiert sind' folgendermaßen vorgehen:
Code:
SELECT e.id, e.datum, [...] FROM eintraege as e, wochentage as w
WHERE
w.dokumentid = e.id AND
w.wochentag IN(1,5) AND
e.datum BETWEEN ($feb2005Start AND $feb2005End )
... wobei
PHP-Code:
<?php
$feb2005Start = mktime(0,0,0,2,1,2005);
$feb2005End = mktime(0,0,0,3,1,2005) -1;
?>
wenn du mit mysql-internen DATE-sachen arbeitest, musst du halt ein wenig umändern, das prinzip bleibt aber gleich.