Liste deroulante et champs texte

Liste deroulante et champs texte - PHP - Programmation

Marsh Posté le 03-02-2007 à 09:29:38    


Bonjour,  
 
j'aimerai avoir une reponse à propos d'un problème. J'ai une liste deroulante chargée à partir de la base mySql et un formulaire avec plusieurs champs textes.  
 
Je voudrais faire en sorte, lorsque je selectionne un element dans la liste deroulante, que les champs texte se remplissent à partir de la base en foncion des elements  de la liste.  
 
En quelque sorte liste deroulante et champs texte liés.
 
Merci

Reply

Marsh Posté le 03-02-2007 à 09:29:38   

Reply

Marsh Posté le 03-02-2007 à 10:53:11    

Bonjour,
 
Le problème est que la liste déroulante (listbox) est gérée par le navigateur du coté de l'utilisateur, alors que la base de données se trouve sur le serveur. Il y a donc deux solutions.  
 
1. Soit envoyer dans la page HTML, en même temps que la listbox, les données correspondants à toutes les options de la listbox dans des éléments cachés, et les afficher par un javascript quand une option est sélectionnée.
 
2. Soit faire un submit pour que le serveur renvoie une nouvelle page contenant les données correspondant à l'option de la listbox.
 
Et pour infos, il vaut mieux utiliser l'événevement onChange de la listbox, plutôt que le onClick de chaque option.

Reply

Marsh Posté le 03-02-2007 à 11:03:06    

Merci pour la reponse,
 
 c'est l'événement OnChange que je n'arrive pas à faire. Pour que lors de selection d'un element de la liste deroulante, les champs texte se mettent à jour automatiquement.
 
 Si tu as une idée ou un script qui peut resoudre mon problème , ça m'interesse.

Reply

Marsh Posté le 03-02-2007 à 12:38:30    

Renseigne toi sur l'ajax.
Ca se fait assez facilement ca

Reply

Marsh Posté le 03-02-2007 à 22:01:15    

Yanlaz a écrit :

Renseigne toi sur l'ajax.
Ca se fait assez facilement ca


 :jap: +1

Reply

Marsh Posté le 04-02-2007 à 08:58:49    

je fais ça, mais les champs texte ne remplissent pas en selctionnant un element de la liste deroulante.  
 
 Je ne vois pas le problème , si quelqu'un peut m'aider  
 
Desolé, c'est la base Access que j'utilise avec php
 
 
 
<script type="text/javascript">
 
function selection()
{
 
 var lst = document.getElementById("infrast" );
 
 
 if (lst.selectedIndex  == -1)
 {  
  document.getElementById("serie" ).value="";
  document.getElementById("categorie" ).value="";
  document.getElementById("type" ).value="";
 
 }
 else
 {
  document.getElementById("serie" ).value=infrast[lst.selectedIndex]["NumSerie"];
  document.getElementById("categorie" ).value=infrast[lst.selectedIndex]["Categorie"];
  document.getElementById("type" ).value=infrast[lst.selectedIndex]["Type"];
 }
}
 
</script>
<FORM>
<?php  
   $Infrast = "select * FROM Infrastructure ";
   $ret = odbc_exec ($cnx, $Infrast);
   
   echo '<select name="infrast"  id="infrast" onChange="selection()" />';
 
 while ( odbc_fetch_row ( $ret)) {  
        $NumInfra = odbc_result( $ret, "Numinfra" );
        $NomInfra = odbc_result( $ret, "CI" );
  echo "<OPTION VALUE=".$NumInfra.">$NomInfra</OPTION>\n";      // option d'affichage
      }
      echo "</select>\n";
   
?>
       
  <TABLE BORDER=0 >
      <TR>
   <TD><b>N° série :</b></dd>
         <TD><input type="text" id="serie" name="serie" />
         
  <TD><dd><b>Catégorie :</b></dd>
         <TD><input type="text" id="categorie" name="catégorie" />
      </TR>  
   
   <TR>
   <TD><dd><b>Type :</b></dd>
         <TD><input type="text" id="type" name="type" />
</TR>
</TABLE>
 
</FORM>

Reply

Marsh Posté le 04-02-2007 à 10:47:18    

Le problème vient des lignes

Code :
  1. document.getElementById("serie" ).value=infrast[lst.selectedIndex]["NumSerie"];
  2. document.getElementById("categorie" ).value=infrast[lst.selectedIndex]["Categorie"];
  3. document.getElementById("type" ).value=infrast[lst.selectedIndex]["Type"];


C'est du javascript, donc exécuté sur le poste de l'utilisateur, pas sur le serveur.
La listbox nommée infrast est définie et connnue sur le poste client, mais le tableau nommé infrast n'est connu que du côté du serveur. Il faudrait transmettre le tableau infrast au client au préalable.

Reply

Marsh Posté le 04-02-2007 à 11:00:11    

Comment faire pour transmettre le tableau nommé "infrast" au client?

Reply

Marsh Posté le 05-02-2007 à 05:10:34    

J'ai vraiment besoin d'un aide d'urgence, car mon projet de stage est bloqué sur ce point. Je n'arrive toujours pas à savoir comment faire. SVP.

Reply

Marsh Posté le 05-02-2007 à 10:39:36    

il suffit de passer ton tableau infrast à ta fonction javascript

 

Appel :
Onchange ='selection(<?=$infrast?> )'

 

Apres il faut que tu traites ton tableau a 2 dimensions en javascript

 

Va voir ici pour l'exemple
http://www.presence-pc.com/forum/p [...] -833-1.htm

 

N'hesites pas a me contacter


Message édité par Alisteroid le 05-02-2007 à 12:53:40
Reply

Marsh Posté le 05-02-2007 à 10:39:36   

Reply

Marsh Posté le 06-02-2007 à 08:47:20    

Merci pour le conseil sebondus,
 
j'ai bien compris ton explication, mais je n'arrive toujours pas à créer un tabelau "infrast" javascript à 2 dimensions à partir  de la base de donnée en passant par php.
 
Pour la suite du code , il n'y aura pas  de problème.
 
Si tu as une idée ou un exemple pour resoudre ce problème, ça m'aidera à finir le projet.

Reply

Marsh Posté le 06-02-2007 à 10:11:22    

Reply

Marsh Posté le 29-03-2007 à 20:07:48    

gadu a écrit :

Merci pour le conseil sebondus,
 
j'ai bien compris ton explication, mais je n'arrive toujours pas à créer un tabelau "infrast" javascript à 2 dimensions à partir  de la base de donnée en passant par php.
 
Pour la suite du code , il n'y aura pas  de problème.
 
Si tu as une idée ou un exemple pour resoudre ce problème, ça m'aidera à finir le projet.


 
Bonjour, comme je suis un débutant en PHP et Javascript j'aimerais savoir comment tu as résolu ton problème. J'essaie de faire la même chose que toi et je bloque sur le même point. Le Tableau en JavaScript.
 
Je te remercie d'avance

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed