transmettre la valeur continent

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : transmettre la valeur continent

Re: transmettre la valeur continent

par arthur77 » 08 oct. 2011, 18:35

Re: transmettre la valeur continent

par Yosh » 05 oct. 2011, 17:07

Non mais une balise hidden se met dans le formulaire et pas dans un select.

Regarde bien ton code, tu ouvre un select, tu écrit un input hidden, puis tu alimente ton select et ensuite tu ferme ton select, cela ne marchera jamais.

Voila à quoi devrait ressembler ton formulaire (en gros hein):
<form>
<input type="hidden" />
<select>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>
Et ta version :
<form>
<select>
<input type="hidden" />
<option>1</option>
<option>2</option>
<option>3</option>
</select>
</form>
A toi de jouer.

Re: transmettre la valeur continent

par sam01 » 05 oct. 2011, 16:11

On lit pourtant ceci dans ton code :
if ($ad_pays == $data_dest['pays_'.$lang.''])
                                        {
                                                $selection = 'selected="selected">';
                                                $continent = '<input type="hidden" name="continent" value="'.$data_dest['cont_'.$lang.''].'">';
                                               




Oui mais comme tu peux le voir,

la valeur de $continent n'est pas renvoyée, c'est juste une variable.

Ensuite, après le select, je fais un echo de cette valeur :

[php]
echo "</select>";
                        if (isset($continent)){
                        echo $continent;}

Re: transmettre la valeur continent

par Mazarini » 05 oct. 2011, 14:18

Bonjour,

Il faudrait que tu nous dises si le continent a bien la bonne valeur dans le html de ta page.

Autrement :
- pour chaque pays, il peut y avoir un continent différent et tu affiches celui du dernier pays de la liste (pas de selection sur le continent dans la lecture de la base).
- il est plus facile de travailler avec des identifiants de continent ou de pays qu'avec leur nom (surtout si traduction).

Re: transmettre la valeur continent

par xTG » 05 oct. 2011, 13:45

Mon chmp hidden n'est pas dans le select, il est bien en dehors...
On lit pourtant ceci dans ton code :
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>";

Re: transmettre la valeur continent

par soycd » 05 oct. 2011, 13:28

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.

Re: transmettre la valeur continent

par sam01 » 05 oct. 2011, 13:06

: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

par Mazarini » 05 oct. 2011, 11:19

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

par xTG » 05 oct. 2011, 10:18

:non:
Dans un select non, mais dans une balise form oui. ;)
:roll:

Re: transmettre la valeur continent

par sam01 » 05 oct. 2011, 08:25

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

par Yosh » 04 oct. 2011, 16:37

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

par xTG » 04 oct. 2011, 15:02

Dans un select non, mais dans une balise form oui. ;)

Re: transmettre la valeur continent

par sam01 » 04 oct. 2011, 14:08

Bonjour codeclement ,

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

Re: transmettre la valeur continent

par codeclement » 04 oct. 2011, 00:46

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

par sam01 » 03 oct. 2011, 22:13

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...