Page 1 sur 2
Acceder à une liste dans un formulaire
Posté : 23 oct. 2005, 18:34
par céka
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 ?
Posté : 23 oct. 2005, 18:55
par Truc
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

si ta liste (<select>) s'appel "liste" tu la récupère en faissant $_POST['liste']
Posté : 23 oct. 2005, 18:59
par céka
<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 ?
Posté : 23 oct. 2005, 19:01
par Truc
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
Posté : 23 oct. 2005, 19:05
par céka
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é.
Posté : 23 oct. 2005, 19:18
par Truc
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
Que veut tu faire ?
La liste tu la remlis comment ?
Posté : 23 oct. 2005, 19:25
par céka
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.
Posté : 23 oct. 2005, 19:39
par Truc
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)

Posté : 23 oct. 2005, 19:46
par céka
<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 ?
Posté : 23 oct. 2005, 19:53
par Truc
normal que tu n'a rien dans la variable POST, la liste est vide la
<OPTION></OPTION>
elle feit quoi cette fameuse fonction qui se cache
return Liste_onChange() ?
Posté : 23 oct. 2005, 19:58
par céka
Non, je la remplis avant le Submit
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 = "";
}
}
Posté : 23 oct. 2005, 20:06
par Truc
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 ?
Posté : 23 oct. 2005, 20:14
par Cyrano
ceka, lis donc la première ligne de l'article 3 des règles du forum...!
Posté : 23 oct. 2005, 20:25
par céka
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>
Posté : 23 oct. 2005, 20:55
par Truc
Mais non fallais pas tout retirer

(On est pas si méchant que ça

)
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
