[php] random bestanden picken*

Pagina: 1
Acties:

  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 12-09 22:04
ik wil graag 3 verschillende rondom bestanden uit een dir halen.
ik gebruik nu deze code mar die veroorzaakt een loop.

misschien dat jullie de fout zijn.
PHP:
1
<?function GetDirArray($sPath) {      //Load Directory Into Array      $handle=opendir($sPath);      while ( $file = readdir($handle) )            $retVal[count($retVal)] = $file;      //Clean up and  sort      closedir($handle);           sort($retVal);      return $retVal;}$ag=GetDirArray("./pics");?><pre><?print_r ($ag);?></pre><?function make_seed() {      list($usec, $sec) = explode(' ', microtime());      return (float) $sec + ((float) $usec * 100000);}  mt_srand(make_seed());  $numbercheck[1]="0";  $numbercheck[2]="0";  $numbercheck[3]="0";  $i=1;while ($i<=3) {        $randval = mt_rand("2",sizeof($ag)-2);     echo "randval: ".$randval."<br>";        $pic[$i]=$ag[$randval];        $numbercheck[$i]=$randval;        echo "numcheck $i: ".$numbercheck[$i]."<br>";        $i++;        if ($numbercheck[1]==$randval) {      $i--;    }        if ($numbercheck[2]==$randval) {      $i--;    }        if ($numbercheck[3]==$randval) {      $i--;    }  }  echo "<br>";  echo $pic[1]."<Br>";  echo $pic[2]."<Br>";  echo $pic[3]."<Br>";?>

[edit van dusty: php code op een lijn op GOT lijkt mij niet verstandig.]

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 12-09 22:04
Sorry dusty ik zag het net maar je had het al gefixt thx.

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

rondom moet random zijn lijkt mij.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 12-09 22:04
Op zondag 17 maart 2002 00:18 schreef dusty het volgende:
rondom moet random zijn lijkt mij.
alweer thx, this al laat he

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 12-09 22:04
heb trouwens nu bijna werkend niet zo netjes maar het werkt al wat beter.
PHP:
1
<?function GetDirArray($sPath){    //Load Directory Into Array    $handle=opendir($sPath);    while ($file = readdir($handle))        $retVal[count($retVal)] = $file;    //Clean up and sort    closedir($handle);         sort($retVal);    return $retVal;}$ag=GetDirArray("./pics");?><pre><?print_r ($ag);?></pre><?function make_seed() {    list($usec, $sec) = explode(' ', microtime());    return (float) $sec + ((float) $usec * 100000);}mt_srand(make_seed());$numbercheck[1]="0";$numbercheck[2]="0";$numbercheck[3]="0";$i=1;while ($i<=3) {    $randval = mt_rand("2",sizeof($ag)-2);    echo "randval: ".$randval."<br>";    if ($numbercheck[1]==$randval) {$i=$i-1;}    if ($numbercheck[2]==$randval) {$i=$i-1;}    if ($numbercheck[3]==$randval) {$i=$i-1;}    $pic[$i]=$ag[$randval];    $numbercheck[$i]=$randval;    echo "numcheck $i: ".$numbercheck[$i]."<br>";    $i++;}echo "<br>";echo $pic[1].substr($pic[1],0,strpos($pic[1],"-"))."<Br>";echo $pic[2].substr($pic[2],0,strpos($pic[2],"-"))."<Br>";echo $pic[3].substr($pic[3],0,strpos($pic[3],"-"))."<Br>";?>

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


Verwijderd

Ik zou het zo doen. (Untested)
PHP:
1
<?function GetDirArray($sPath){    //Load Directory Into Array        $retval = array();    $handle=opendir($sPath);        while ($file = readdir($handle)) $retVal[] = $file;        //Clean up and sort        closedir($handle);             sort($retVal);        return $retVal;}function make_seed() {        return microtime () * 1000000000;}$ag=GetDirArray("./pics");  //? ./ ? waarom ./  en niet gewoon /pics?echo "<pre>";print_r ($ag);echo "</pre>";mt_srand(make_seed());$numbercheck[1]="0"; //waarom doe je dit?$numbercheck[2]="0";$numbercheck[3]="0";$i=1;while ($i<=3) {        $randval = mt_rand("2",sizeof($ag)-2);        echo "randval: ".$randval."<br>";        if ($numbercheck[1]==$randval) $i--;       if ($numbercheck[2]==$randval) $i--;    if ($numbercheck[3]==$randval) $i--;    $pic[$i]=$ag[$randval];        $numbercheck[$i]=$randval;        echo "numcheck $i: ".$numbercheck[$i]."<br>\n";        $i++;}echo "<br>\n" . $pic[1].substr($pic[1],0,strpos($pic[1],"-"))."<Br>\n". $pic[2].substr($pic[2],0,strpos($pic[2],"-"))."<Br>\n". $pic[3].substr($pic[3],0,strpos($pic[3],"-"))."<Br>\n";?>

  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op zondag 17 maart 2002 00:03 schreef Mr-FaTMeN het volgende:
misschien dat jullie de fout zijn.
Ja hoor, nu is het onze schuld weer! :+

  • Grum
  • Registratie: Juni 2001
  • Niet online
GATVERDAMME wat een ranzige oplossingen zeg ....

* Grum maakt even wat .. wacht maar op de edit :P


[edit]
Zo doen we dat :+

[edit2]
zie 2 posts naar beneden

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

opmerking bij code van grum:
misschien nog even controleren of de bestanden die je inleest, een file is en geen dir

en de functie even eindigen met
PHP:
1
<?closedir($theHandle)?>

;)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Grum
  • Registratie: Juni 2001
  • Niet online
ik vind nog wat kleinigheden .. even fix0ren :)

Zo dan ...

Deze code
1/ checked of de dir openbaar is (zou eigelijk ook moeten checken of ie readable is)
2/ checked of het wel een file is wattie opslaat (tnx Thomas)
3/ closed de dir (tnx Thomas)
4/ checked of er genoeg files zijn om de random array te fillen
5/ vult de array aan met lege strings waar nodig.
PHP:
1
<?error_reporting(E_ALL); srand ((float) microtime() * 10000000); function randDirFiles($thePath, $theNum = 1){   if(!($theHandle = @opendir($thePath)))      return -1;    $theFiles = array();    while ($theFile = readdir($theHandle))      if($theFile != '.' &amp;&amp; $theFile != '..' &amp;&amp; is_file($thePath.'/'.$theFile))         $theFiles[] = $theFile;    closedir($theHandle);    $theCount = count($theFiles);   if($theNum > $theCount)   {      if($theCount)         $theFiles = array_rand(array_flip($theFiles), $theCount);       while($theNum > count($theFiles))         $theFiles[] = '';       return $theFiles;   }   return array_rand(array_flip($theFiles), $theNum);} if(($theResult = randDirFiles('/home/', 3)) != -1)   list($theFile1, $theFile2, $theFile3) = $theResult;?>

  • mrfatmen
  • Registratie: Februari 2001
  • Laatst online: 12-09 22:04
Op zondag 17 maart 2002 12:06 schreef Ericston het volgende:

[..]

Ja hoor, nu is het onze schuld weer! :+
sorry moet zien zijn maar dat wist je waarschijnlijk al.

Heeft uw auto pijn? Ga dan naar de onderdelenlijn
Het bedrijf waar ik met veel plezier werk - Mijn eigen vertrouwde domein


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-09 18:58
Op zondag 17 maart 2002 12:01 schreef daniel_hoenderdos het volgende:
Ik zou het zo doen. (Untested)
PHP:
1
<?$ag=GetDirArray("./pics");  //? ./ ? waarom ./  en niet gewoon /pics??>
Omdat /pics/ naar de subdirectory pics/ van de filesystem root wijst...

./pics/ is in de current directory, net als pics/ overigens.
Pagina: 1