Récupération S_POST d'une liste deroulante...

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 : Récupération S_POST d'une liste deroulante...

par laplumaencre » 11 août 2006, 16:14

j'ai ajouter le value qui porte le meme nom que le libelle , ça marche sur une liste mais pas la 2eme , je vois pas pourquoi?? voivi le code si vous voyez ??

liste type realisation qui à présent fonctionne :
*Type de réalisation :
<select name="type_realisation" onChange="afficher1(this)">
<?php $connexion=mysql_connect("$hostname_dbprotect","$username_dbprotect","$password_dbprotect") or die("<p>Echec de connexion!");
mysql_select_db("$database_dbprotect", $connexion) or die ("<p>Echec de connexion à la base de donnée!");
$SQL4 = "SELECT id_menu,libelle,zone_texte FROM menu_deroulant WHERE id_menu='type_realisation' ORDER BY ordre";
$res4 = mysql_query($SQL4);
while ($val4=mysql_fetch_array($res4) ) {
echo "<option value=\"".$val4['libelle']."\">".$val4['libelle']."</option>\n";}
?>
</select>
<SCRIPT language="javascript">
<!--affiche une zone de texte si la liste déroulante est sur MODIFICATION -->
function afficher1(objet) {
	if (objet.value=="MODIFICATION") {
		document.all["zone_realisation"].style.visibility="visible";
	} else {
		document.all["zone_realisation"].style.visibility="hidden";
	}
}
</SCRIPT>
<input type="text" name="zone_realisation" id="zone_realisation" value="Préciser réf. S5" size="15" style="visibility:hidden" onChange="window.open('controle_ref.php?zone_realisation='+this.value,'ref','width=500,height=100,scrollbars=no')">
et l'autre liste quasi identique qui fonctionne pas ??? sauf si je remet ds JS comme critere value zone_texte=1 au lieu de value=libelle=MIXTEPRECISER :
&nbsp; &nbsp;*Type de cordon : &nbsp; &nbsp; &nbsp;           
<select name="type_cordon" onChange="afficher(this)">
<?php $connexion=mysql_connect("$hostname_dbprotect","$username_dbprotect","$password_dbprotect") or die("<p>Echec de connexion!");
mysql_select_db("$database_dbprotect", $connexion) or die ("<p>Echec de connexion à la base de donnée!");
$SQL5 = "SELECT id_menu,libelle,zone_texte FROM menu_deroulant WHERE id_menu='type_cordon' ORDER BY ordre";
$res5 = mysql_query($SQL5);
while ($val5=mysql_fetch_array($res5) ) {
echo "<option value=\"".$val5['libelle']."\">".$val5['libelle']."</option>\n";}
?>
<SCRIPT language="javascript">
function afficher(objet) {
	if (objet.value=="MIXTEPRECISER") {
		document.all["zone_type_cordon"].style.visibility="visible";
	} else {
		document.all["zone_type_cordon"].style.visibility="hidden";
	}
}
</SCRIPT>
</select><input type="text" name ="zone_type_cordon" id="zone_type_cordon" size="15" style="visibility:hidden">

par laplumaencre » 11 août 2006, 14:55

non mon formulaire en POST ?!!
mais je viens de remarquer en effet que je recevais aucune liste deroulante qui n'avait pas le "value", alors je leur est mis mais pas ceux qui doivent faire apparaitre un champ si modifcation puisque je me sert deja de "value" pour faire apparaitre ce champ ds javascript...

par faber8 » 11 août 2006, 14:49

Actuellement, tu ne passe pas ta variable avec la méthode POST mais GET. Il est donc normal de ne pas la retrouver. Voici comment le vérifier :
if (!isset($_POST["zone_realisation"])) echo "Pas de POST";
if (!isset($_GET["zone_realisation"])) echo "Pas de GET";
Donc si tu continu à passer avec la méthode GET il faut que tu doit envoyer aussi la valeur de 'type_realisation' :

Code : Tout sélectionner

<input type="text" name="zone_realisation" id="zone_realisation" value="Préciser réf. S5" size="15" style="visibility:hidden" onChange="window.open('controle_ref.php?zone_realisation='+this.value+'&type_realisation='+document.getElementById('type_realisation').value ,'ref','width=500,height=100,scrollbars=no')">
Et donc changer la page de vérification : Changer les $_POST en $_GET

Récupération S_POST d'une liste deroulante...

par laplumaencre » 11 août 2006, 14:04

Salut a tous !
J'ai une liste déroulante qui est alimenté via une base de donnée, si l'utilisateur selectionne MODIFICATION, un champ apparait pour qu'il entre la modif, là tous fonctionne mais mon $_POST du champ est vide enfin meme pas il est comme inexistant...
*Type de r&eacute;alisation :
<select name="type_realisation" onChange="afficher1(this)">
<?php $connexion=mysql_connect("$hostname_dbprotect","$username_dbprotect","$password_dbprotect") or die("<p>Echec de connexion!");
mysql_select_db("$database_dbprotect", $connexion) or die ("<p>Echec de connexion à la base de donnée!");
$SQL4 = "SELECT id_menu,libelle,zone_texte FROM menu_deroulant WHERE id_menu='type_realisation' ORDER BY ordre";
$res4 = mysql_query($SQL4);
while ($val4=mysql_fetch_array($res4) ) {
echo "<option value=\"".$val4['zone_texte']."\">".$val4['libelle']."</option>\n";}
?>
</select>
<SCRIPT language="javascript">
<!--affiche une zone de texte si la liste déroulante est sur MODIFICATION -->
function afficher1(objet) {
	if (objet.value==1) {
		document.all["zone_realisation"].style.visibility="visible";
	} else {
		document.all["zone_realisation"].style.visibility="hidden";
	}
}
</SCRIPT>
<input type="text" name="zone_realisation" id="zone_realisation" value="Préciser réf. S5" size="15" style="visibility:hidden" onChange="window.open('controle_ref.php?zone_realisation='+this.value,'ref','width=500,height=100,scrollbars=no')">
<br>
et le code de verification de la liste deroulante et recupération $_POST
//Vérification champ obligatoire type de réalisation, si modification et remplit. Sinon prendre choix liste déroulante 
	if ($_POST["type_realisation"]) {//=="AUCUN"
		echo "Veuillez saisir le champ Type de réalisation !";
	} elseif ($_POST["type_realisation"]=="MODIFICATION") {
		if ($_POST["zone_realisation"]=="") {
			echo "Veuillez saisir une référence si vous choisissez comme \"type de réalisation\" \"MODIFICATION\" !";
		} else {
			$type_realisation=$_POST["zone_realisation"];
		}
	} else {
		$type_realisation=$_POST["type_realisation"];
	}
J'ai essayé de faire directement et echo $_POST["type_realisation"] et rien il passe au else direct... SOS