Afficher résultat d'une liste déroulante dans un tableau sans avoir a recharger

Signaler
Messages postés
32
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
17 juin 2009
-
Messages postés
32
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
17 juin 2009
-
Bonjour,

Je dois créer une application php dans laquelle une liste déroulante contenant les employés apparait. Jusque la pas de problème, seulement, il faut que lors du choix d'un employé, le tableau n'affiche que les infos de cet employé, le tout sans recharger la page, donc dès le clique sur l'employé le tableau se modifie. Je me doute que un code a deja été donnée, mais après moulte recherche je me decide de vous demander.
Merci.

6 réponses

Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
Bonjour,
bah... dans le value du select, met les infos liées à cet employé
séparés avec "\t" par exemple
lors de la sélection d'une option, un ch'tiot split sur le value
et tu récupères un array avec les infos mémosrisées.
Cordialement
Messages postés
32
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
17 juin 2009

Oui par exemple j'arrive a faire ma manip' en passant par onchange= "submit();" dans le select puis redirection sur la meme page, mais a ce moment la, la page se recharge ce que je ne veut pas.

voila deja mon code :

<html>
<head><title>Compte-rendu</title></head>

<form action="index.php" method="get">
<select name = "lstcat1" onchange="submit();">
<?php
  $rs = mssql_query("select * from employe order by nom");
  $ligne = mssql_fetch_array($rs);
echo"<option value=0> </option>";
  while ($ligne == true)
  {
echo"<option value=$ligne[NumEmp]>$ligne[Prenom]</option>";
   $ligne = mssql_fetch_array($rs);
  }
?>
    </select>
   

<?php
  $emp = $_GET["lstcat1"];
if (isset($emp))
{
  $rs = mssql_query("select * from employe where NumEmp='$emp'");
  $ligne = mssql_fetch_array($rs);
echo "Compte rendu d'activité pour $ligne[Nom] $ligne[Prenom] :
";

?>

<?php
echo"\";
 echo\"\";
 echo\" Date |Durée |Prénom |Activité |Commentaire |\";
 echo\"\";
 $i = 0;

 $rs2 = mssql_query(\"select *, convert(varchar(12), DateCra, 113) as madate from Cra, Employe, Activite where cra.NumEmp=employe.NumEmp and cra.NumActivite=activite.NumActivite and cra.NumEmp='$ligne[NumEmp]'\");
 $ligne2 = mssql_fetch_array($rs2);
     while ($ligne2 == true)
    {
?>

----

<?php
echo\"$ligne2[madate], $ligne2[Duree], $ligne2[Prenom], $ligne2[Libelle], $ligne2[Commentaire], \";
echo\"\";
    $i++;
    $ligne2 = mssql_fetch_array($rs2);
}
}

echo"
";
?>

</form>

</html>

donc le tableau change bien a chaque fois que je selectionne un employés, mais la page se recharge, ce qui va m'apporter quelque souci par la suite.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>j'arrive a faire ma manip' en passant par onchange="submit();"
????
pourquoi un submit 
   d'ailleurs ? t'es sur que ça baigne ça ?
       tu as une fonction submit ? alors ça craint, change de nom !!!
       sinon la syntaxe c'est formulaire.submit() !
   et si tu fais un submit, ben, ça envoie le formulaire vers le php,
       qui retournera une réponse qui sera affiché !
   appelle ta fonction javascript qui fait le split et l'affichage
   ...onchange="exploser(this);"....
   function exploser(f)
   {  var d=f.options (f.selectedIndex].value.split("\t");
      traitement de d[0] = 1er champ, d[1]=2ème champs....

  en plus tu sembles ne mettre qu'un seul champ ?  NumEmp ?
  dans ce cas, le split est même inutile, utilise directement le .value

echo"<option value='$ligne[NumEmp]'>$ligne[Prenom]</option>";  aussi probablement.

@+
Messages postés
32
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
17 juin 2009

Oui, je suis sur que sa marche, mais le hic, c'est que je n'ai aucune notion de javascript, donc pour le moment, a chaque fois que je selectionne une personne, ma page se re-ouvre avec le bon tableau de la bonne personne.
Messages postés
4933
Date d'inscription
samedi 1 juillet 2006
Statut
Membre
Dernière intervention
2 février 2015
9
>>en plus tu sembles ne mettre qu'un seul champ ?  NumEmp ?
>>dans ce cas, le split est même inutile, utilise directement le .value
en fait je pense que tu dois y mettre les champs dont tu auras besoin
comme indiqué :*
echo '<option value="
                            '.$ligne[NumEmp]'."\t".
                            '.$ligne[champ 1 lié à l'employé]'."\t"
                            '.$ligne[champ 2 lié à l'employé]'.."\t" ....
                           ">'.$ligne[Prenom].'</option>';
au ' et " près !!! et c'est un exemple, à toi d'adapter à ce que tu voudrais.
Messages postés
32
Date d'inscription
mercredi 18 février 2009
Statut
Membre
Dernière intervention
17 juin 2009

Bon je vais regarder tout sa de plus près en esperant y avoir, en tout cas merci a toi.