Page 1 sur 1

Champ dependant d'une liste deroulante

Posté : 21 août 2013, 00:01
par msi79
bonsoir a tous .
voici ce que je veux .
j'ai une table destinateurs avec pour champ nom_dest et dest_Mail.
1. je récupère tous les noms dans une liste déroulante
2. a chaque fois que je choisi un nom de la liste déroulante automatiquement l'autre champ (champ texte) se rempli avec le mail de ce destinateurs.

j'ai essayé de m'inspirer de ce code mais je suis bloqué.
si quelqu'un pouvait bien m'aider.

voici le code :
<?php
include("connect.php");
?>
<!doctype html>
<html lang="fr">
        <head>
                <meta charset="UTF-8"/>
                <title>Formulaire dynamique</title>
        </head>
        <body>
          <form method="post" action="reception.php">
          
            <p>
              <select name="annee" id="annee" pattern="(premiere) | (deuxieme)" onchange='anneeChange();'>
                <option value="choisissez" selected disabled>-- choisissez --</option>              
                <option value="premiere">AUTRE</option>
               
                <?php
				$req="SELECT id_dest,nom_dest,email  FROM destinateurs ORDER BY nom_dest DESC";
				$res=mysql_query($req) or die("erreur dans la requête $req");
				while ($tab=mysql_fetch_assoc($res)){
				
			    echo "<option value='deuxième'>".$tab[nom_dest]."</option>";
                 }
				?>
              </select>
            </p>
            <div id="paragrapheSupplementaire">

             </div>
            <p>
              <input type="submit" value="-- OK --"/>
             </p>
          </form>
<script>
  function anneeChange(){
     var paragraphe = document.getElementById("paragrapheSupplementaire");
     paragraphe.innerHTML=document.getElementById("annee").value+" année.";
     if (document.getElementById("annee").value == "deuxième"){
        paragraphe.innerHTML+="<label>Orientation prévue pour l'année prochaine :</label>"
        +'<select name="orientation" id="orientation">'
        +'<option value="LP">LP</option>'
        +'<option value="master">master</option>'
        +"<option value=\"inge\">Ecole d'ingé</option>"
        +'<option value="boulot">Boulot</option>'
        +'<option value="autre">Autre</option>'
        +'</select>';
    
     }
  }
  anneeChange();
</script>
        </body>
</html>

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 08:14
par fozeutakoudjou
Bonjour,
En général, si tu souhaite rapidement avoir une solution à ton poblème, il faut le poser au bon endroit car c'est plus un problème javascript que PHP

Ce pendant pour résoudre ton problème, il te faut un tableau associatif php où les clés sont les noms et les valeurs l'email.
A la fin tu converti le tableau php en tableau js avec json_encode

et il ne te restera plus qu'a récupéré la valeur du select et l'utilisé comme clé de la ligne du tableau pour renvoyé la valeur

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 09:11
par msi79
merci de bien vouloir me repondre. vraiment je suis nouveau en javascript en plus je maitrise pas les tableau associatifs. alors je sais même pas par ou commencer .
donc si quelqu'un pouvait me donner un exemple afin que je puisse m'inspirer de ça . merci d 'avance

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 11:25
par fozeutakoudjou
ce ci devrait marcher

Code : Tout sélectionner

<?php include("connect.php"); ?> <!doctype html> <html lang="fr"> <head> <meta charset="UTF-8"/> <title>Formulaire dynamique</title> </head> <body> <form method="post" action="reception.php"> <p> <select name="annee" id="annee" onchange='anneeChange();'> <option value="choisissez" selected disabled>-- choisissez --</option> <option value="premiere">AUTRE</option> <?php $req="SELECT id_dest,nom_dest,email FROM destinateurs ORDER BY nom_dest DESC"; $res=mysql_query($req) or die("erreur dans la requête $req"); $dataarray = array(); while ($tab=mysql_fetch_assoc($res)){ $dataarray[$tab['nom_dest']]=$tab['email'] echo "<option value='".$tab['nom_dest']."'>".$tab['nom_dest']."</option>"; } ?> </select> </p> <div id="paragrapheSupplementaire"> <input type="text" name="fieldsemail" id="fieldsemail" value="" /> </div> <p> <input type="submit" value="-- OK --"/> </p> </form> <script> var dataarray = <?php echo json_encode($dataarray);?> function anneeChange(){ document.getElementById("fieldsemail").value=dataarray[document.getElementById("annee").value]; } </script> </body> </html>

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 12:46
par msi79
je vien de tester voici l'erreur que je reçois .
Parse error: syntax error, unexpected 'echo' (T_ECHO) in C:\wamp\www\TUTO LISTE LIEE 2\index.php on line 22 .

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 12:57
par msi79
j'ai pu corrigé l'erreur . il manquait un ; devant
 $dataarray[$tab['nom_dest']]=$tab['dest_Mail'];
. mais ça marche toujours pas . le champ deroulant reçois les données mais quand je choisis un nom rien ne se passe au niveau du champ texte

