Page 1 sur 1
Liste déroulante qui agit sur zone de texte hidden/visible
Posté : 02 août 2006, 09:04
par laplumaencre
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>
Posté : 02 août 2006, 10:35
par Truc
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é.
Posté : 02 août 2006, 10:41
par Truc
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.
Posté : 02 août 2006, 11:07
par laplumaencre
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>
Posté : 02 août 2006, 11:25
par laplumaencre
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>
Posté : 02 août 2006, 12:26
par albat
Pourquoi n'utilises-tu plus les balises
pour mettre en forme tes extraits de code ? :shock:
Posté : 02 août 2006, 13:24
par laplumaencre
je savais pas le premier message a ete deplacé donc surement reformater correctement, bref sinon merci de ton aide.
Posté : 02 août 2006, 14:03
par zeus
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é
PS : j'ai aussi modifié tes autres messages

Pense y par toi même désormais
Posté : 02 août 2006, 14:23
par laplumaencre
Merci c'est sympa ! merci merci, mais y a quelqu'un ds ce forum qui pourrait vraiment m'aider...
AFFAIRE RESOLU
Posté : 02 août 2006, 14:37
par laplumaencre
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>
Posté : 02 août 2006, 15:51
par Truc
.
... meme si personne m'a aidé ...
Mouais...
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.
J'ai attendu de voir si tu en tenais compte mais j'ai été doublé

8-[
Posté : 03 août 2006, 08:48
par laplumaencre
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+
Posté : 03 août 2006, 09:50
par laplumaencre
BONNE NOUVELLE

je viens de tester avec firefox et le ALL fonctionne impeccable , a+ merci atous et vive le forum
