Toon posts:

[php] random array entry 3 maal

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een fotoboek script waarbij bij iedere beschrijving van het evenement een random image langs de zijkant zet.

dit doe ik met deze code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?
    include("../login.php");
        
    $sql = "SELECT * FROM fotogalery ORDER BY id DESC";
    $result = mysql_query($sql);
        
    while($record = mysql_fetch_object($result)) {

    $datum = convertDate($record->datum);
    $dir = $record->dir;
    $activiteit = $record->activiteit;
    
    // dir lezen en bestanden in array plaatsen
    $open = opendir($dir); 
    $i=0;
    while (false !== ($bestanden = readdir($open))) {    
    if(($bestanden<>".") AND ($bestanden<>"..") AND ($bestanden<>"thumbnails") AND (substr($bestanden,-3)=="jpg")) {        
    $bestandslijst[$i] = $bestanden;        
    $i++;     
    } 
    } 
    closedir($open);

    //generate entry
    $entry = array_rand($bestandslijst);
    //$img = filename
    $img = $bestandslijst[$entry];  
?>


Wat nu het geval is, is dat de eerste dir de meeste aantal foto's heeft.
Hierdoor random hij wel 3 verschillende getallen, dus 1 per evenement, maar zijn deze getallen voor de andere 2 te hoog.

Bijv.:
Evenement 1 heeft 270 foto's - Random getal: 150
Evenement 2 heeft 25 foto's - Random getal: 50
Evenement 3 heeft 98 foto's - Random getal: 99

Hoe kan ik zorgen dat de random getallen voor de overige ook binnen de array zitten?

  • Dryw.Filtiarn
  • Registratie: September 2001
  • Laatst online: 18-03 12:10
Als je een count( $bestandslijst ) doet weet je hoeveel items er in de array zitten.

=( Protected by witchcraft )=


Verwijderd

Topicstarter
bestandslijst[i] geeft ook hoogste waarde aan

maar moet die count( $bestandslijst ) voor de random?

Verwijderd

zit het geheel niet in die whileloop die je resultset uitleest? dan moet je iedere keer weer $bestandslijst leegmaken hè!

Verwijderd

Topicstarter
ja daar zat ik ook aan te denken, want hij zit in de while lus.
Maar $i=0 staat vooraan de array verwerking.

Of moet je een array op een andere manier leegmaken?

Verwijderd

Topicstarter
Met andere woorden hoe kan ik de inhoud van een array "clearen" ???

  • ^Mo^
  • Registratie: Januari 2001
  • Laatst online: 04-11-2025
Verwijderd schreef op 25 augustus 2002 @ 20:07:
Met andere woorden hoe kan ik de inhoud van een array "clearen" ???
$ArrayName = array(); :? Maak je gewoon een nieuwe, lege, array aan.

"There are 10 kinds of people in the world, those who understand binary and those who don't" | Werkbak specs

Pagina: 1