voici le code :
<?php
include("connect.php");
?>
<!doctype html>
<html lang="fr">
   <head>
      <meta charset="UTF-8"/>
      <title>Formulaire dynamique</title>
   </head>
   <body>
      <form method="post" action="reception.php">
         <p>
           <select name="annee" id="annee" onchange='anneeChange();'>
            <option value="choisissez" selected disabled>-- choisissez --</option>             
            <option value="premiere">AUTRE</option>
             <?php
               $req="SELECT id_dest,nom_dest,dest_Mail  FROM destinateurs ORDER BY nom_dest DESC";
               $res=mysql_query($req) or die("erreur dans la requête $req");
               $dataarray = array();
               while ($tab=mysql_fetch_assoc($res)){
                  $dataarray[$tab['nom_dest']]=$tab['dest_Mail'];
               echo "<option value='".$tab['nom_dest']."'>".$tab['nom_dest']."</option>";
               }
            ?>
         </select>
         </p>
         <div id="paragrapheSupplementaire">
            <input type="text" name="fieldsemail" id="fieldsemail" value="" />
         </div>
         <p>
           <input type="submit" value="-- OK --"/>
         </p>
      </form>
<script>
   var dataarray = <?php echo json_encode($dataarray);?>
  function anneeChange(){
     document.getElementById("fieldsemail").value=dataarray[document.getElementById("annee").value];
  }
</script>
   </body>
</html>

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 13:22
par msi79
j'arrive toujours pas .
voici la structure de ma table :
-- phpMyAdmin SQL Dump
-- version 4.0.4
-- http://www.phpmyadmin.net
--
-- Client: localhost
-- Généré le: Mer 21 Août 2013 à 09:21
-- Version du serveur: 5.6.12-log
-- Version de PHP: 5.4.16

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Base de données: `bddgescour`
--

-- --------------------------------------------------------

--
-- Structure de la table `destinateurs`
--

CREATE TABLE IF NOT EXISTS `destinateurs` (
`id_dest` int(11) NOT NULL AUTO_INCREMENT,
`nom_dest` varchar(150) NOT NULL,
`dest_Direct` varchar(80) NOT NULL,
`dest_Service` varchar(80) NOT NULL,
`dest_Contact` varchar(15) NOT NULL,
`dest_Mail` varchar(30) NOT NULL,
PRIMARY KEY (`id_dest`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

--
-- Contenu de la table `destinateurs`
--

INSERT INTO `destinateurs` (`id_dest`, `nom_dest`, `dest_Direct`, `dest_Service`, `dest_Contact`, `dest_Mail`) VALUES
(1, 'COULIBALY Zana Souleymane', '', '', '', ''),
(2, 'ZAMA Isabelle', '', '', '', ''),
(3, 'TOURE KORONAN', '', '', '', ''),
(4, 'KOFFI ANGE', '', '', '', ''),
(5, 'SDIP/KONAN', '', '', '', ''),
(6, 'msi79', '', '', '', ''),
(7, 'isabelle', '', '', '', ''),
(8, 'admin', '', '', '', ''),
(9, 'FOFANA KARIM', 'DIRECTION DE LA PLANIFICATION', 'STATISTIQUE', '45621236', '[email protected]'),
(10, 'YAO ANDEA', 'DIRECTION DE LA PLANIFICATION', 'STATISTIQUE', '01458575', '[email protected]'),
(11, 'DIGBEU ARISTIDE', 'DIRECTION DE LA PLANIFICATION', 'STATISTIQUE', '45655878', '[email protected]'),
(12, 'SANOGO ABDRAMANE', 'DIRECTION DE LA PLANIFICATION', 'STATISTIQUE', '01458575', '[email protected]'),
(13, 'YEO AFFOUET', 'DIRECTION DE LA PLANIFICATION', 'STATISTIQUE', '25789563', '[email protected]');
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 14:15
par fozeutakoudjou
si ton site est en ligne peux-tu me passer l'url? Sinon ce qui reste est forcement un problème JS. le souci c'est que je ne connais plus vraiment le Javascript natif. je fais plus du Jquery. je peux te donner le code qui marche en Jquery.

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 15:13
par msi79
Mon site n'est pas encore en ligne . je fais mes teste en local

Re: Champ dependant d'une liste deroulante

Posté : 21 août 2013, 18:05
par msi79
bonsoir a tous . personne pour m'aider ? je bloque toujours .
voici ou j'en suis ;
[javascript]<?php
include("connect.php");
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="UTF-8"/>
<title>Formulaire dynamique</title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1 ... "></script>
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<form method="post" action="reception.php">
<p>
<select name="annee" id="annee" onchange='anneeChange();'>
<option value="choisissez" selected disabled>-- choisissez --</option>
<option value="premiere">AUTRE</option>
<?php
$req="SELECT id_dest,nom_dest,dest_Mail FROM destinateurs ORDER BY nom_dest DESC";
$res=mysql_query($req) or die("erreur dans la requête $req");
$dataarray = array();
while ($tab=mysql_fetch_assoc($res)){
$dataarray[$tab['nom_dest']]=$tab['dest_Mail'];
echo "<option value='".$tab['nom_dest']."'>".$tab['nom_dest']."</option>";
}
?>
</select>
</p>
<div id="paragrapheSupplementaire">
<input type="text" name="fieldsemail" id="fieldsemail" value="" />
</div>
<p>
<input type="submit" value="-- OK --"/>
</p>
</form>
<script>
var dataarray = <?php echo json_encode($dataarray);?>
function anneeChange(){
document.getElementById("fieldsemail").value=dataarray[document.getElementById("annee").value];
}
</script>

<a href="test1.php">TEST</a>
<a href="test2.php">TEST2</a>
</body>
</html>
[/javascript]