Page 1 sur 2

erreur de script

Posté : 14 sept. 2005, 15:18
par Scam
Salut, j'ai un petit soucis avce un script, et je n'arrive pas a touver l'erreur
$nb_rand = mt_rand(0, 10); //nombre aléatoire entre 0 et 10 
$fichiers = array(); 
//FIXER $dir 
//Lister les fichiers du répertoire $dir 
if ($dh = opendir($dir)) { 
while (($file = readdir($dh)) !== false) { 
if (filetype($dir . $file) === 'file') { 
$fichiers[] = $dir . $file; 
} 
} 
closedir($dh); 
} else { 
die("Impossible d'ouvrir le dossier"); 
} 
$fichiers = array_rand($fichiers, $nb_rand); //garder au hazard $nb_rand fichiers du tableau 
$fichier_cache = "truc.php"; 
$f = fopen($fichier_cache,"w"); 
if ($f) { 
//Lire et concaténer le contenu des fichiers retenus 
foreach($fichiers as $key=>$file) { 
fwrite($f, file_get_contents($file) ); 
} 
fclose($f); 
} else { 
die("Impossible d'ouvrir le fichier de cache"); 
} 
voici quelques messages d'erreur
Warning: array_rand(): Second argument has to be between 1 and the number of elements in the array in /index.php on line 22

Warning: Invalid argument supplied for foreach() in /index.php on line 27
ou encore (apres rafraichissement)
Warning: file_get_contents(2): failed to open stream: No such file or directory in /index.php on line 28

Warning: file_get_contents(6): failed to open stream: No such file or directory in /index.php on line 28

Warning: file_get_contents(8): failed to open stream: No such file or directory in /index.php on line 28
il me crée bien un fichier $fichier_cache = "truc.php"; mais il fait 0 octé

Posté : 14 sept. 2005, 16:06
par Vaedan
merci de lire les reglements et de suivre la regle 3

Posté : 14 sept. 2005, 16:21
par Invité
ce script me sert a scanner un dossier afin de realiser un tableau qui liste les fichiers contenus dans ce dossier dans un ordre aléatoire

puis de les afficher

Posté : 14 sept. 2005, 16:22
par Vaedan
je voulais dire par là d'utiliser les balises
 afin d'avoir une lecture plus visible... visiblement tu n'as meme pas pris la peine de lire l'article signalier apres ma reflexion.

Posté : 14 sept. 2005, 16:29
par Invité
si j'ai bien lu le reglement je pensé que tu parlé de la deusièeme partie de l'article 3

que mon explication été trop courte

$nb_rand = mt_rand(0, 10); //nombre aléatoire entre 0 et 10 
$fichiers = array(); 
//FIXER $dir 
//Lister les fichiers du répertoire $dir 
if ($dh = opendir($dir)) { 
while (($file = readdir($dh)) !== false) { 
if (filetype($dir . $file) === 'file') { 
$fichiers[] = $dir . $file; 
} 
} 
closedir($dh); 
} else { 
die("Impossible d'ouvrir le dossier"); 
} 
$fichiers = array_rand($fichiers, $nb_rand); //garder au hazard $nb_rand fichiers du tableau 
$fichier_cache = "truc.php"; 
$f = fopen($fichier_cache,"w"); 
if ($f) { 
//Lire et concaténer le contenu des fichiers retenus 
foreach($fichiers as $key=>$file) { 
fwrite($f, file_get_contents($file) ); 
} 
fclose($f); 
} else { 
die("Impossible d'ouvrir le fichier de cache"); 
} 

Posté : 14 sept. 2005, 16:32
par Vaedan
pour la premiere erreur :
$fichiers = array_rand
(
    $fichiers,
    rand( 1, count( $fichiers ) )
);
je pense que ceci va régler toutes les autres erreurs.

Posté : 14 sept. 2005, 18:47
par Invité
Merci premiere erreur résolut

ok maintenant j'ai plus que
Warning: Invalid argument supplied for foreach() in /index.php on line 32
comme erreur

ou
Warning: file_get_contents(1): failed to open stream: No such file or directory in /index.php on line 33
selon les moments

Posté : 14 sept. 2005, 18:49
par Invité
il me crée bien un fichier $fichier_cache = "truc.php"; mais il fait 0 octé, il n'eregistre rien dedans ?

Posté : 14 sept. 2005, 22:08
par Cyrano
Tu voudrais faire quoi au juste ?

Posté : 15 sept. 2005, 08:52
par Invité
je souhaite

scanner un dossier (rep)
puis inclure dans un tableau (array) les fichiers dans un ordre aléatoire
puis inclure les X premiers dans la liste

-> sauvef=garder cet ordre dans un fichier truc.php afin que cet ordre soit le meme au prochains affichages.

Posté : 15 sept. 2005, 08:54
par Cyrano
Je voudrais être sûr d'avoir saisi: tu veux donc la liste des noms des fichiers, pas le contenu des fichiers, c'est ça ?

Posté : 15 sept. 2005, 09:14
par Invité
si je veux pouvoir afficher le contenus des fichiers

Posté : 15 sept. 2005, 09:23
par Cyrano
De la manière dont tu le formules, c'est donc facultatif. je repose donc la question : explique quel genre d'application tu veux faire ? Un genre d'explorateur ?

Ce serait bien que tu réalises qu'on a pour comprendre que ce que tu dis, donc moins tu en dis, moins on comprend et par voie de conséquence moins on peut t'aider...

Posté : 15 sept. 2005, 09:38
par Invité
je souhaite mettre dans un dossier par exemple includes" des fichiers qui conteinnet du code HTML (mise en page texte + photo) que l'on peut appeller BLOC

Puis d'une page index.php je souhaite inclure par exemple 4 BLOC au hazard

Cela me crée ainsi des pages aléatoire, mais pour garder une lisibilité sur plusieurs jours je souhaite sauvegarder l'ordre des BLOC poir que sur une periode donné toute le monde puisse lire la meme page (donc pas générée au hazard a chaque connection)

donc on defibit
§nbjours = nombre de jours minimum pendant les quel la page est identique

§nbincludes = nombre de bloc a inclure (par exemple 4 fichiers au hazard dans le dossier)

Posté : 15 sept. 2005, 09:44
par Cyrano
Le premier problème que je vois, c'Est que mt_rand peut aussi bien sortir en nombre 0 fichiers, ce qui signifierait que pendant la période en question, tu n'aurais aucun bloc d'affiché.

Second problème: pourquoi stocker les fichiers en question dans un autre fichier au lieu de ne conserver que des identifiants qu'il te suffirait d'extraire de ton fichier_cache pour procéder à l'inclusion directe des fichiers html ?

Saisis-tu ce que je veux dire ?