Acceder à une liste dans un formulaire

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 18:34

Maintenant que j'arrive à executer mon code php, meme si c'est aléatoire (pour ceux qui ont suivi mon sujet précédent), j'essaie d'accéder à une liste sur mon formulaire.

J'arrive a acceder a un champ classique de mon formulaire par $HTTP_POST_VARS.
Par contre, pour ma liste, je n'y arrive pas :
$HTTP_POST_VARS["Liste.length"], aussi bien que $HTTP_POST_VARS["Liste"] ne me donnent rien.

Comment peut-on récuperer les donner d'une liste ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 18:55

Salut, deja laisse tomber $HTTP_POST_VARS. trop vieu utilise plustot $_POST

et montre le bout de code de récupération et du formulaire pour qu'on puisse te guider :wink:
si ta liste (<select>) s'appel "liste" tu la récupère en faissant $_POST['liste']

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 18:59

<SELECT id="Liste" onchange="return Liste_onChange()" size="27" name="Liste">
<OPTION></OPTION>
</SELECT>


$message = $HTTP_POST_VARS["Liste"];
mail($TO, $subject, $message, $h);

Comment s'utilise $POST ?

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 19:01

j'ai édité mon message précédent, en gros:
$var=$_POST['liste'];
Mais apres faut savoir si c'est une liste a choix multiple ou unique. Mais essai deja comme ça

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 19:05

J'ai essayé comme ca, mais ca ne donne rien: $message = $_POST['liste'];
C'est une liste à choix unique.
Ce que je veux, c'est récupérer toutes les valeurs de la liste avec leurs noms respectifs, pas spécialement le choix sélectionné.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 19:18

J'ai essayé comme ca, mais ca ne donne rien: $message = $_POST['liste'];
ton attribut name est "Liste" avec une majuscule !!
donc:
$message = $_POST['Liste'];
Ce que je veux, c'est récupérer toutes les valeurs de la liste avec leurs noms respectifs, pas spécialement le choix sélectionné.
Ben .. euh .. la faut m'expliquer a quoi la liste te sert alors :-k

Que veut tu faire ?
La liste tu la remlis comment ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 19:25

J'ai modifié comme ca : $message = $_POST['Liste'];
Ca ne donne rien de plus.

La liste, je la remplis dans la page précédente à l'aide de 2 fonctions : Une qui met un element de la liste dans des champs pour modification, et une autre qui ajoute ou met à jour, selon que j'ai sélectionné la première ligne, qui est vide, ou une autre ligne.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 19:39

