phpbar.de logo

Mailinglisten-Archive

[php] [php/mysql] Optimierte Kalenderabfrage

[php] [php/mysql] Optimierte Kalenderabfrage

Alex Emken php at emken.com
Die Jun 14 20:11:51 CEST 2005


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