Goedenavond,

Ik ben op dit moment bezig met een website voor me stage alleen wil ik 3 willekeurige plaatjes selecteren uit een bepaalde map met meerdere plaatjes erin en ik weet helaas niet hoe dat moet zou iemand mij kunnen helpen.

Je zou een array kunnen maken met alle plaatjes uit de map. Daarna doe je:

<?php
    shuffle ($array);
?>
oke en hoe doe ik dat??? ja sorry ben nogal een beginner
<?
$map = "./mapnaam/"; // De map van de plaatjes een . voor dezelfde map als waar dit bestand staat.

$dir = opendir($map);
// Haal de gegevens uit dir
while(false !== ($file = readdir($dir)))
{
if(($file !== ".") && ($file !== ".."))
{
list($filename, $ext) = explode(".", $file);
$ext = strtolower($ext);
if(($ext == "jpg") || ($ext == "png") || ($ext == "gif"))
{
$afbeelding[] = $file;
}
}
}
closedir($dir);

// Telt aantal afbeeldingen in map en maakt een random getal uit dat aantal.
$aantal = count($afbeelding) - 1;
//$rand = mt_rand(0, $aantal); <= edit na eerste post
//if (in_array($rand, $aantal)) {
// $rand2 = mt_rand(0, $aantal);
//}

// vier random unieke plaatjes
$randExists=array();
for ($i=0;$i<4;$i++) { //hier stond geen { ...
$rand = mt_rand(0, $aantal);
if(!array_key_exists($rand,$randExists)) { //hier stond geen ( en key_exist moet zijn array_key_exists ...
// $i--; foutje dat moet ie doen als ie wel in randExists zit
echo "<img class=\"samenwerkingenimg\" src=\"". $map . $afbeelding[$rand]."\"> " ;
$randExists[$rand]=$rand;
}
else {
$i--;
}
}

?>

Alsjeblieft!
<?php
$src = array('plaatje1.jpg','plaatje2.jpg','plaatje3.jpg','nog meer plaatjes');
//Of uit je database...
echo array_rand($src,3);
?>

Is wat korter dan shuffle.

edit:

Oh 3 oke
@ Kalle: die kan ook, maar in dit geval moet je dan als tweede parameter 3 opgeven, het aantal willekeurige elementen dat je wilt.
Ja toen ik ge-edit viel het me op.
Direct veranderd...
@ Jurgen: het kan een stuk korter:

<?php
	function get_images ($dir) {
		if ($handle = opendir($dir)) {
			$imgs = array ();	
			while (false !== ($file = readdir($handle))) { 
				if ($file != "." && $file != "..") {
					if (eregi ('\.jpg|\.gif', $file)) {
						array_push ($imgs, $file);
					}
				}
			}
			closedir($handle);
			return $imgs;
		}
		return false;
	}
	$imgs = get_images ('images/');
	if (is_array ($imgs)) {
		$random = array_rand($imgs, 3);
		foreach ($random as $value) {
			echo '<img src="images/' . $value . '">';
		}
	}
?>

[edit]
foutje verbeterd
[/edit]
Vraagje tussendoor over die eregi
Dit teken | staat voor de or ofzo in de eregi? Zoals || or betekend in PHP?
Dus als ik dan .png ook nog toe wil voegen zou het dan zo worden?

if (eregi ('\.jpg|\.gif|\.png', $file)) {
@ Robert: klopt :-)
Jan Koehoorn schreef op 08.11.2006 23:49
@ Robert: klopt :-)


Mooi, begin die reguliere expressies steeds beter te begrijpen. Ze zijn vaak erg handig ;)

Reageren