Page 1 sur 2

transmettre la valeur continent

Posté : 30 sept. 2011, 13:32
par sam01
Bonjour,

j'ai le formulaire suivant :

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))
				{
					$continent = "'.$data_dest['cont_'.$lang.''].'";
  					echo '<option value="'.$data_dest['pays_'.$lang.''].'" '.$selection.'>'.$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>';
en validant le formulaire, j'obtiens l'url suivante :

http://www.swapnfly.fr/liste.php?ad_pay ... formations

Le souci c'est que j'ai besoin de transmettre aussi le nom du continent afin d'obenir une url du type :

http://www.swapnfly.fr/liste.php?ad_pay ... formations

mais je ne sais pas du tout comment transmettre cette valeur...

Merci d'avance pour votre aide.

Re: transmettre la valeur continent

Posté : 30 sept. 2011, 15:16
par Mazarini
Bonjour,

Tu peux ajouter le paramètre dans l'attribut action de la balise form comme pour un lien ou ajouter un input de type hidden dans le formulaire.

Re: transmettre la valeur continent

Posté : 02 oct. 2011, 00:10
par sam01
Merci Mazarini,

aurais-tu un exemple s'il te plaît en ce qui concerne ta première proposition :

"Tu peux ajouter le paramètre dans l'attribut action de la balise form comme pour un lien"

Merci d'avance pour ton aide.

Re: transmettre la valeur continent

Posté : 02 oct. 2011, 21:26
par arthur77
Je pense qu'il veut dire dans ta balise <form> qui ouvre le formulaire, tu as un attribu qui s'appele action où tu indique la page qui traite les infos n'est-ce pas ? et bien imaginons que cette adresse sois :
page.php
, si le nom du continent est inscrit en dur dans la page, tu met : (en changent europe avec ce que que tu veux bien sur) :
page.php?continent="europe"
ce qui donnera pour toute la balise form :
<form method='post' action='page.php?continent="europe"' >
et si tu le récupère dans une variable, tu met :
page.php?continent="<?php echo $continent ?>"
ce qui donnera pour toute la balise form :
<form method='post' action='page.php?continent="<?php echo $continent ?>" >
avec la variable $continent qui contient l'info.


:D

Re: transmettre la valeur continent

Posté : 03 oct. 2011, 10:35
par sam01
Ha d'accord. Merci arthur77 pour l'explication.

Ben je vais essayer ça ce soir et je vous tiens au courant.

Re: transmettre la valeur continent

Posté : 03 oct. 2011, 22:13
par sam01
Je l'ai fais mais ça ne focntionne pas
if ((!isset($_GET['valide_form']) or !empty($erreur_form[0])) and !$ref) 
{

	// affichage des erreurs

if(isset($erreur_form[0])) {for($i=0;$i<sizeof($erreur_form);$i++) { echo $erreur_form[$i];}} 
	
			echo '<form method="get" action="'.$site.'liste.php?continent='.$continent.'" class="form01 type01" id="form01">';
		
						

	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">';
			
				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 = $data_dest['cont_'.$lang.''];}
			 
					/*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>';

j'ai l'url suivante qui s'affcihe :

http://www.swapnfly.fr/liste.php?ad_pay ... formations

Il ignore complètement le paramètre continent...

Re: transmettre la valeur continent

Posté : 04 oct. 2011, 00:46
par codeclement
Bonsoir,
Le mieux est la solution 2 de Mazarine, en créant un <input...caché> dans ton formulaire.
Cela sera transmi avec ton formulaire(et tous les parametres) et tu n'auras aucuns soucis

Re: transmettre la valeur continent

Posté : 04 oct. 2011, 14:08
par sam01
Bonjour codeclement ,

mais un input hidden ne peut pas fonctionner dans un select ...

Re: transmettre la valeur continent

Posté : 04 oct. 2011, 15:02
par xTG
Dans un select non, mais dans une balise form oui. ;)

Re: transmettre la valeur continent

Posté : 04 oct. 2011, 16:37
par Yosh
Et sinon, si tu laisse le formulaire en GET, c'est normal que ta valeur soit écraser il me semble.

Passe le form en POST ou bien utilise un champs hidden

Re: transmettre la valeur continent

Posté : 05 oct. 2011, 08:25
par sam01
j'ai mis un champ hidden, comme vous me l'avez conseillé, mais c'est toujours pareil, la valeur $continent ne passe pas...
			echo '<form method="get" action="'.$site.'liste.php" class="form01 type01" id="form01">';
			
		
						

	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">';
			
			
				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>';

Re: transmettre la valeur continent

Posté : 05 oct. 2011, 10:18
par xTG
:non:
Dans un select non, mais dans une balise form oui. ;)
:roll:

Re: transmettre la valeur continent

Posté : 05 oct. 2011, 11:19
par Mazarini
Bonjour,
$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");
Je suis surpris que tu ne fasse pas référence à un continent dans cette requête.

Dans cette requête, tu sélectionnes les pays dont une ville à un adhérent valide (=2) de n'importe quel continent.

Re: transmettre la valeur continent

Posté : 05 oct. 2011, 13:06
par sam01
:non:
Dans un select non, mais dans une balise form oui. ;)
:roll:
Mon chmp hidden n'est pas dans le select, il est bien en dehors...
  echo "</select>";
                        if (isset($continent)){
                        echo $continent;}

Re: transmettre la valeur continent

Posté : 05 oct. 2011, 13:28
par soycd
Le html généré donne quoi ?

Tu ressors plusieurs lignes de ta table lors de cette requête ou juste une seule, si plusieurs, y'a comme un problème, car $continent devrait-être un array.

Il serait aussi judicieux de déclarer cette variable (et les autres) hors de ta boucle, car avec un register_global à on, je te laisse imaginer la grosse faille que cela peut engendrer.