Hmm... si tu mettais le code ici je pourai voir ce qui ne va pas (tout le code si possible, <form> à </form> et traitement (récupèration, avec le mail) :D

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 19:46

<FORM name="Form1" action="maj_categ.php" method="post" ID="Form1">
			<SELECT id="Liste" onchange="return Liste_onChange()" size="27" name="Liste">
				<OPTION></OPTION>
			</SELECT>
			<INPUT id="Sauvegarder" type="submit" value="Sauvegarder" name="Sauvegarder"> <INPUT id="Valider" onclick="return Valider_onclick()" type="button" value="Valider" name="Valider">
			"Image :" <INPUT id="I_Image" type="text" size="65" name="I_Image"> "Nom :" <INPUT id="I_Nom" type="text" size="35" name="I_Nom">
		</FORM>
<html>
	<head>
		<title>Maj_categ</title>
	</head>
	<body>
		<a href="page3.htm">Retour</a>
		<center>
			Bonjour nous sommes le : <?php $date = date("d-m-Y"); echo "$date"; echo "xxx"; ?>
		</center>
		<?
		$TO = "[email protected]";
		$h  = "From: [email protected]";
		$subject = "test";
		$message = $_POST['Liste'];
		mail($TO, $subject, $message, $h);
		?>
	</body>
</html>

Voila, tu as tout (sauf mon adresse email, pour eviter le spam)
As-tu besoin aussi des fonctions Javascript avec lesquelles je remplis la liste ?
Modifié en dernier par céka le 23 oct. 2005, 21:25, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 19:53

normal que tu n'a rien dans la variable POST, la liste est vide la
:wink:
<OPTION></OPTION>
elle feit quoi cette fameuse fonction qui se cache :lol:
return Liste_onChange() ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 19:58

Non, je la remplis avant le Submit :wink:

C'est avec Valider_onclick que je la remplis.
Liste_onChange permet seulement d'afficher les valeurs a modifier dans les champs Nom et Image.

(function Valider_onclick() {

	var Nom;
	var Valeur;
	var Ligne;
	var Blanc;
	var Code;
	var Tout;
	var i;
	
	Ligne = Form1.Liste.options.selectedIndex;
	Nom = Form1.I_Nom.value;
//	alert(Nom);

	if (Ligne>0) {
		Valeur = Form1.Liste.options[Ligne].value;
		Blanc = Valeur.indexOf(" ",0);
		Code = Nom.substring(0,Blanc);
		Valeur = Code + " " + Form1.I_Image.value;
		Form1.Liste.options[Ligne].text = Nom;
		Form1.Liste.options[Ligne].value = Valeur;
	} else {
		Valeur = 0 + " " + Form1.I_Image.value;
		var o=new Option(Nom,Valeur);
		Form1.Liste.options[Form1.Liste.options.length]=o;
	}
	Tout = "";
	Ligne = Form1.Liste.length;
	alert(Ligne);
    for (i=1;i<=Ligne;i=i+1) {
		Nom = Form1.Liste.options[i].text;
		Valeur = Form1.Liste.options[i].value;
    	Tout=Tout + "|" + Nom + "|" + Valeur;
	    alert(Tout);
    }
    alert("passé");
    Form1.Donnees.value = Tout
}


function Liste_onChange() {
	var Nom;
	var Valeur;
	var Ligne;
	var Blanc;

//	Ligne = Form1.Liste.length;
//	alert(Ligne);
	
	Ligne = Form1.Liste.options.selectedIndex;

	if (Ligne>0) {
		Nom = Form1.Liste.options[Ligne].text;
		Valeur = Form1.Liste.options[Ligne].value;
		Blanc = Valeur.indexOf(" ",0);
		Form1.I_Nom.value = Nom;
		Form1.I_Image.value = Valeur.substring(Blanc+1,Valeur.length);
	} else {
		Form1.I_Nom.value = "";
		Form1.I_Image.value = "";
	}

}
Modifié en dernier par céka le 23 oct. 2005, 21:23, modifié 4 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 20:06

bon avant de continuer ... edite ton message stp et met les balise
 le bouton marqué PHP dessus juste au dessus de la zone de saisie.

donc tu dis que ta liste est remplie ? si tu affche le code source (HTML) elle est remplie ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Mammouth du PHP | 19672 Messages

23 oct. 2005, 20:14

ceka, lis donc la première ligne de l'article 3 des règles du forum...!
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 32 Messages

23 oct. 2005, 20:25

bon avant de continuer ... edite ton message stp et met les balise
 le bouton marqué PHP dessus juste au dessus de la zone de saisie.

donc tu dis que ta liste est remplie ? si tu affche le code source (HTML) elle est remplie ?[/quote]

Euh, j'ai rien compris  :( 
Les fonctions que je viens de t'envoyer sont écrites en javascript, pas en php


Voici par exemple le code source html au moment du submit :
		<FORM id="Form1" name="Form1" action="maj_categ.php" method="post">
			<SELECT id="Liste" onchange="return Liste_onChange()" size="27" name="Liste">
				<OPTION selected></OPTION>
				<OPTION value="0 A1">B1</OPTION>
				<OPTION value="0 A2">B2</OPTION>
			</SELECT>
			<INPUT id="Sauvegarder" type="submit" value="Sauvegarder" name="Sauvegarder"> <INPUT id="Valider" onclick="return Valider_onclick()" type="button" value="Valider" name="Valider">
			"Image :" <INPUT id="I_Image" size="65" name="I_Image"> "Nom :" <INPUT id="I_Nom" size="35" name="I_Nom">
		</FORM>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

23 oct. 2005, 20:55

Mais non fallais pas tout retirer :D (On est pas si méchant que ça :wink: )
mais meme si c'est pas du PHP que tu poste la lecture devient plus agréable avec une coloration => code = bouton PHP .

tu peut donc le remettre

Sinon il n'est pas possible de récupèrer une liste sans que celle-ci ait un élément de séléctionné (fait un essai, séléctionne un élément tu valide et la tu récupère avec $_POST['Liste'].

Donc il y a 2 possibilités :
1. au lieu de remplir une liste remplir un champ texte (textarea).
2. me dire a quoi cela va te servir de remplir une liste par javascript sans paramètre ? j'ai pas eu le temps de voir ce qui variable dans le script :?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute