Problème avec l'affichage au hasard d'un fichier

tony4758 Messages postés 105 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 16 octobre 2005 - 13 sept. 2005 à 20:34
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 14 sept. 2005 à 16:04
Bonjour, j'ai encore un problème avec mon script (encore car j'ai posté un message y'a pas longtemps désolé ). En fait, je veu que mon script php inclut un fichier dans un repertoire choisit aléatoirement, sans que l'on lui fournisse les fichiers qu'il peut inclure, donc j'ai déja fait un listage simple de mon repertoire, le voici :

<?php
$handle=opendir("__8-016");
while ($file = readdir($handle))
{
if ($file != "." && $file != "..")
{


echo''.$file.'
';
}
}
closedir($handle);
?>

Mai ensuite, je n'ai aucune idée pour que le script choisisse un fichier dans la liste et facee par exemple ce code : <? include('$fichier'); ?>. Pouvez-vous m'aider SVP et excusez-moi de remettre ce post une 2ème fois mais c'est important. Merci d'avance.
>>>> Tony 4758 <<<<

15 réponses

J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
13 sept. 2005 à 20:43
Salut,



On t'avais pourtant donné toutes les clefs pour créer ton script... Domage pour toi, tu n'auras pas le plaisir de créer !



<?php

$handle=opendir("__8-016") or die("PAN!!! T'es mort...");

$arr = array();

while ($file = readdir($handle)) {

if (is_file($file)) $arr[] = $file;

}

closedir($handle);

include $arr[array_rand($arr)];

?>



Voilà, c'est du code à la volée... absolument pas tester!

Mis à part quelques bug possibles, ça n'a pas l'air trop dur, au final...



Non ?



A+
0
tony4758 Messages postés 105 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 16 octobre 2005
13 sept. 2005 à 20:51
Il y a un problème, sa m'affiche sa :

Notice: Undefined index: in c:\program files\easyphp1-8\www\sonarty_annonces\test.php on line 8

