Afficher les informations d'aprés un choix liste déroulante

Fermé
onss111 Messages postés 50 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 septembre 2017 - 2 mai 2013 à 18:20
John-Locke Messages postés 1 Date d'inscription dimanche 7 septembre 2014 Statut Membre Dernière intervention 7 septembre 2014 - 7 sept. 2014 à 11:42
Bonjour à tous.
J'ai créé en PHP une liste déroulante alimentée par une base de donnée MYSQL (table commande qui contient les champs suivant :id, type, description, état, étape) et maintenant je souhaiterais, à partir de la liste déroulante, afficher toute les informations relatives au choix. Je m'explique : ma liste affiche la liste des identifiants des appels d'offre et je voudrais, après avoir choisi un appel d'offre et cliquer sur un bouton "valider", afficher sur la même page (juste en dessous) toute les informations relatives à ce choix

<?php
$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
$db=mysql_select_db('projet',$connexion) or die ("base de données non accessible");
?>
<p>Choisissez un appel d'offre: </p>
<select id=select2 name=id>

<option value=0>-----choisir-----</option>
<?php
$SQL_C = 'SELECT id FROM commande ORDER BY id ASC';
$result_C = mysql_query($SQL_C);
while ($val_C = mysql_fetch_array($result_C))
{
echo '<option value="'.$val_C['id'].'">'.$val_C['id'].'</option>';

}
?>
</select>


mysql_close($connexion);
?>

ce code affiche la liste des appels d'offre de la liste déroulante et après le choix je veux afficher les informations concernant l'appel d'offre choisi au dessous de la liste (type, description, état, étape )
pouvez vous m'aider svp ...

6 réponses

Salut salut,

Tu veux le faire d'une certaine façon? Avec un formulaire, en ajax, tu t'en fou?

Je suis de bonne humeur , je te montre un petit moyen sympa, pour pousser un petit peu ton code, tu n'es pas très loin.
(Pour cet exemple je suppose que "id" dans ta table commande est une clé primaire et donc est unique).

La première chose, étant donné que tu fais déjà une requête en base de donnée c'est bien d'en profiter pour récupérer tout ce que tu souhaites à ce moment là : fais un SELECT * FROM commande ORDER BY id ASC et récupère toutes les données dans un tableau dont l'indice correspondra à l'id de la commande.

On a donc un menu déroulant contenant des id comme tu l'as fais, et un tableau contenant le reste des informations. On va préparer des balises <div> contenant les informations de la base de donnée, les id de ces balises correspondront aux valeurs contenues dans le menu déroulant pour pouvoir les identifier. On les cachera à l'affichage pour les faire apparaitre lors du clique dans le menu.

J'espère avoir été clair , voici la pratique :

<?php 

$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible."); 
$db=mysql_select_db('projet',$connexion) or die ("base de données non accessible"); 

$SQL_C = "SELECT * FROM commande ORDER BY id ASC"; 
$result_C = mysql_query($SQL_C)or die(mysql_error()); 

$str=""; 
$i=0; 
//Creation du menu déroulant 
while ($val_C = mysql_fetch_array($result_C,MYSQL_ASSOC)) 
{ 
 foreach($val_C as $key => $value){ 
  if($key!="id"){ 
   $values[$val_C['id']][$key]=$value; 
//tableau $values 
//id unique : premiere dimension du tableau l'id de la commande 
//deuxième : les élément de la base de donnée correspondant à l'id 
//On crée le tableau qui ressemblera à : 
// $values['1']['type'] 
//$values[1]['description'] 
//$values[1]['etat'] 
//... 
  } 
 } 
//Contient les option du menu déroulant qu'on affichera plus loin 
 $str.="<option value='".$val_C['id']."'>".$val_C['id']."</option>"; 
} 
mysql_close($connexion); 

//Création des div contenant les éléments de la base de donnée 
$str_div=""; 
foreach($values as $key => $value){ 
  
 //On cache toutes les div 
 //La fonction affiche() fera apparaitre la div correspondante au click 
 $str_div.="<div id='".$key."' style='display:none'>"; 
 $str_div.="<ul>"; 
 foreach($value as $key_value => $rslt){ 
  $str_div.="<li>".$key_value." : ".$rslt."</li>"; 
 } 
 $str_div.="</ul>"; 
 $str_div.="</div>"; 
} 

?> 
<!-- Page HTML --> 
<p>Choisissez un appel d'offre: </p> 
<!-- événement onchange de la balise select définit sur la fonction affiche() --> 
<select id='select' name='select' onchange='affiche()'> 
<option value='0'>-----choisir-----</option> 
<?php 
 //$str contient la chaine de caractère html des différentes options du menu déroulant 
 echo $str; 
?> 
</select> 
<?php 
 //$str_div contient la chaine de caractère html des différentes div 
 echo $str_div; 
?> 

<script type="text/javascript"> 
var last_div=""; 
function affiche(){ 
 var id=document.getElementById("select").value; 
 //Si un div est déjà affichée on l'a cache 
 if(last_div!=""){ 
  document.getElementById(last_div).style.display="none"; 
 } 
 last_div=id; 
//On affiche le contenu 
 document.getElementById(id).style.display="block"; 
} 
</script> 




