PHP Hilfe gesucht Mysql abfragen

realbanner

wieder dabei
ID: 251
L
16 April 2008
87
3
Hallo
Ich lese mit Row die Anzahl von möglichen Zeilen aus einer Datenbank aus zb 38.
habe sowas mal für Banner gemacht etwa so
$sql="select * from user_banner where status ='aktiv'";
$result=mysql_query($sql);
$zahl=mysql_num_rows($result);

srand((double)microtime()*1000000);
$zahl= rand(0,($zahl-1));
$bid=mysql_result($result,$zahl);// bid =banner id
ich suche jetzt die möglichkeit 10 zufällige banner anzuzeigen dabei soll keiner doppelt gezeigt werden.
dabei soll aber noch eine andere Tabelle berüksichtigt werden und zwar
IP_banner dort sind
id, =banner id
ip, =Besucher ip
time Zeit des letzten Besuchs der IP (time)
gespeichert.
Nun soll der Banner einem Besucher innerhalb von time+12*3600 nicht doppelt gezeigt werden.
hoffe ich habe mein Prob ausführlich geschildert.
Ich möchte natürlich nicht das jeder Banner etliche schleifen durchläuft um getestet zu werden !
Wer kann mir weiterhelfen ?
 
Das mit den zufälligen Bannern ist sehr viel einfacher zu lösen:
Code:
select ... from ... where ... ORDER BY RAND LIMIT 10

Mach nach Möglichkeit kein "Select *", sondern gib die benötigten Daten explizit an. Das ist besserer Stil und meistens braucht man auch nicht alle Daten.

Für das andere mußt du auf zwei Tabellen gleichzeitig zugreifen. Nur das mit dem IPs ist etwas schwierig. Wenn ich mir das heute abend noch ausdenken soll, dann wird das bestimmt falsch.

Und du solltest einer Spalte 'status' einen numerischen Wert geben (z.B. 0 für inaktiv, 1 für aktiv). Das kann wesentlich schneller durchsucht werden als Text.
 
Das mit den zufälligen Bannern ist sehr viel einfacher zu lösen:
Code:
select ... from ... where ... ORDER BY RAND LIMIT 10

Mach nach Möglichkeit kein "Select *", sondern gib die benötigten Daten explizit an. Das ist besserer Stil und meistens braucht man auch nicht alle Daten.

Für das andere mußt du auf zwei Tabellen gleichzeitig zugreifen. Nur das mit dem IPs ist etwas schwierig. Wenn ich mir das heute abend noch ausdenken soll, dann wird das bestimmt falsch.

Und du solltest einer Spalte 'status' einen numerischen Wert geben (z.B. 0 für inaktiv, 1 für aktiv). Das kann wesentlich schneller durchsucht werden als Text.


Super :) Ich danke Dir chon mal für die Hilfe !!!
Habe leider recht wenig Ahnung aber dafür ein etwas größeres Objekt vor !
Natürlich für jede Hilfe Dankbar.
werde heute abend direkt mal das mit den zufalls banner ändern