Warning: main(): Failed opening '' for inclusion (include_path= '.;C:/Program Files/EasyPHP1-8\php\pear\') in c:\program files\easyphp1-8\www\sonarty_annonces\test.php on line 8

merci de ton aide !!!

=>>>> Tony 4758 <<<<=
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 sept. 2005 à 20:57
Salut,



if (is_file($file) AND $file!=='.' AND $file!=='..') $arr[] = $file;
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
tony4758 Messages postés 105 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 16 octobre 2005
13 sept. 2005 à 20:59
J'ai mit sa :
<?php
$handle= opendir("__8-016") or die("PAN!!! T'es mort...");
$arr = array();
while ($file = readdir($handle)) {
if (is_file($file) AND $file!=='.' AND $file!=='..') $arr[] = $file;


}
closedir($handle);
include $arr[array_rand($arr)];
?>
et sa m'affiche encore une erreur :

Notice : Undefined index: in c:\program files\easyphp1-8\www\sonarty_annonces\test.php on line 9

Warning: main(): Failed opening '' for inclusion (include_path ='.;C:/Program Files/EasyPHP1-8\php\pear\') in c:\program files\easyphp1-8\www\sonarty_annonces\test.php on line 9

>>>> Tony 4758 <<<<
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
13 sept. 2005 à 21:03
Je viens de tester... Mon code marche très bien !!!!! (ça m'étonne d'ailleur, 6 lignes sans fautes !?!)



Ton problème c'est que tu listes le répertoire "__8-016"

Es-tu sûr qu'il existe ?

Je te propose cette séurité :

if count($arr) include $arr[array_rand($arr)];



A toi de joué
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
13 sept. 2005 à 21:05
Antho : ".." et "." sont des répertoires...



(is_dir("..") and is_file("..") === false) toujours vrai !
0
tony4758 Messages postés 105 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 16 octobre 2005
13 sept. 2005 à 21:11
J'ai éssayé cette fois-ci pas en local mais sur mon hébergeur et sa me met sa :
Warning: main(): Failed opening '' for inclusion (include_path= '.:/usr/local/php-4.4.0/lib/php') in /home/ibanni/web/www/test.php on line 9

Le code que j'ai mit est sa :
<?php
$handle =opendir("test") or die("PAN!!! T'es mort...");
$arr = array();
while ($file = readdir($handle)) {
if (is_file($file) AND $file!=='.' AND $file!=='..') $arr[] = $file;


}
closedir($handle);
include $arr[array_rand($arr)];
?>

>>>> Tony 4758 <<<<
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
13 sept. 2005 à 21:11
ton code peut foirer lorsque le répertoire parent contient des fichiers, il faut mettre



if(is_file('dossier/'.$file)

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
tony4758 Messages postés 105 Date d'inscription mercredi 10 novembre 2004 Statut Membre Dernière intervention 16 octobre 2005
13 sept. 2005 à 21:16
je le met ou exactement, je ne comprend pas trop l'erreur, je ne suis que débutant. Merci beaucoup de votre aide !

>>>> Tony 4758 <<<<
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
13 sept. 2005 à 21:47
Salut,



Je me suis mal exprimé tout à l'heure... désol'



essaye ça :

<?php

$dir = "__8-016";

$handle=opendir($dir) or die("PAN!!! T'es mort...");
$arr = array();
while ($file = readdir($handle)) {
if (is_file($file)) $arr[] = $file;
}
closedir($handle);

if( count($arr) ) {

$file = $arr[array_rand($arr)];

echo "Je vais inclure au hazard le fichier '$file'\n";
include $file;

} else {

echo "Le répertoire '$dir' est vide !!! Aucun fichier à inclure..\n";

}
?>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
14 sept. 2005 à 12:18
"include $file;"



Ouh que c'est zouli :D
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 sept. 2005 à 13:43
"include $file;"
Ouh que c'est zouli :D



FhX = > Tu as raison... cette commande est à
prendre avec des pincettes !!! Surtout qu'elle est posée en plein dans
une condition if.

Aïe Aïe Aïe



tony4758 => Avant de me dire que ça ne marche pas. Lit attentivement cet extrait de
PHP: Hypertext Preprocessor

<hr size="2" width="100%">
Exemple 16-36. include() et les conditions


<?php

// Ceci est FAUX et &#233;chouera

if ($condition)

include $file;

else

include $other;

// Ceci est CORRECT.

if ($condition) {

include $file;

} else {

include $other;

}

?>






Gestion du retour : il est possible d'exécuter une commande
return() dans un fichier inclus pour en
terminer le traitement et retourner au fichier appelant. De plus,
il est possible de retourner des valeurs des fichiers inclus.
Vous pouvez prendre et traiter la valeur retournée par la
fonction, comme toute autre fonction. Ce n'est cependant pas possible
lors de l'inclusion de fichier distant à moins que le fichier distant
a des balises valides de
début et de fin de script PHP
(comme avec les fichiers locaux).
Vous pouvez déclarer les variables nécessaire dans ces tags et elles seront
introduites à l'endroit où le fichier a été inclus.




Comme include() est une structure de langage particulière,
les parenthèses ne sont pas nécessaires autour de l'argument. Faîtes attention
lorsque vous comparez la valeur retournée.



<hr size ="2" width="100%">

Voili, Gros bisou à vous

(Merci Fhx pour ta remarque)
0
J_G Messages postés 1406 Date d'inscription mercredi 17 août 2005 Statut Membre Dernière intervention 28 août 2007 10
14 sept. 2005 à 13:56
Rien à déclarer M'sieur l'agent :



<?php
$dir = "__8-016";

$handle=opendir($dir) or die("PAN!!! T'es mort...");
$arr = array();
while ($file = readdir($handle)) {
if (is_file($file)) $arr[] = $file;
}
closedir($handle);
if( count($arr) ) {
$file = $arr[array_rand($arr)];

echo "Je vais inclure au hazard le fichier '$file'\n";
} else {
$file = "";

echo "Le répertoire '$dir' est vide !!! Aucun fichier à inclure..\n";
}

include $file;
?>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
14 sept. 2005 à 14:00
Ah non, moi qui croyait que les parenthèses étaient de rigueur... bouh jviens d'apprendre quelque chose :o
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
14 sept. 2005 à 16:04
<?php
$dir ='__8-016';

$handle=opendir($dir) or die('PAN!!! T\'es mort...');
$arr = array();
while ($file = readdir($handle)) {
if (is_file($file)) $arr[] = $file;
}
closedir($handle);


if( count($arr) )

{

include $dir.'/'.$arr[array_rand($arr)];

}

else

{
echo 'Le répertoire ',$dir,' est vide !!! Aucun fichier à inclure.';
}
?>


je pense que ça devrait marcher
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li>
0
Rejoignez-nous