[RESOLU] Modif champ texte par rapport à liste déroulante

Eléphant du PHP | 56 Messages

28 janv. 2014, 13:23

Bonjour,

Je suis confronté à ce problème depuis assez longtemps...
Je cherche à modifier la valeur d'un champ texte dynamiquement par rapport à ma liste déroulante.

voici ma liste déroulante, composé de 24 choix :
  <label for="lstInterface">Choix de l'interface : 
  <select name="nomInterface" id="nomInterface" size="1">  
    <?php 
    
    for($i=1;$i<=24;$i++)
    {
       echo "<option value=".$i.">interface fastEthernet 0/".$i;
       echo "</option>";
    }
    
    ?>
  </select>
  </label>
  <br />
  <br />
  <label for="txtDesc">Description : 
  <input type="text" name="txtDesc" id="txtDesc"> 
  </label>
Je dois mettre en valeur de la description, une variable de session initialisé sous la forme $_SESSION['descriptionX'], X étant compris entre 1 et 24.
J'ai donc essayé plusieurs façons, en vain. Je me tourne donc vers vous :

J'avais essayé de faire ça :
onchange="getElementById('txtDesc').value = <?php echo $_SESSION["description1"]; ?>"

Mais, mêler du javascript et du php, c'est assez périlleux :s

J'espère que vous aurez compris ce que je veux faire et je suis preneur de pistes.

Merci

Mammouth du PHP | 1967 Messages

28 janv. 2014, 14:37

Tu ne sais pas mélanger si facilement le php et le javascript, il faut bien comprendre qu'il s'éxécute l'un après l'autre

dans ce cas précis, je vois plusieurs manières de faire :
creer en php 24 fois le champs description, les cacher par défault et à chaque changement su select, les cacher tous et afficher le bon
faire écrire par php un tableau javascript contenant les descriptions et le onChange envoi la valeur tableau[value]

J'essaierais aussi mais sans certitude que ça marche:
ajouter à chaque option un champs desc le remplir avec php et le récupérer par javascript avec this.desc
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 janv. 2014, 15:52

salut,

+1 pour l'attribut (genre data-dec). voir comment tu peu l'utiliser en JS.

sinon la classique requête ajax sur l'event on change de la combo fonctionne plutôt bien et t'éviter de monter des trucs scabreux ;)



@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 56 Messages

29 janv. 2014, 13:36

Merci de vos réponses, j'ai réussi à faire cela.

Seulement, lors de la récupération de la variable dans une autre page, je faisais $_POST['txtDesc'] avant. Mais, vu que j'en ai 24, comment savoir quelle est la txtDesc envoyé ? Car, il va toutes les envoyer selon mon formulaire, non ?
<form method="post" action="confVlan.php" id="formUnVlan" onsubmit='return confirmFormUnVlan();'>
  <label for="lstInterface">Choix de l'interface : 
  <select name="nomInterface" id="nomInterface" size="1" onchange='return afficheDesc();'>  
    <?php 
    
    for($i=1;$i<=24;$i++)
    {
       echo "<option value=".$i.">interface fastEthernet 0/".$i;
       echo "</option>";
    }
    
    ?>
  </select>
  </label>
  <br />
  <br />
  <?php 
    for($i=1;$i<=24;$i++)
    {  ?>
  <div id='txtDesc<?php echo $i; ?>'>
  <label for='txtDesc<?php echo $i; ?>'>Description :
  <input type='text' name='txtDesc<?php echo $i; ?>' id='txtDesc<?php echo $i; ?>' value="<?php echo $_SESSION["description$i"]; ?>"> 
  </label>
  </div>
<?php } ?>
ce que je voudrais, c'est donc, récupérer uniquement $_POST['txtDesc10'], si c'est le champ 10 qui a été envoyé par exemple.

J'espère que vous m'aurez compris...

Mammouth du PHP | 1967 Messages

29 janv. 2014, 14:43

tu récupèrera le 10 par $_POST['nomInterface']
et donc $_POST['txtDesc'.$_POST['nomInterface']] te récupèrera la description voulue
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 56 Messages

29 janv. 2014, 15:35

Merci, c'est exactement ça !

Une petite dernière question :

Ce que je veux s'affiche correctement sur Firefox et Chrome mais dès que je passe sous IE -> Problème, le javascript ne s'éxécute pas.. Le javascript est pourtant bien activé...

Une explication ?


Déjà qu'IE n'est pas mon copain, là, je ne l'aime décidément plus....

De plus, il y a un certain laps de temps avant qu'il récupère les variables de sessions. Une faille IE ? :D

Eléphant du PHP | 56 Messages

30 janv. 2014, 16:35

J'ai bien réussi à tout récupérer, cela marche nickel ! Merci encore.

Précision : hidden n'est pas pris en compte par IE. Il faut passer par visibility:hidden ou visible et display:none ou block ;)