Mailinglisten-Archive |
Michael Wurz wrote: > Im Moment läuft es bei mir mit einer for($i=0, $i < 31, $i++) Schleife, in die ich eine Mysql Abfrage eingeliedert habe. > > SELECT timestamp FROM geburtstage WHERE user = '".$id."' AND timestamp BETWEEN '".$start_date."' AND '".$stop_date."' ORDER BY timestamp LIMIT 1; > $db_highlight = mysql_num_rows(mysql_query($sql,$dblink)); > > Im Prinzip möchte ich dort nur prüfen, ob der eingeloggte User Geburtstage zu einem bestimmten Datum hat, oder nicht. Inzwischen sind die eingetragenen Geburtstage in der Datenbank auf eine Zahl angewachsen, die die Abfragen von Tag zu Tag langsamer werden lassen. Kann ich irgendwas geschickter machen? > > Kann ich zuerst ne Einmalige SQL Abfrage machen, die ich dann in der Schleife auslesen kann? Ich möchte vermeiden, dass bei jedem Aufruf des Kalenders erstmal 31 Queries losgeschickt werden müssen, bevor ich weiß was los ist. Freue mich auf eure Tipps! Hallo Michael. Was steht denn in $start_date und $stop_date? Du kannst das Query vor die Schleife setzen und mit Monatsanfang und Monatsende für $start_date bzw. $stop_date arbeiten. Das Ergebnis packst Du in ein Array mit den Datum als Schlüssel. Falls mehrere Personen an einem Tag Geburtstag haben, packst du die Namen (oder sonstiges) als String jeweils hinten dran, oder arbeitest mit einem Array als Wert. So ersparst Du dir die max. 31 SQL-Statements. Gruß, Alex -- Enttäuscht vom Affen, schuf Gott den Menschen. Danach verzichtete er auf weitere Experimente. (Mark Twain)
php::bar PHP Wiki - Listenarchive