Besoin d'aide pour traiter un formulaire.

Fermé
hoturi Messages postés 4 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 6 août 2012 - Modifié par hoturi le 5/08/2012 à 15:47
hoturi Messages postés 4 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 6 août 2012 - 6 août 2012 à 00:05
Bonjour,

Désolé de poser une question 100 fois mise en ligne mais malgré des heurs de recherche sur plusieurs forum je n'arrive pas a résoudre mon petit problème. Je précise avant d'avoir des réponses moqueuses je n'ai aucune base de programmation je fais que de la bidouille.

Voila ce que je cherche a faire, en fait j'ai créé un formulaire javascript avec 2 liste déroulante emboitées (la liste 2 dépend donc du choix de la liste 1) et des bouton radio, ce que je n'arrive pas à commencer à faire c'est à renvoyer une valeur en fonction du choix des utilisateur.

Pour résumer je voudrais savoir comment traiter (même si c'est long) le plus simplement les données du formulaire.

Ce que je cherche si j'ai bien compris sur les tuto c'est à creer un fichier php qui va lorsque je lui envoi les choix de l'utilisateur renvoyer une valeur par exemple si l'utilisateur choisi :

<OPTION>Zome 4</OPTION>
case 1 :
var txt = new Array ('>12.5')

TD>Assemblage :</TD>
<TD>
<br>oui : <INPUT type=radio name="assemblage" value="oui">

<TD>Montage : </TD>
<TD>
<br>oui : <INPUT type=radio name="montage" value="oui">

renverras : 3000


Voici mon formulaire :

<FORM METHOD=GET ACTION="??????">
<head><SCRIPT language="JavaScript">
<!--
<!--
function Choix(form) {
i = form.zome.selectedIndex;
form.surf.options.length=0;
Item = new Option("Choisir la surface (m²)");
form.surf.options[0]=Item;
form.surf.selectedIndex = 0;
switch (i) {
case 1 :
var txt = new Array ('>12.5','12.5-16');
break
case 2 :
var txt = new Array ('>20','20-26','26-31');
break
case 3 :
var txt = new Array ('>15','15-20','20-33','33-42');
break
case 4 :
var txt = new Array ('>20','20-40','40-55');
break
case 5 :
var txt = new Array ('20-30','30-45','45-63');
break
case 6 :
var txt = new Array ('>55','55-80');
break
case 7 :
var txt = new Array ('>20','20-26','26-31');
break
}

for (i=0;i<txt.length;i++) {
Item = new Option(txt[i]);
form.surf.options[i+1]=Item;
}
}
// -->

function MM_jumpMenu(targ,selObj,restore){ //v3.0
if (restore) selObj.selectedIndex=0;
}
//-->
</SCRIPT>
</head>
<body>
<FORM>
<p>
<SELECT NAME="zome" onChange='Choix(this.form)'>
<OPTION>--- choisir la forme ---</OPTION>
<OPTION>Zome 4</OPTION>
<OPTION>Zome 5</OPTION>
<OPTION>Zome 6</OPTION>
<OPTION>Zome 7</OPTION>
<OPTION>Zome 8</OPTION>
<OPTION>Zome 10</OPTION>
<OPTION>Zome 12</OPTION>
</SELECT>

<SELECT NAME="surf" onChange="MM_jumpMenu('parent',this,0)">
<OPTION>--- choisir la surface (m²) ---</OPTION>
</SELECT>
</p>

<TR>
<p>
<TD>Assemblage :</TD>
<TD>
<br>oui : <INPUT type=radio name="assemblage" value="oui">
<br>non: <INPUT type=radio name="assemblage" value="non">
</TD>
<p>
</TR>

<TR>
<p>
<TD>Montage : </TD>
<TD>
<br>oui : <INPUT type=radio name="montage" value="oui">
<br>non: <INPUT type=radio name="montage" value="non">
</TD>
<p>
</TR>
<TR>
<TD COLSPAN=2>
<INPUT type="submit" value="Envoyer">
</TD>
</TR>
</TABLE>
</FORM>

Merci d'avance pour vos réponses.

1 réponse

JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
5 août 2012 à 16:37
Salut ...

Pour traiter le formulaire, tu as besoin d'un autre langage de programmation, PHP ou ASP ...

En général, on utilise PHP !
Sauf que pour que le code PHP puisse s'exécuté, il a besoin d'un serveur.

Dans ton cas, tu développe sur ton PC, donc tu as besoin d'un serveur local, exemple, wampserver, easyPHP ...

Donc tu installe ce dernier, tu le lance, tu te mets dans le dossier "www" du répertoire "wamp", tu mets tes fichiers dedans, et tu ajoute ton fichier PHP.

En PHP ...
Si la méthode de ton formulaire est "POST", alors en PHP tu devra travailler avec la variable "$_POST".
Si c'est GET, alors tu devra travailler avec la variable globale "$_GET".

C'est deux variables sont en fait un tableau associatif !
Or, si dans ton formulaire tu as des champs qui porte les noms suivants "prenom", "email", "adresse".
Alors quand tu enverra le formulaire, PHP va créer la variable globale ($_POST par exemple), et il va associer a chaque nom de champs sa valeur comme ceci ...
$_POST['prenom'] = 'John'
$_POST['email'] = 'John@live.fr'
$_POST['adresse'] = 'Mars'


Le site du zéro peut t'aider énormément, sinon, voici un petit exemple :

exemple.php
<form method="post" action="#">
  Nom : <input type="text" name="le_nom" />
  <input type="submit" value="Envoyer" />
</form>

<br />

<?php
if(isset($_POST['le_nom'])) {
    echo 'Votre nom est '.$_POST['le_nom'];
}
?>
0
hoturi Messages postés 4 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 6 août 2012
5 août 2012 à 18:11
Merci pour t'as réponse en faite ce n'est pas sa mon souci parce que ce formulaire dois aller sur un site web. J'ai déjà créer un fichier php pour renvoyer les données vers un mail, ce qui me bloque c'est comment transformer les listes déroulante emboité et les bouton radio en une valeur précise.

exemple : option 1(zome4) + case1 (var1=>12.5) + assemblage =oui + montage = oui
renvoie la valeur 3000 afficher a l'écran de l'utilisateur.

C'est plutôt sa mon souci je ne sais ce que je dois utiliser comme code j'ai bien vue des choses avec une liste déroulante simple ou juste des boutons radio mais rien avec 2 listes liées.
0
JooS Messages postés 2465 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 8 juin 2016 228
5 août 2012 à 20:09
J'ai pas vraiment saisi ce que t'essaye de faire !!!

Que tu ais une liste déroulante, ou deux listes déroulantes, une radio, une checkbox ou un champs texte, en final, c'est la valeur que tu aura sélectionné pour chaque élément qui sera envoyé !


Hmm voici un autre exemple, espérant que ça puisse t'aider !

<form method="post" action="#">
	<p>Votre nom : <input type="text" name="nom" /></p>
	
	<fieldset style="width:100px;">
		<legend>Votre sexe : </legend>
	
		<p>
			Homme : <input type="radio" name="sexe" value="homme" />
			<br />
			Femme : <input type="radio" name="sexe" value="femme" />
		</p>
	</fieldset>
	
	<p>
		Origine : 
		<select name="origine" onchange="chargerPays(this.value);">
			<option value="asiatique">Asiatique</option>
			<option value="africain">Africain</option>
			<option value="europeen">Européen</option>
			<option value="americain">Américain</option>
		</select>
	</p>
	
	<p id="paysContent"></p>
	
	<input type="submit" value="Envoyer" name="sent" />
</form>

<script>
function chargerPays(origine) {
	var contenu = 'Pays : <select name="pays" id="pays">';

	switch(origine) {
		case 'asiatique' : 
			contenu += '<option value="japon">Japon</option>';
			contenu += '<option value="chine">Chine</option>';
			break;
		case 'africain' : 
			contenu += '<option value="algerie">Algérie</option>';
			contenu += '<option value="tunisie">Tunisie</option>';
			break;
		case 'europeen' : 
			contenu += '<option value="france">France</option>';
			contenu += '<option value="italie">Italie</option>';
			break;
		case 'americain' : 
			contenu += '<option value="usa">USA</option>';
			contenu += '<option value="canada">Canada</option>';
			break;
		default : contenu += '<option value="aucun">Aucun pays</option>';;
	}
	
	contenu += '</select>';
	document.getElementById('paysContent').innerHTML = contenu;
}
</script>

<?php
if(isset($_POST['sent'])) {
	$message = '';
	
	if(isset($_POST['sexe'])) {
		if($_POST['sexe'] == 'homme') $message .= 'Mr. ';
		else $message .= 'Mme. ';
	}
	
	if(isset($_POST['nom'])) $message .= $_POST['nom'];
	if(isset($_POST['origine'])) $message .= '<br />Origine : '.$_POST['origine'];
	if(isset($_POST['pays'])) $message .= '<br />Nationalité : '.$_POST['pays'];
	
	echo $message;
}
?>
0
hoturi Messages postés 4 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 6 août 2012
5 août 2012 à 23:32
ok je crois comprendre avec cette exemple je vais tenter de voir sa demain.

En faite ce qui me pose problème c'est que je ne comprend pas trop comment fonctionne le traitement de 2 listes liées avec la première qui défini les options de la seconde mais avec ton exemple je crois voir comment faire.

Merci
0
hoturi Messages postés 4 Date d'inscription dimanche 5 août 2012 Statut Membre Dernière intervention 6 août 2012
6 août 2012 à 00:05
Je viens de comprendre ce que tu ne pouvez pas comprendre. Je vais tenter d'expliquer.

Lorsque tu ouvre le formulaire tu as 2 liste liée, l'une défini la forme (4,5,6...) et l'autre la surface qu'il existe en fonction de la forme. L'utilisateur choisi une forme et ensuite la surface disponible pour la forme choisi.

Il a ensuite 2 boutons radio qui sont en sorte des options qu'il active avec oui ou non, mais en fonction de la forme et de la surface choisi ces bouton radios devrons renvoyer une valeur diférente.

Exemple:

pour une forme de type "zome4" de surface 12.5 si il selection non au 2 bouton radio la valeur renvoyé sera 1400 si il prend oui a l'un des boutons la valeur sera 2200 et si il sélection oui au 2 boutons la valeur sera 3000.

pour une forme de type "zome6" de surface 12.5 si il selection non au 2 bouton radio la valeur renvoyé sera 2000 si il prend oui a l'un des boutons la valeur sera 3000 et si il sélection oui au 2 boutons la valeur sera 4000.

Comme tu peux voir la valeur des bouton radio est donc différente en fonction de la forme choisi mais parfois aussi en fonction de la surface.

En gros je cherche une formule ou je vais devoir coder toutes les possibilité soit environ 84 possibilité qui ont toutes une valeurs unique.

as-tu mieux saisi mon problème.
0