Archiv verlassen und diese Seite im Standarddesign anzeigen : Array, datein random
Hallo
Ich habe ein Problem unswar würde ich gerne einen Ordnerinhalt auslesen dann aus dem Ordner eine zufällige Datei includen lassen aber das ganze drei mal aus dem gleichen ordner und es soll sich keine Datei wiederholen(es sind php datein)
Mein Aktueller Code sieht so aus
<?php
include sprintf("stuff/kaesten/%02d.php",rand(1,5));
include sprintf("stuff/kaesten/%02d.php",rand(1,5));
include sprintf("stuff/kaesten/%02d.php",rand(1,5));
?>
So nun bin ich dabei das ganze mit arrays zu machen stecke aber wie gesagt fest.
<?php
$datei = array();
if($handle = @opendir('stuff/kaesten'))
{
while($datei = readdir($handle))
{
if($datei != '.' AND $datei != '..')
{
$dateien[] = $datei;
sort($dateien);
}
}
sort($dateien);
}
?>
Hoffe auf schnelle antwort
mfg Sebastian Gafinen
Willkommen im Forum. Mal schaun, ob ich das jetzt so auf Anhieb hinbekomm:
<?php
$datei = array();
if($handle = @opendir('stuff/kaesten'))
{
while($datei = readdir($handle))
{
if($datei != '.' AND $datei != '..')
{
$dateien[] = $datei;
}
}
for($i = 0; $i < 3; $i++)
{
$num = rand(0, count($dateien) - 1;
include 'stuff/kaesten/'.$dateien[$num];
array_splice($dateien, $num, 1);
}
}
?>
Nicht getestet, aber es sollte gehen.
danke ich habe es gestestet
leider klappt es nicht
das sit die Fehlermeldung
Parse error: parse error, unexpected ';' in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 14
eissceda
23.10.2007, 14:15
In Zeile 14 eine schließende Klammer vor den ;, danach sollte der Fehler behoben sein.
Danke nun gibts noch einen Fehler
Warning: main(kaesten/) [function.main]: failed to open stream: Permission denied in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 15
Warning: main() [function.include]: Failed opening 'kaesten/' for inclusion (include_path='.;C:\Programme\xampp\php\pear\') in C:\Programme\xampp\htdocs\xampp\websites\mayschoss\stuff\reba_test.php on line 15
EDIT://
und das problem das 2 gleiche auftauchen ist auch noch da
eissceda
23.10.2007, 14:34
Versuche es mal mit eckigen Klammern[] hinter dem $dateien in Zeile 16.
Wenn dir gesagt wird, das du ihm einen Array geben sollst dann musst du ihm auch einen Array geben.
Edit: Dabei, das zwei gleiche auftreten kann ich dir aktuell leider nicht helfen, da ich aktuell keinen Server zum testen zur Verfügung habe. Wenn du mir aber bis morgen Zeit gibst kann ich dir das so hinbiegen, das es Funktioniert.
danke das habe ich gerade geschafft zu lösen nun bleiben aber noch die 2 warnings und es müssen 3 unterschiedliche Kästen auftauchen hab mir auch schon überliegt wie das gehen könnte kann das aber nciht in php umsetzten
// EDIT:
Also alle Warnungen sind raus ;) nun muss nur noch das problem gelöst werden das nichts doppelt erscheinen darf
//Edit² :
ES KLAPPT *JUHHHHHHHU*
Danke für die hilfe , das Board gefällt mir ich glaub ich werde hier mal aktiv :)
p.s
ich lade die Seite nacher hoch das ihr sie euch angucken könnt wenn ihr wollt
Jesus_666
24.10.2007, 02:26
Nur so nebenbei; ich hätte es so gemacht: (Achtung, erfordert PHP 5!)
<?php
/** Holt N zufällige Dateien aus einm Verzeichnislisting
* Parameter:
* path - das zu durchsuchende Verzeichnis
* numFiles - die Anzahl der zu holenden Dateien
* Rückgabewert:
* Ein Array mit den Dateinamen oder
* FALSE, wenn zu wenige Dateien vorhanden sind
*/
function getRandomFiles($path, $numFiles)
{
$files = scandir($path);
if (count($files) < $numFiles)
return false;
shuffle($files);
for ($i = 0; $i < $numFiles; $i++)
{
$result[] = array_shift($files);
}
return $result;
}
// Ein Beispiel zum Testen
print_r(getRandomFiles('.', 3));
?>
Die Kombination shuffle() (http://de.php.net/manual/de/function.shuffle.php)/array_shift() (http://de.php.net/manual/de/function.array-shift.php) ist allgemein deutlich bequemer als die von DFYX gepostete for-Schleife und sie funktioniert auch mit PHP4. Der einzige PHP5-spezifische Kram bei mir ist scandir() (http://de.php.net/manual/de/function.scandir.php), welches aber auch durch den oberen Teil von DFYX' Code ersetzt werden kann.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.