Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/09/2011, 13h14   #1
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Par défaut Récupération du continent en type hidden

Bonjour à tous,

j'ai le formulaire suivant, qui me permet de récupérer le nom du pays :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
			echo '<select name="ad_pays" class="font" onchange="document.forms[\'form01\'].submit();">';
 
				if (empty($data_dest['pays_'.$lang.'']))
				{
					echo '<option value="-1" selected="selected">'.$idem_txt0017.'</option>';
				}
				else
				{
					echo '<option value="-1">'.$idem_txt0017.'</option>';
				}
				// on se connecte à MySQL 
				include ('connect.php');
 
			$sql_dest = sprintf("SELECT DISTINCT A.id_pay, A.pays_".$lang.", A.id_con, C.id_con, C.cont_".$lang." 
								FROM flatforswap_pays A
								INNER JOIN flatforswap_continent C ON C.id_con = A.id_con
								INNER JOIN flatforswap_ville B ON A.id_pay = B.id_pay
								INNER JOIN flatforswap_adherent E ON E.id_vil = B.id_vil
								WHERE E.valide = '2'
								ORDER BY A.pays_".$lang." ASC");
 
 
			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'" selected="selected">'.$data_dest['pays_'.$lang.''].'</option>';
					}
					if ($pays != $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'">'.$data_dest['pays_'.$lang.''].'</option>';
					}
				}
 
 
			echo '</select>';
Comme pour chaque pays, j'ai un continent correspondant qui est égal à

Code :
1
2
 
$data_dest['cont_'.$lang.'']
J'ai besoin d'envoyer la valeur de cette variable continent en type hidden.

Je ne sais pas trop de quel façon m'y prendre.

Merci d'avance pour votre aide.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 14h26   #2
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 112
Points : 27
Points : 27
Je vois deux solutions PHP et une JS :

1 PHP - Tu récupère le numéro/nom du continent après envoie du formulaire en regardant à quel continent le pays sélectionner est rattaché.

2 PHP - Tu concatène dans la value de ton <option> le nom du pays avec par exemple espagne avec l'id ou le nom du continent ce qui donnerait un truc du genre espagne_europe ou espagne_1

3 - Au chargement de la page, tu créer un tableau JS avec la correspondace Pays/continent. Tu créer une fonction sur l'évènement onChange de ton select qui récupère la valeur du pays sélectionner , qui regarde dans le tableau JS le continent associé et qui vient remplir un champs de formulaire de type hidden toujours grâce au Js
rollergirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 14h50   #3
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Bonjour rollergirl,


au fait j'aurais plus vu un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'" selected="selected">'.$data_dest['pays_'.$lang.''].'</option>';
						echo '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">
					}
					if ($pays != $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'">'.$data_dest['pays_'.$lang.''].'</option>';
					}
				}
j'ai ajouté le champ suivant qui est de type hidden.

Code :
1
2
 
echo '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">
Mais je ne sais du tout si ça fonctionne (Mettre un champ de type hidden dans un select...)
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 15h05   #4
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 112
Points : 27
Points : 27
Dans ce cas là tu dois modifier la manière dont tu créer les options de ton select comme cela :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 <?php
			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
				$selection = "";
				$continent ="";
 
 
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						$selection = 'selected="selected">';
						$continent = '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">';
					}
 
 
					echo '<option value="'.$data_dest['pays_'.$lang.''].'" '.$selection.'>'.$data_dest['pays_'.$lang.''].'</option>';
				}
			echo "</select>";
			if (!isset($continent))
			echo $continent;
 
?>
rollergirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 15h45   #5
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
pourquoi
n'est pas dans la boucle While ?
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 15h52   #6
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 112
Points : 27
Points : 27
Parce que normalement si j'ai bien compris la personne ne peut sélectionner qu'un seul pays et donc un seul continent....

Le problème c'est que tu ne peux pas mélanger la construction de ton select et des options avec un champ de formulaire masqué..

Du coup c'est normal que ce dernier soit affiché après la fin de la création de ton select.
rollergirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/09/2011, 16h00   #7
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Ha d'accord.

Mon but est de renvoyé le nom du pays avec celui du continent correspondant.

Je vais tester ce soir.

Merci rollergirl.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 07h01   #8
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Bonjour,

au fait je n'obtient ce que je veux à la validation du formulaire (en fait il se valide automatiquement quand je change le nom du pays).

Le souci c'est que j'arrive sur une page avec l'url suivante :

http://www.swapnfly.fr/liste.php?ad_pays=Argentine


alors que j'ai besoin d'obtenir l'url suivante :

http://www.swapnfly.fr/liste.php?con...&date1=&date2=
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 09h46   #9
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 112
Points : 27
Points : 27
Ce que je t'ai fais changer n'a pas de rapport avec l'envoi du formulaire.

Est tu sur de ne pas avoir d'action sur le Onchange de ton select ?
rollergirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h16   #10
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
oui voici le code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
 