Résolu? ===> [RESOLU]
4
onss111 Messages postés 50 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 septembre 2017 3
5 mai 2013 à 19:35
Je vous remercie énormément kyser sozepour votre aide !!
le code est génial ça marche très bien !!!

merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii c'est très gentil de votre part :)))))))))))))))))))))))))))
0
mabrouka_besma Messages postés 1 Date d'inscription mercredi 9 avril 2014 Statut Membre Dernière intervention 9 avril 2014
9 avril 2014 à 00:54
Moi , j'ai probleme concernant l'insertion dans la base ,mon code est comme ci-dessus mais au lieu de d'afficher la valeur selectionnée de la liste j'avais fait que pour chaque option de la liste est attribuée une autre liste sachant que je l'ai fait avec javascript;
J'espère que c'est clair mon probleme
Svp aidez-moi !! c'est urgent !!!
et merci d'avence
0
John-Locke Messages postés 1 Date d'inscription dimanche 7 septembre 2014 Statut Membre Dernière intervention 7 septembre 2014
7 sept. 2014 à 11:42
Salut à tous !

Juste une petite question, je me suis inspiré de ton code pour réaliser une liste déroulante avec choix ( au passage un énorme merci ça ma drôlement bien aidé), mais j'aimerais simplement, au lieu que ça me récupère l'ID de ma table et me l'affiche à l'écran, afficher l'élément sélectionné dans liste.

En gros quelque chose comme :

Veuillez choisir un élément :
[Element1]

Vous avez choisi l'élément :
Element1

Serait-il possible d'avoir un petit coup de pouce svp? merci beaucoup !!
Bonne journée à tous
0
Utilisateur anonyme
7 mai 2013 à 09:54
C'est fait pour ça ;)
Résolu please
0
onss111 Messages postés 50 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 septembre 2017 3
7 mai 2013 à 11:48
Merciiiiiiiii c résolu vraiment merciiii bcq pour ton aide :))

SVP j'ai une autre problème svp pouvez vous d'aider :))))

j'ai encore la même liste déroulante qui contient les id des commandes et la 2ème contient les étapes de déroulement des commandes
Si par exemple l'utilisateur choisit un identifiant de la 1ère liste, il va mettre à jour les étapes en sélectionnant un champ de la 2ème liste, une fois je clique sur valider l'étape sera enregistré au niveau de la base de donnée
si j'actualise la page Ce champ (étape choisi) sera désactivé ou coloré une fois est stocké dans la base de donnée,
Voilà le code de la sélection d'un id de la base:
<?php
$connexion=mysql_connect('localhost','root',"") or die ("connexion impossible.");
$db=mysql_select_db('projet',$connexion) or die ("base de données non accessible");
?>
<p>Choisissez un appel d'offre: </p>
<select id=select2 name=id>

<option value=0>-----choisir-----</option>
<?php
$SQL_C = 'SELECT id FROM commande ORDER BY id ASC';
$result_C = mysql_query($SQL_C);
while ($val_C = mysql_fetch_array($result_C))
{
echo '<option value="'.$val_C['id'].'">'.$val_C['id'].'</option>';

}
?>
</select>


et voilà le code des étapes des commandes:

<select id=select2 name="etape">

<option>Etude</option>
<option>Depot dossier AO</option>
<option >Publication de l'avis de presse</option>
<option > Réception des offres techniques </option>
<option >Ouverture des plis technique.</option>
<option >Dépouillement des plis tech</option>
<option > Dépôt de résultat </option>
<option> Ouverture des plis financière. </option>
<option> Dépôt de dossier </option>
<option> Conclusion </option>
<option> Publication resultat </option>
</select>

pouvez vous m'aider svp ...
Merci d'avance :)
0
Utilisateur anonyme
7 mai 2013 à 12:02
Okok, tu as des contraintes particulières? Sans rechargement de page, formulaire?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
onss111 Messages postés 50 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 septembre 2017 3
7 mai 2013 à 12:15
je veut si par exemple l'utilisateur peut une autre fois mette à jour les étapes de la commande il trouve les champ de la 2ème liste (les étapes de la commande) qui sont déjà sélectionnées, relatives à l'id saisie par la 1ere liste : désactivées ou colorés

(c'est à dire une fois une étape relative à l'id est stocké dans la base il ne peut pas la re-sélectionnée ou par exemple il l'a trouve coloré )

help me pleaseeeeeeee :'(((((

Merciiiiiiiiii d'avance
0
onss111 Messages postés 50 Date d'inscription jeudi 2 mai 2013 Statut Membre Dernière intervention 25 septembre 2017 3
7 mai 2013 à 15:25
je vous donne un exemple :

j'ai un id (AON 05) cette commande est dans l'étape (Réception des offres technique ) si je clique sur ce champ cette valeur sera à la place de la dernière étape ( Publication de l'avis de presse) au niveau de la base

si je visite une autre fois la page il faut que je trouve que l'étape (Réception des offres technique) et les étapes avant ( Etude, Depot dossier AO, Publication de l'avis de presse) sont désactivées ou colorés pour que je puisse savoir chaque commande ou elle est arrête ou encore je ne peux pas revenir en arrière pour chaque commande.

j'espère que vous arrivez à me comprendre :))

Je suis vraiment désolé pour le dérangement mais j'ai besoin de ce script dans mon Projet de fin d'études :(((
0