Page 1 sur 1

Récupérer Valeur Liste Déroulante

Posté : 19 mai 2013, 17:48
par Dutienne
Bonjour à tous.
Dans mon site, j'ai créé un formulaire dans lequel j'ai une liste déroulante alimenté par un fichier .txt
Catégorie : 
<select name="catr">
<option> Choisissez la catégorie </option>
<?php
	$ligne = 1; // compteur de ligne
	$fic = fopen("categorie.txt", "a+");
	while($tab=fgetcsv($fic,1024,','))
	{
		$champs = count($tab);//nombre de champ dans la ligne en question
		$ligne ++;
		//affichage de chaque champ de la ligne en question
		for($i=0; $i<1; $i++)
 			{ $tab = $tab[0] . " " . $tab[1];
			   ?> <option value="<?php echo $fic; ?>"><?php echo $tab;  ?></option>
			   <?php }
	}
?> 
</select>
J'obtiens bien ce que je veux comme choix dans ma liste déroulante, mais le soucis c'est que une fois que je choisis un élément de la liste et que j'appuie sur enregistrer (validation du formulaire), cela m'écrit Resource id #7 à l'emplacement prévu à cet effet dans mon fichier. Comment puis-je faire pour que l'élément sélectionné dans la liste déroulante s'écrive dans mon fichier.
Merci d'avance.

Re: Récupérer Valeur Liste Déroulante

Posté : 19 mai 2013, 18:42
par moogli
Salut,

Quel est le code de validation du formulaire ?

Sinon oui tu affiche la ressource du fichier (le résultat du fopen $fic) dans la valeur de l'option.
Il faut que tu utilise un $tab).


@+

Re: Récupérer Valeur Liste Déroulante

Posté : 19 mai 2013, 19:03
par Dutienne
Au début de mon formulaire : <form method="get" action="formulaire-inscription.php">

Entre deux, ma liste déroulante et d'autres champs.

A la fin de mon formulaire : <br/><input type="submit" value="Envoyer" name="Envoyer"/>

Pour écrire dans mon fichier :
// S'il n'y a pas d'erreur (car j'affiche des messages d'erreur)
if($valid==true)
{
$ligne = $_GET['nom'] . ',' . $_GET['catr'] . ',' . $_GET['prenom'] . ',' . $_GET['annee_naiss'] . ',' . $_GET['ville'];
// on ouvre le fichier inscrip en écriture avec ajout du contenu à la fin du fichier
$f=fopen("inscrip.txt","a");
fputs($f,$ligne);
fclose($f);
}

Comment puis-je faire pour que la valeur sélectionné dans ma liste déroulante s'écrive au lieu de Resource id #7 ?

Re: Récupérer Valeur Liste Déroulante

Posté : 19 mai 2013, 20:12
par ghost5922
Bonjour,

comme Moogli de la dit utilise $tab[0] ou $tab[1] ou pour le numero de ligne $i après faut qu'on sache se que tu veux comme valeur

Re: Récupérer Valeur Liste Déroulante

Posté : 21 mai 2013, 13:43
par Dutienne
Bonjour,

Par exemple si ma liste déroulante est :
Artisan
Professeur
Retraite
(etc)
Ces données viennent de mon fichier texte.

Si je sélectionne Professeur dans ma liste, je souhaite que ce soit Professeur qui s'écrive dans mon fichier inscrip.txt

Re: Récupérer Valeur Liste Déroulante

Posté : 21 mai 2013, 13:47
par ghost5922
Bonjour,

comme cela ?
Catégorie : 
<select name="catr">
<option> Choisissez la catégorie </option>
<?php
        $ligne = 1; // compteur de ligne
        $fic = fopen("categorie.txt", "a+");
        while($tab=fgetcsv($fic,1024,','))
        {
                $champs = count($tab);//nombre de champ dans la ligne en question
                $ligne ++;
                //affichage de chaque champ de la ligne en question
                for($i=0; $i<1; $i++)
                        { $tab = $tab[0] . " " . $tab[1];
                           ?> <option value="<?php echo $tab;  ?>"><?php echo $tab;  ?></option>
                           <?php }
        }
?> 
</select>

Re: Récupérer Valeur Liste Déroulante

Posté : 21 mai 2013, 16:37
par Dutienne
C'est tout à fait ça que je voulais ! Merci beaucoup !

Re: Récupérer Valeur Liste Déroulante

Posté : 22 mai 2013, 14:54
par Dutienne
Une petite question.
Dans mon formulaire, lorsqu'un champ obligatoire n'est pas rempli j'affiche une erreur tout en laissant afficher ce qu'il y a été écris dans les champs.
Cela fonctionne pour tout sauf ma liste déroulante. Pour afficher l'erreur, il n'y a pas de soucis. Mais je n'arrive pas à laisser le choix sélectionné.
<select name="catr">
<option> Choisissez la catégorie </option>
<?php
        $ligne = 1; // compteur de ligne
        $fic = fopen("categorie.txt", "a+");
        while($tab=fgetcsv($fic,1024,','))
        {
                $champs = count($tab);//nombre de champ dans la ligne en question
                $ligne ++;
                //affichage de chaque champ de la ligne en question
                for($i=0; $i<1; $i++)
                        { $tab = $tab[0] . " " . $tab[1];
                           ?> <option value="<?php echo $tab;  ?>"><?php echo $tab;  ?></option>
                           <?php }
        }
?>
</select>
<span class="error_message"><?php if(isset($erreurcat))echo $erreurcat?></span>
<br/>
Par exemple lors de l'inscription, si je choisis Artisan dans ma liste déroulante et qu'il y a des erreurs au niveau d'un ou des autre(s) champ(s). Je souhaiterais que ce soit Artisan qui soit affiché dans ma liste déroulante. Comment puis-je faire ?

Re: Récupérer Valeur Liste Déroulante

Posté : 22 mai 2013, 15:35
par ghost5922
Bonjour,


essaie cela
<select name="catr">
<option> Choisissez la catégorie </option>
<?php
        $ligne = 1; // compteur de ligne
        $fic = fopen("categorie.txt", "a+");
        while($tab=fgetcsv($fic,1024,','))
        {
                $champs = count($tab);//nombre de champ dans la ligne en question
                $ligne ++;
                //affichage de chaque champ de la ligne en question
                for($i=0; $i<1; $i++)
                        { $tab = $tab[0] . " " . $tab[1];
						if(isset($_POST['catr']) and $_POST['catr']==$tab){$sel='selected="selected"';}else{$sel='';}
                           ?> <option value="<?php echo $tab;  ?>" <?php echo $sel; ?>><?php echo $tab;  ?></option>
                           <?php }
        }
?>
</select>
<span class="error_message"><?php if(isset($erreurcat))echo $erreurcat?></span>
<br/>
 

Re: Récupérer Valeur Liste Déroulante

Posté : 22 mai 2013, 16:02
par Dutienne
J'ai remplacé les $_POST par des $_GET car mon formulaire est en get.
Et effectivement ça marche ! Merci beaucoup.
Comment puis-je faire pour qu'une fois que les données ont été envoyés dans mon fichier .txt que ça me redirige vers une autre page ?
J'avais pensé à un Header('Location : accueil.php');
Mais cela ne fonctionne pas. Peut-être que je ne le positionne pas au bon endroit ?!

Re: Récupérer Valeur Liste Déroulante

Posté : 23 mai 2013, 15:22
par Dutienne
J'ai trouvé mon erreur, il fallait tout simplement que je rajoute un exit après ma redirection.
Merci pour toutes vos aides !