Page 1 sur 1

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

Posté : 11 août 2006, 14:04
par laplumaencre
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é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

Posté : 11 août 2006, 14:49
par faber8
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

Posté : 11 août 2006, 14:55
par laplumaencre
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...

Posté : 11 août 2006, 16:14
par laplumaencre
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&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['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">