Menu déroulant avec include

Petit nouveau ! | 5 Messages

01 oct. 2011, 21:13

Bonjour à tous,

Je me suis lancé depuis peu dans le php et j'ai créé la liste suivante qui me renvois la liste des fichiers (il n'y a que des .php) que j'ai dans un de mes dossiers et me permet de les afficher dans la page.

Dorénavant, je cherche à faire un include de ces fichiers dans ma page active et c'est là que je patauge depuis quelques jours sans trouver la solution sur ce forum pourtant très complet.

Help ?

Voici mon code :
 <select name="selection" onchange="document.location.href = this.options[this.selectedIndex].value;">
        <option selected="selected">Faites votre choix</option>
	<?php
    $dirname = './resultats/';
    $dir = opendir($dirname);
    while($file = readdir($dir)) {
    if($file != '.' && $file != '..' && !is_dir($dirname.$file))
    {
		$file_name = substr($file,0, -4);
	echo '<option value="'.$dirname.$file.'">'.$file_name.'</option><br />';
    }
    }
    closedir($dir);
    ?> 
</select>

ViPHP
xTG
ViPHP | 7331 Messages

01 oct. 2011, 21:18

Hum, pas sûr de comprendre la nature du problème.
include('monScript.php");
??

Petit nouveau ! | 5 Messages

01 oct. 2011, 21:45

Le code
<select name="selection" onchange="document.location.href = this.options[this.selectedIndex].value;">
me permet d'ouvrir le fichier php que je sélectionne dans mon menu déroulant dans ma feuille _parent.

J'aimerais plûtot faire un include avec une ligne ressemblant à

<select name="selection" onchange=include "this.options[this.selectedIndex].value;">

ViPHP
xTG
ViPHP | 7331 Messages

02 oct. 2011, 08:30

Ah oui ! Beh faut pas tout mélanger...
PHP s’exécute côté serveur, Javascript côté client !!!
Donc soit tu recharges la page et tu transmets la valeur du select pour inclure en PHP.
Soit tu utilises de l'Ajax pour récupérer le contenu du fichier et modifier le DOM pour l'inclure.

Petit nouveau ! | 5 Messages

03 oct. 2011, 23:11

Bon j'ai trouvé ma solution :
<div id="tmeplatemo_container">
<div id="tmeplatemo_content">
<p>Merci de sélectionner une étape :
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<p>
<select name="choix" id="choix">
<?php
$dirname = './resultats/';
$dir = opendir($dirname);
while($file = readdir($dir)) {
if($file != '.' && $file != '..' && !is_dir($dirname.$file)) {
$file_name = substr($file, 3);
$file_name = substr($file_name,0, -4);

echo '<option value="'.$dirname.$file.'">'.$file_name.'</option><br />';
}
}
closedir($dir);
?>
</select>
<input type="submit" value="OK" />
</p>
</form>
</p>
</div>
<p>
<?php
$choix = !empty($_POST['choix']) ? $_POST['choix'] : '';
if ($choix) {
include $choix;
}
?>

</p>
<p>&nbsp;</p>
</div> <!-- end of container -->
Mon (nouveau) problème serait donc d'afficher dans mon menu déroulant les fichiers classés en alphanumérique (ils commencent par 101/102/103...)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 oct. 2011, 00:18

salut,

essai glob + sort (ou une autre dans le style)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

04 oct. 2011, 00:36

Le problème c'est que je ne trouve pas où placer le tri dans mon code.

A chaque fois (au niveau du tri) tout marche nickel en localhost mais pas quand je l'héberge.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 oct. 2011, 00:52

quels exemple de tri ?

En gros il faut mettre tous les fichiers (qui sont intéressant) dans un tableau et utiliser sort (ou une autre fonction de tri de tableau).

Il est aussi possible d'utiliser SQLite pour des fonctions de tri plus avancées.

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

04 oct. 2011, 08:36

Mon menu echo m'envois la liste des fichiers du repertoire que j'ai désigné en enlevant les 4 derniers caractères (.php) et les 3 premiers correspondant à un chrono qui va de 100 à 199.

J'aimerais donc trier ce chrono en ordre croissant pour avoir :
100
101
102 ...

et non plus 107
105
104
101
106
103...

ViPHP
xTG
ViPHP | 7331 Messages

04 oct. 2011, 08:52