3 random projecten op verschillende plaatsen in de site laten zien

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tamara

Tamara

18/12/2009 15:39:00
Quote Anchor link
Ik heb een array met projecten.

Ik moet uit deze array 3 random projecten laten zien, alle 3 moeten ze op een aparte plek in de pagina komen.

Ik heb het net met een functie geprobeerd, maar dan krijg ik alsnog dubbele projecten.

weet iemand hoe ik dit kan oplossen?
 
PHP hulp

PHP hulp

24/12/2024 14:15:16
 
M Ypma

M Ypma

18/12/2009 15:42:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
shuffle( $projecten );

en op elke plek dat je een project wilt weergeven:
$project = array_pop( $projecten );

en op een andere plek idem dito, zo heb jen ooit dubbele projecten:
$project = array_pop( $projecten );
?>
 
SilverWolf NL

SilverWolf NL

18/12/2009 15:56:00
Quote Anchor link
Zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?PHP
$DisplayArray
=array();
$n=mt_rand(0,count($ProjectArray)-1);
while(count($DisplayArray)<3)){
    if(!in_array($ProjectArray[$n],$DisplayArray)){
        $DisplayArray[]=$ProjectArray[$n];
    }

    $n=mt_rand(0,count($ProjectArray)-1);
}

?>


Let wel op: deze loop blijft lopen als je minder dan 3 projecten in je projectarray hebt staan, en als je er 3 hebt, kan het lang duren voordat hij een array heeft samengesteld. Hoe meer er dus in je array zitten, hoe beter.

Edit:
@boven was sneller, en is waarschijnlijk ook beter ;)
Gewijzigd op 01/01/1970 01:00:00 door SilverWolf NL
 
Tamara

Tamara

18/12/2009 16:17:00
Quote Anchor link
Ypma schreef op 18.12.2009 15:42:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
shuffle( $projecten );

en op elke plek dat je een project wilt weergeven:
$project = array_pop( $projecten );

en op een andere plek idem dito, zo heb jen ooit dubbele projecten:
$project = array_pop( $projecten );
?>


Is lekker kort :)

maar ik krijg wél dubbele projecten. ik denk dat ik er ook maar een check op moet gooien of het project_id al bestaat.


ik had ook net op internet gezien dat je een array kan returnen in een functie. (bij: Returning Multiple Values From A Function)

dan kan ik bovenaan mn pagina de functie aanroepen, en op de juiste plekken die variabelen printen (is dat correct??)
Gewijzigd op 01/01/1970 01:00:00 door Tamara
 
- SanThe -

- SanThe -

18/12/2009 16:29:00
Quote Anchor link
Tamara schreef op 18.12.2009 16:17:
Ypma schreef op 18.12.2009 15:42:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
shuffle( $projecten );

en op elke plek dat je een project wilt weergeven:
$project = array_pop( $projecten );

en op een andere plek idem dito, zo heb jen ooit dubbele projecten:
$project = array_pop( $projecten );
?>

maar ik krijg wél dubbele projecten.

Dan zitten er al dubbele in het array().
 
Tamara

Tamara

18/12/2009 16:31:00
Quote Anchor link
dat kan niet, want mn array bestaat uit unieke IDs.
 
- SanThe -

- SanThe -

18/12/2009 16:39:00
Quote Anchor link
Kan volgens mij niet anders.

shuffle( $projecten ) schudt het array() door elkaar.
$project = array_pop( $projecten ) haalt er 1 uit, dus die zit niet meer in het array().
 
Emmanuel Delay

Emmanuel Delay

18/12/2009 16:42:00
Quote Anchor link
Waar komt die array vandaan?
Als het uit een database komt, zorg je er best voor dat de drie random projecten door MySQL worden geselecteerd.
 
Tamara

Tamara

18/12/2009 16:46:00
Quote Anchor link
3 random projecten ophalen is voor mij geen probleem, het probleem is juist dat deze op verschillende plekken in de pagina moeten komen (1 rechts en 2 boven)

dus ik moet die 3 projecten van elkaar kunnen onderscheiden
 
Kasper Heyndrickx

Kasper Heyndrickx

18/12/2009 16:49:00
Quote Anchor link
kan je gewoon niet, om te vermijden dat je er meerdere hebt, uw project dat je al hebt getoond verwijderen met unset()?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.