Liste déroulante qui agit sur zone de texte hidden/visible

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 09:04

Bonjour a tous !!
J'ai un probleme avec mon code, il marche pas, je veux que lorsque l'utilisateur utilise la liste deroulante et choisi "MIXTE PRECISER" ds la liste, une zone de texte apparaisse a coté. a savoir que mes liste deroulante sont alimenté via une base de donnée , ce qui complique le tous voici mon code qui marche pas (les listes deroulantes sont bien remplit mais ne font pas apparaitre une zone de texte suivant choix préciser). HELP URGENT je suis en stage et je suis bloqué depuis plusieur jours la dessus, j'avancve plus...merci a tous ceux qui veulent bien me sortir de là :-)
*Type de cordon :            
<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 FROM menu_deroulant WHERE id_menu='type_cordon'";
$res5 = mysql_query($SQL5);
while ($val5=mysql_fetch_array($res5) ) {
$id=$var5;
echo '<option value=\"'.$id.'">'.$val5['libelle'].'</option>\n';
}
?>
</select>

<div id="afficheur" style="visibility:hidden">
<input type="text" id="preciser" size="15">
</div>

<SCRIPT language="javascript">
function afficher(objet) {
	if (objet.value=="MIXTE PRECISER") {
		document.all["afficheur"].style.visibility="visible";
	} else {
		document.all["afficheur"].style.visibility="hidden";
	}
}
</SCRIPT>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 août 2006, 10:35

Modération : Il n'y a pas de PHP5 dans ce code et le souci est du coté Javascript pourquoi poster en PHP5 ?

Déménagement dans le Forum approprié.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 août 2006, 10:41

Regarde le code source... le contenu de "value" des options. Tu y place une variable $id qui ne doit pas être ce que tu attends.

Pour le javascript évite le "document.all" qui n'est que pour IE, préfère "getElementById" :
document.getElementById["afficheur"].style.visibility="visible";
Affiche les valeurs javascript avec un alert()

Tu peux directement placer l'id sur le champ:
<input type="text" id="preciser" size="15" id="afficheur" style="visibility:hidden" >
Regarde aussi la propriété "dispaly:none" pour rendre le champ invisible mais ausi la lace qu'il occupe. Atoi de voir ce qui se présente le mieux.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 11:07

voici mon code apres changement mais fonctionne tjs pas :-((
*Type de cordon :           
<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 FROM menu_deroulant WHERE id_menu='type_cordon'";
$res5 = mysql_query($SQL5);
while ($val5=mysql_fetch_array($res5) ) {
echo '<option value=\"'.$var5['libelle'].'">'.$val5['libelle'].'</option>\n';
}
?>
</select>

<input type="text" id="afficheur" size="15" style="visibility:hidden">

<SCRIPT language="javascript">
function afficher(objet) {
	if (objet.value=="MIXTE PRECISER") {
		document.getElementById["afficheur"].style.visibility="visible";
	} else {
		document.getElementById["afficheur"].style.visibility="hidden";
	}
}
</SCRIPT>

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 11:25

Voici mon dernier code avec lequel j'ai enfin une valeur ds "value" de <OPTION> donc le probleme provient maintenant du javascript qui ne recupère pas ce value pour la condition if CODE :
Type de cordon :            
<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 FROM menu_deroulant WHERE id_menu='type_cordon'";
$res5 = mysql_query($SQL5);
[color=darkred]$value=0;[/color]
while ($val5=mysql_fetch_array($res5) ) {
echo '<option value="'.[color=darkred]$value[/color].'">'.$val5['libelle'].'</option>\n';
[color=darkred]$value++;[/color]
}
?>
</select>

<input type="text" id="afficheur" size="15" style="visibility:hidden">

<SCRIPT language="javascript">
function afficher(objet) {
	if (objet.value==3) {
		document.getElementById["afficheur"].style.visibility="visible";
	} else {
		document.getElementById["afficheur"].style.visibility="hidden";
	}
}
</SCRIPT>

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

02 août 2006, 12:26

Pourquoi n'utilises-tu plus les balises
 pour mettre en forme tes extraits de code ? :shock:

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 13:24

je savais pas le premier message a ete deplacé donc surement reformater correctement, bref sinon merci de ton aide.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

02 août 2006, 14:03

En fait, c'est moi qui ai reformaté ton 1er message ;)

J'ai attendu de voir si tu en tenais compte mais j'ai été doublé :oops:

PS : j'ai aussi modifié tes autres messages ;) Pense y par toi même désormais
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 14:23

Merci c'est sympa ! merci merci, mais y a quelqu'un ds ce forum qui pourrait vraiment m'aider...

laplumaencre
Invité n'ayant pas de compte PHPfrance

02 août 2006, 14:37

Bon merci a tous pour votre aide meme si personne m'a aidé... voici le code qui marche enfin , chuii soulagé a+

Code : Tout sélectionner

*Type de cordon : <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 FROM menu_deroulant WHERE id_menu='type_cordon'"; $res5 = mysql_query($SQL5); $value=0; while ($val5=mysql_fetch_array($res5) ) { echo '<option value="'.$value.'">'.$val5['libelle'].'</option>\n'; $value++; } ?> </select> <input type="text" id="afficheur" size="15" style="visibility:hidden"> <SCRIPT language="javascript"> function afficher(objet) { if (objet.value==3) { document.all["afficheur"].style.visibility="visible"; } else { document.all["afficheur"].style.visibility="hidden"; } } </SCRIPT>

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

02 août 2006, 15:51

.
... meme si personne m'a aidé ...
Mouais... :roll:
Tu dis que ceci ne fonctionne pas ?
document.getElementById("afficheur").style.visibility="visible";


Firefox ne va pas reconnaitre document.all et pourtant tu devrais le prendre en compte. :-k
J'ai attendu de voir si tu en tenais compte mais j'ai été doublé :oops:
8-[

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

laplumaencre
Invité n'ayant pas de compte PHPfrance

03 août 2006, 08:48

Désolé j'étais unpeu énervé, je suis à la bourre ds mon projet...

Pour le getElementById, j'aurai bien voulu en effet que ça marche aussi sous mozilla (j'utilise que ça) mais ça ne fonctionnais pas avec . alors j'ai remis all, en sachant que ds l'entreprise ou je suis il utilise que IE et tous microsoft d'ailleur, le developpement en php/mysql est une 1ere et une exeptions ici ;-))) merci encore a+

laplumaencre
Invité n'ayant pas de compte PHPfrance

03 août 2006, 09:50

BONNE NOUVELLE :!: je viens de tester avec firefox et le ALL fonctionne impeccable , a+ merci atous et vive le forum :-) :D