echo '<div id="titreForm">'.$txt0140.'</div>';
	echo '<div id="corpForm">';
		echo '<fieldset id="coordonnees">';
		echo '<legend>'.$txt0336.'</legend>';
 
 
		echo '<p class="double">';
			echo '<label for="f1-pays" class="oblig">'.$idem_txt0015;
			echo '<span class="info"></span></label>';
			echo '<select name="ad_pays" class="font" onchange="document.forms[\'form01\'].submit();">';
 
				if (empty($data_dest['pays_'.$lang.'']))
				{
					echo '<option value="-1" selected="selected">'.$idem_txt0017.'</option>';
				}
				else
				{
					echo '<option value="-1">'.$idem_txt0017.'</option>';
				}
				// on se connecte à MySQL 
				include ('connect.php');
 
			$sql_dest = sprintf("SELECT DISTINCT A.id_pay, A.pays_".$lang.", A.id_con, C.id_con, C.cont_".$lang." 
								FROM flatforswap_pays A
								INNER JOIN flatforswap_continent C ON C.id_con = A.id_con
								INNER JOIN flatforswap_ville B ON A.id_pay = B.id_pay
								INNER JOIN flatforswap_adherent E ON E.id_vil = B.id_vil
								WHERE E.valide = '2'
								ORDER BY A.pays_".$lang." ASC");
 
			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
				$selection = "";
				$continent ="";
 
 
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						$selection = 'selected="selected">';
						$continent = '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">';
					}
 
 
					echo '<option value="'.$data_dest['pays_'.$lang.''].'" '.$selection.'>'.$data_dest['pays_'.$lang.''].'</option>';
				}
			echo "</select>";
			if (!isset($continent))
			echo $continent;
 
					echo '</p>';
 
		echo '</fieldset>';
 
 
	echo '</div>'; //  <!-- fin de corpForm -->
 
		echo '<div id="piedForm">';
			echo '<input type="submit" name="valide_form" value="'.$idem_txt0029.'" />';
		echo '</div>';
 
 
 
echo '</form>';
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h27   #11
Nouveau Membre du Club
 
Inscription : janvier 2007
Messages : 112
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 112
Points : 27
Points : 27
C'est ce petit bout de code (onchange="document.forms[\'form01\'].submit();") contenu dans ta balise select qui envoit le formulaire lorsque tu change le pays.

Tu dois le supprimer se re déclanchera sur la balise <form>
rollergirl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 10h31   #12
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Ok, merci rollergirl.

Je teste ça ce soir.

Je te tiens au courant.
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 22h18   #13
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Ca ne fonctionne toujours pas, la valeur $continent n'est toujours pas envoyée...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
 
echo '<p class="double">';
			echo '<label for="f1-pays" class="oblig">'.$idem_txt0015;
			echo '<span class="info"></span></label>';
			echo '<select name="ad_pays" class="font">';
 
				if (empty($data_dest['pays_'.$lang.'']))
				{
					echo '<option value="-1" selected="selected">'.$idem_txt0017.'</option>';
				}
				else
				{
					echo '<option value="-1">'.$idem_txt0017.'</option>';
				}
				// on se connecte à MySQL 
				include ('connect.php');
 
			$sql_dest = sprintf("SELECT DISTINCT A.id_pay, A.pays_".$lang.", A.id_con, C.id_con, C.cont_".$lang." 
								FROM flatforswap_pays A
								INNER JOIN flatforswap_continent C ON C.id_con = A.id_con
								INNER JOIN flatforswap_ville B ON A.id_pay = B.id_pay
								INNER JOIN flatforswap_adherent E ON E.id_vil = B.id_vil
								WHERE E.valide = '2'
								ORDER BY A.pays_".$lang." ASC");
 
			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
				$selection = "";
				$continent = "";
 
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						$selection = 'selected="selected">';
						$continent = '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">';
 
					}
 					echo '<option value="'.$data_dest['pays_'.$lang.''].'" '.$selection.'>'.$data_dest['pays_'.$lang.''].'</option>';
 
				}
			echo "</select>";
			if (isset($continent)){
			echo $continent;}
 
 
 
/*			$req_dest = mysql_query($sql_dest) or die('Erreur SQL !<br>'.$sql_dest.'<br>'.mysql_error());
				while($data_dest = mysql_fetch_assoc($req_dest))
				{
					if ($ad_pays == $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'" selected="selected">'.$data_dest['pays_'.$lang.''].'</option>';
						// echo '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">
					}
					if ($pays != $data_dest['pays_'.$lang.''])
					{
						echo '<option value="'.$data_dest['pays_'.$lang.''].'">'.$data_dest['pays_'.$lang.''].'</option>';
					}
				}
 
 
			echo '</select>';*/
		echo '</p>';
 
		echo '</fieldset>';
 
 
	echo '</div>'; //  <!-- fin de corpForm -->
 
		echo '<div id="piedForm">';
			echo '<input type="submit" name="valide_form" value="'.$idem_txt0029.'" />';
		echo '</div>';
 
 
 
echo '</form>';
Voici l'url que j'ai quand je valide :

http://www.swapnfly.fr/liste.php?ad_...s+informations


continent n'apparaît pas...
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 08h25   #14
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 789
Points : 35 789
Mais ce n'est pas possible de mettre un input hidden dans un select !!!
D'autre part, avec cette méthode, ce sera toujours le même continent qui sera envoyé, même si tu changes de pays !
Il faut soit mettre à jour la valeur de l'input avant l'envoi, soit faire comme l'a déjà suggéré rollergirl en combinant le code continent et le code pays dans le value des options du select.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 09h36   #15
Membre confirmé
 
Inscription : mars 2004
Messages : 1 187
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 187
Points : 233
Points : 233
Citation:
Envoyé par Bovino Voir le message
soit faire comme l'a déjà suggéré rollergirl en combinant le code continent et le code pays dans le value des options du select.
Bonjour Bovino et merci pour ton aide.

le souci c'est que je ne sais pas trop comment m'y prendre...

sachant que mon but est d'obtenir l'url suivante :

http://www.swapnfly.fr/liste.php?con...s+informations

...
sam01 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h11.


 
 
 
 
Partenaires

Hébergement Web