Liste déroulante en PHP

Fermé
Graindesable Messages postés 3 Date d'inscription samedi 28 février 2009 Statut Membre Dernière intervention 1 mars 2009 - 28 févr. 2009 à 23:37
Graindesable Messages postés 3 Date d'inscription samedi 28 février 2009 Statut Membre Dernière intervention 1 mars 2009 - 1 mars 2009 à 17:04
Bonsoir,
Je suis l'administratrice d'un forum de collectionneurs de sable, et je mets à disposition les listes d'échanges des membres qui le souhaitent.
Pour cela, je développe une page qui affiche une liste déroulante, générée en PHP avec la fonction readdir, et qui permet de consulter des fichiers .xls, stockés dans un même dossier "files".

Ensuite j'alimente la liste déroulante. A chacune des valeurs de liste obtenue, j'associe un pseudo.
1er problème : les pseudos sont listés plusieurs fois ....
2ème problème : Pour ouvrir le fichier choisi, j'utilise la méthode POST et un fichier de traitement en PHP, aucun fichier ne s'ouvre à la sélection d'un pseudo.

La page PHP qui génère la liste, la page PHP de traitement "ouvrir.php" et le dossier "files" contenant tous les fichiers xls, sont dans un même dossier.

le code de la page où la liste est créée :

<FORM action="ouvrir.php" method=post>

<?php

echo "<select name ='liste' onchange=\"this.form.submit()\">
<option value = ''> --- Choisir une Liste à consulter --- </option>";
$dir = opendir(files);

while($fic = readdir($dir))
{
if($fic != ".." && $fic != ".")
{
echo "<OPTION value = '$fic[0]'>Amely</option>";
echo "<OPTION value = '$fic[1]'>Béthyle</option>";
echo "<OPTION value = '$fic[2]'>BlueDevil</option>";
echo "<OPTION value = '$fic[3]'>Bougeotte</option>";
echo "<OPTION value = '$fic[4]'>Bulma</option>";
echo "<OPTION value = '$fic[5]'>Catia</option>";
echo "<OPTION value = '$fic[6]'>Don Gigi</option>";
echo "<OPTION value = '$fic[7]'>Freddy</option>";
echo "<OPTION value = '$fic[8]'>Gilbert</option>";
echo "<OPTION value = '$fic[9]'>Houbi</option>";
echo "<OPTION value = '$fic[10]'>Jack</option>";
echo "<OPTION value = '$fic[11]'>Jonani</option>";
echo "<OPTION value = '$fic[12]'>Keywawa</option>";
echo "<OPTION value = '$fic[13]'>MoniqueH</option>";
echo "<OPTION value = '01'>Myrtille</option>";
echo "<OPTION value = '$fic[14]'>Patrick</option>";
echo "<OPTION value = '02'>Pouicpouic</option>";
echo "<OPTION value = '$fic[15]'>Pujapati</option>";
echo "<OPTION value = '$fic[16]'>Sap</option>";
echo "<OPTION value = '$fic[17]'>Toureloure</option>";
echo "<OPTION value = '03'>Vanille</option>";
}
}

echo "</select>";

closedir($dir);
?>

le code du fichier de traitement "ouvrir.php" développé au petit bonheur la chance :

<?php

// le contenu de $_POST est stocké dans une variable
$ouvrir = $_POST["liste"];

if ($ouvrir = '01'){
header ('Location: http://www-------01.xls');}

if ($ouvrir = '02'){
header ('Location: http://www ------02.xls');}

if ($ouvrir = '03'){
header ('Location: http://www.-----------03.xls');}


$f=fopen("$ouvrir","r");

fclose("$ouvrir");

?>
Il faut savoir que dans la liste déroulante, 3 pseudos n'ont pas de fichier .xls associé mais des adresses URL, car les fichiers sont sur des serveurs Web.

Vous pouvez voir ce que ça donne ici : http://www.couleurvanille.com/listes2/index.php

Je remercie tous ceux qui voudront bien m'aider à trouver des solutions, pour afficher une liste qui ne contient les pseudos qu'une seule fois et pour ouvrir le fichier associé au pseudo choisi dans la liste.
Très bonne soirée.
A voir également:

4 réponses

bissdebrazza Messages postés 2065 Date d'inscription vendredi 29 juin 2007 Statut Contributeur Dernière intervention 7 décembre 2017 712
28 févr. 2009 à 23:52
Salut!
Pour les noms qui se répètent, je te conseille d'utiliser DISTINCT :
L'option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons

donc tu auras select distinct from......

Pour ton deuxième problème,es tu sûr que les variables sont postées?fait un print_r($_POST) au debut de ton script ouvrir.php pour voir s'il y a quelque chose de posté!
0
Torkass Messages postés 166 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 21 janvier 2016 95
28 févr. 2009 à 23:55
Y'a pas moyen d'enregistrer simplement dans la base de données les pseudos des gens dans un champs, leurs fichiers dans un autre et s'il s'agit d'un fichier sur le serveur ou d'un fichier distant ?
Ensuite, avec un if, changer l'adresse de destination pour aller chercher le fichier dans l'un ou dans l'autre des deux cas via un controle lors de la réception de $_POST.
0
Graindesable Messages postés 3 Date d'inscription samedi 28 février 2009 Statut Membre Dernière intervention 1 mars 2009
1 mars 2009 à 15:23
Merci pour vos réponses
Mais il ne s'agit pas d'une base de données.
Donc pas de select from
regardez le code, je liste le contenu d'un dossier qui se trouve être sur le serveur au même endroit que le code.
j'ai créé un dossier "liste" dans lequel se trouve les deux fichiers PHP et un dossier files qui contient tous les fichiers xls.
Pas de base de données associée à cette requête.
Merci encore pour votre aide
0
Graindesable Messages postés 3 Date d'inscription samedi 28 février 2009 Statut Membre Dernière intervention 1 mars 2009
1 mars 2009 à 17:04
Je viens de tester le print_r($_POST)
il y a une erreur sur la ligne 10, c'est à dire :
if ($ouvrir = '01'){
Si je retire les lignes comprises dans le if, l'erreur se trouve sur le fopen ...

ce qui veut dire que le code du fichier de traitement est totalement faux .....

Quel est le code qui permet d'ouvrir un fichier xls (ou autre j'imagine) sélectionné dans une liste déroulante ?
Merciiiiiiiiiii
0