[php] random een getal maar niet dubbel

Pagina: 1
Acties:

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Ik wil een aantal banners op m'n pagina hebben echter, deze mogen niet dubbel zijn. Dit is wat ik al heb:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    function banner(){
        
        $nr=rand(1,3);

        if ($nr==1){echo("BANNER 1<br>");}
        elseif ($nr==2){echo("BANNER 2<br>");}
        elseif ($nr==3){echo("BANNER 3<br>");}
}

banner();
banner();
banner();
banner();
banner();


Hoe kan ik echter voorkomen dat ik geen dubbele banners krijg? Kan iemand een aanzet geven?

Station van Gerwin Prins op Apple Music


Verwijderd

Misschien met
code:
1
void shuffle ( array array)

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Verwijderd schreef op 22 oktober 2002 @ 20:22:
Misschien met
code:
1
void shuffle ( array array)
Dank je, ik zal eens kijken of ik iets met die term kan vinden op het web. Nog meer mensen met suggesties?

Station van Gerwin Prins op Apple Music


  • Sybr_E-N
  • Registratie: December 2001
  • Laatst online: 14:09
Je kunt bv bij houden welke banner er al opstaat, array ofzo, en dat je dan controleerd of je 'nieuwe' banner er al in staat, if (in_array($banner_array, $nieuw)).

  • Gerwin
  • Registratie: Juli 2001
  • Laatst online: 08-06 20:10

Gerwin

Ik ben er klaar voor!

Topicstarter
Heb ik deze goed zo, heb ik de garantie dat ik geen dubbele krijg op deze manier:

PHP:
1
2
3
4
5
6
$numbers = range (1,20);
srand ((float)microtime()*1000000);
shuffle ($numbers);
while (list (, $number) = each ($numbers)) {
    echo "$number ";
}

Station van Gerwin Prins op Apple Music


Verwijderd

Als je versie PHP < 4.2 is, moet je idd eerst random seed aanmaken, zie functies srand() en rand() op nl.php.net
Als je meerdere banners tegelijkertijd wilt tonen, zul je toch echt ff moeten controleren of je niet twee keer hetzelfde nummertje trekt. Gaan het om meerdere page-views die nooit achter elkaar de zelfde banner mogen tonen, moet je in een cookie of een sessie-variabele opslaan welke banners deze gebruiker al heeft gezien.
Pagina: 1