Un menu déroulant qui liste les fichiers du répertoire coura

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Un menu déroulant qui liste les fichiers du répertoire coura

par iclo » 22 janv. 2006, 15:50

fonctionne pas, sauriez vous m'aider a l'adatper ?
Cela veut dire quoi "adapter"? Ce code vient d'où ?

par Truc » 22 janv. 2006, 15:06

toujours la même métode:

que donne le code source généré ? les liens sont-ils corrects ?

un message d'erreur ?

par phpdog » 22 janv. 2006, 09:24

J'ai un deuxième menu donc qui fonctionne un petit peut diférament:
<form NAME="menu1"style="margin: 0;">  
<select NAME="popup" onChange="change_site();" style="background-color:#313131; color:#8000FF; width: 200px" size="1"> 
<option>Mes outils php</option>
<?php 
$directories = glob("*",GLOB_ONLYDIR);  // On cible le répertoire des fichiers à lister
foreach ($directories as $dir) { // On créer un boucle
if ($dir != 'Desktop.ini' && $dir !='img') {  // On maques les fichiers
echo '<option value='.$dir.'/index.php>'.basename($dir).'</option>'; // Ici le [ basename ] indique de ne pas afficher le chemin des fichiers
} 
}   
?> 
</select></form><br>
Ici le dir liste les répertoires, dans chaque répertoire se trouve un fichier index.php, dans le lien j'ai donc ajouter index.php:
echo '<option value='.$dir.'/index.php>'.basename($dir).'</option>';
Se code ne fonctionne pas, sauriez vous m'aider a l'adatper ?

par phpdog » 22 janv. 2006, 07:01

OK merci encore :wink:

Quand on selectionne un lien le menu reste sur le lien selectionner, avec Dreawever on peut modifier ceci:
onChange="change_site();"
Comme cela:
onChange="MM_jumpMenu('parent',this,1)"
Mais si je fait sa les liens ne fonctionnent plus.

par Truc » 22 janv. 2006, 02:55

Oui les sextension sont reconu .php.
donc tu peux essayer de faire ceci pour supprimer les extensions:
echo '<option value='.$dir.'>'.basename($dir,".php").'</option>'; 
Donc ceci n'est pas un formulaire mais un champ select ou encore liste, il faut utiliser les mots appropriés sinon on ne peut pas comprendre :?

On peut limiter la taille mais celle ci sera toujours égale au contenu le plus long. Tu peux donc limiter la taille avec du css:
<select style="width: 20px" >
20 étant un exemple :wink:

Sinon tu seras obligé de tronquer le contenu avec substr()

par phpdog » 22 janv. 2006, 02:35

Oui les sextension sont reconu .php.

Non les liens fonctionnent maitenant.

Quand je perle de la taille du forulaire je veut dire la longuereur de ceci:
Image

par Truc » 22 janv. 2006, 02:25

question... est ce que les fichiers récupérés par la boucle ont une extension connue ? et toujours la même ?

Si oui il existe un paramètre optionel de la fonction basename qui permet de supprimer l'extension du fichier.

Explique un peu plus ce petit détail "les liens ne fonctionnenet plus"...comme ça je ne vois pas.

La liste est-elle bien remplie ?
que donne le code source (HTML) ? !!

EDIT:
Peut on définir la taille du formulaire ?
C'est à dire ?

par phpdog » 22 janv. 2006, 02:23

Peut on définir la taille du formulaire ?

par phpdog » 22 janv. 2006, 02:21

Maitenant sa marche, merci encore :wink:

par phpdog » 22 janv. 2006, 02:17

Ok merci encore :wink:

Donc j'en suis la:
<form NAME="menu1"style="margin: 0;">  
<select NAME="popup" onChange="change_site();" style="background-color:#313131; color:#8000FF" size="1"> 
<option>Mes outils php</option>
<?php 
// Ici on masque les extenssions des fichiers:
function filename1( $filename1 ) { 
    if (($res = strrpos($filename1, '.')) !== FALSE) { 
        return substr($filename1, 0, $res); 
    } else { 
        return $filename1; 
    }  
}
$directories = glob("articles/*.*");  // On cible le répertoire des fichiers à lister
foreach ($directories as $dir) { 
if ($dir != 'Objets' && $dir !='img') {  // On maques les fichiers
echo '<option value='.$dir.'>'.basename(filename1($dir)).'</option>'; 
} 
}   
?> 
</select></form><br>
basename fonctionne parfaitement mais les liens ne fonctionnenet plus.

par Truc » 22 janv. 2006, 02:09

un peu comme ça plustôt:
<?php
$directories = glob("articles/*.*");  // On cible le répertoire des fichiers à lister
foreach ($directories as $dir) 
{
   if ($dir != 'Objets' && $dir !='img') 
   {  // On maques les fichiers
      echo '<option value='.$dir.'>'.basename ($dir).'</option>';
   }
}   
?> 
basename() remplace les fonctions maison pour la suppresion du chemin d'accès.

par phpdog » 22 janv. 2006, 02:05

Vous voulez dir eun peut comme sa:
<form NAME="menu1"style="margin: 0;">  
<select NAME="popup" onChange="change_site();" style="background-color:#313131; color:#8000FF" size="1"> 
<option>Mes outils php</option>
<?php 
$directories = glob("articles/*.*");  // On cible le répertoire des fichiers à lister
$masqureptr1 = basename ($dir);
foreach ($directories as $dir) { 
if ($dir != 'Objets' && $dir !='img') {  // On maques les fichiers
echo '<option value='.$dir.'>'.masqureptr1(filename1($dir)).'</option>'; 
} 
}   
?> 
</select></form><br>
:?:

par Truc » 22 janv. 2006, 02:02

tu l'as déjà la boucle:
foreach ($directories as $dir)
et il faut passer $dir à la fonction basename()

par phpdog » 22 janv. 2006, 01:39

Pour $masqureptr1 = basename ($path); je ne sai spas comment faire une boucle, ben justement ne sais pas quoi mettre a la place de $path

Laisson tomber le includ()

par Truc » 22 janv. 2006, 01:32

Si s'est sa value='.$dir.' le lien.
Le code liste tout les fichiers du répertoire ciblé, puis génére dynamiquement les liens vers ses fichiers.
pourquoi pas, si tu me dis que c'est un ovni moi je veux bien à condition que tu me montres :langue:

et cet include qui fait tout planter c'est celui là ?
include ("menu.php");
détaille un peu plus l'effet apreès l'inclusion, regarde le code source généré :arrow: HTML pour voir ces "liens"

Pour basename:
$masqureptr1 = basename ($path);
$path correspond à quoi ?

tu veux supprimer le chemin sur tous les liens donc il faut faire une boucle dessus et quelle est la chaine de caratères qui correspond au lien dont tu veux supprimer le chemin ? ===> $dir