erreur de script

Scam
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 15:18

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é

Eléphant du PHP | 493 Messages

14 sept. 2005, 16:06

merci de lire les reglements et de suivre la regle 3

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 16:21

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

Eléphant du PHP | 493 Messages

14 sept. 2005, 16:22

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.

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 16:29

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"); 
} 

Eléphant du PHP | 493 Messages

14 sept. 2005, 16:32

pour la premiere erreur :
$fichiers = array_rand
(
    $fichiers,
    rand( 1, count( $fichiers ) )
);
je pense que ceci va régler toutes les autres erreurs.

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 18:47

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

Invité
Invité n'ayant pas de compte PHPfrance

14 sept. 2005, 18:49

il me crée bien un fichier $fichier_cache = "truc.php"; mais il fait 0 octé, il n'eregistre rien dedans ?

Mammouth du PHP | 19672 Messages

14 sept. 2005, 22:08

Tu voudrais faire quoi au juste ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 08:52

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.

Mammouth du PHP | 19672 Messages

15 sept. 2005, 08:54

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 09:14

si je veux pouvoir afficher le contenus des fichiers

Mammouth du PHP | 19672 Messages

15 sept. 2005, 09:23

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...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

15 sept. 2005, 09:38

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)

Mammouth du PHP | 19672 Messages

15 sept. 2005, 09:44

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: