Zugegeben, da hast Du natürlich Recht... Allerdings wüsste ich nicht, wie man dieses Problem sonst lösen könnte. Bin mal gespannt ob jemand eine bessere Idee hat.
Um die zusätzlichen Abfragen zu minimieren, könntest Du auch folgendes machen:
Anstatt:
|
PHP-Quelltext
|
1
2
3
|
#Gewichtung ermitteln
$gewicht = '555554444333221';
$gewichtung = $gewicht{rand(0, 14)}
|
lässt Du die Variable
$gewicht dynamisch erstellen:
|
PHP-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#Gewichtung ermitteln
$gewicht = '';
$query = "SELECT gewichtung FROM tabelle GROUP BY gewichtung ORDER BY gewichtung ASC";
$result = mysql_query($query);
while($data = mysql_fetch_object($result))
{
for($i = 0; $i < $data->gewichtung; $i++)
{
$gewicht .= $data->gewichtung;
}
}
$length = strlen($gewicht)-1;
$gewichtung = $gewicht{rand(0, $length)};
|
Auf diese Weise hast Du zwei Abfragen, aber es kann so nicht dazu kommen, dass eine Banner-Abfrage ein leeres Ergebnis liefert.
Du könntest das Ergebnis auch irgendwo zwischenspeichern und mit dem Bannercode übergeben, und diesen String immer nur dann aktualisieren, wenn sich der Bestand an Bannern ändert...
Dann bist Du wieder bei einer einzigen DB-Abfrage pro Banner...

So besser?