Liste déroulante et affichage autoamtique sur la même page

Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009
- - Dernière réponse : cbst
Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009
- 26 août 2009 à 15:27
Salut à tous
voilà j'ai crée en php une liste déroulante de code services rempli à partir de la base donnée et je voudrais, après une clique sur le code désiré,afficher sur la même page les autres données relatives à ce service(designation,type)...sachant que le nombre de service est plus grand pour cela j'ai crée une table 'service' dans la base de données 'gestion de stock' en mysql.
Merci d'avance


<?php
//connection au serveur
$connect = mysql_connect( "localhost", "root", "" ) or die('erreur de connexion');
 
//sélection de la base de données:
$db = mysql_select_db( "gestion_stock" ) or die('base introuvable');
?>
<form id="form1" name="form1" method="POST" action="">
 
<?php
$cde="select * from service order by 'desig_sce'";
$reqt=mysql_query($cde) or die ('erreur sql'.$cde.'
'.mysql_error());
?>
<label></label>
 <select name="selectcde_sce"> <option> </option> <?php while($sql=mysql_fetch_object($reqt)){?> <option> <?php echo( $sql->cde_sce);}?></option> </select>


 <?php
$cde_sce = $_GET['cde_sce'];
$req="select desig_sce from service where cde_sce='$cde_sce'";
$desig = mysql_query($req) or die ('erreur sql'.$req.'
'.mysql_error());
while($result=mysql_fetch_object($desig))
{?> desig_sce);?>" />


 type_sce);?>" /> <?php
}
?>


</form>
Afficher la suite 

2 réponses

Messages postés
662
Date d'inscription
vendredi 26 septembre 2008
Statut
Membre
Dernière intervention
18 septembre 2009
0
Merci
Bonsoir,

Si tu ne veux pas de rechargement de la page, regardes JavaScript, avec JQuery ou MooTools..
Commenter la réponse de nautilus99
Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009
0
Merci
Merci nautilus99,
j'essaie une autre solution:j'ai crée 5pages,mais quand je selectionne le code de service ds la 1ère liste les 2autres listes restent inactives.
VOICI LE CODE:
p1 pour la connexion:
<?PHP
$connexion = mysql_connect('localhost','root','') or die ("Connexion au serveur impossible");
mysql_select_db('gestion_stock')or die('la selection de la base impossible');
?>


p2 pour la connexion:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Listes déroulantes pilotées par JavaScript Asynchrone et une Base de données</title>

<script type="text/javascript">
<!--
var Ld1Id='';
var Ld2Id='';
var id_liste='';

function ValideLd2(val) {
Ld1Id=val; //cde_sce
id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
ObjetXHR(LD_URL)
//objet XMLHttpRequest(LD_URL)
// Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
if (Ld2Id!='') {ValideLd3('');	}
}

function ValideLd3(val) {
Ld2Id=val; //id_commune
id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}	
ObjetXHR(LD_URL)
}

function ObjetXHR(LD_URL) {
//creation de l'objet XMLHttpRequest
if (window.XMLHttpRequest) { // Mozilla,...
xmlhttp=new XMLHttpRequest();
if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}	
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open("GET", LD_URL, true);
xmlhttp.send(null);
} else if (window.ActiveXObject) { //IE 
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP'); 
if (xmlhttp) {
xmlhttp.onreadystatechange=ChargeLd;
xmlhttp.open('GET', LD_URL, false);
xmlhttp.send();
}
}
// Bouton non apparent car modification de LD1 ou Ld2
document.getElementById('buttons').style.display='none';
}

// fonction pour manipuler l'appel asynchrone
function ChargeLd() {
if (xmlhttp.readyState==4) { 
if (xmlhttp.status==200) { 
//span id="niv2" ou "niv3"
document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText; 
if (xmlhttp.responseText.indexOf('disabled')<=0) {
//focus sur liste déroulante 2 ou 3
document.getElementById('Liste'+id_liste).focus(); 
}	
}
}
}

function Affiche_Btn() {
document.getElementById('buttons').style.display='inline';
}
</script>

<style>
#buttons {
display: none;
}
</style>
</head>


<!--
<noscript>
Cette page nécessite que JavaScript soit activé; dans votre navigateur
</noscript>-->


  Selectionnez votre choix dans les listes déroulantes:


  <form name="form1" method="get" action="ListeCP.php">
    <?php 
    include ("ValideLd1.php"); ?>  <!--Pour remplir la liste déroulante 1-->
    
    <?php include ("ValideLd2.php"); ?>  <!--Pour remplir la liste déroulante 2-->
    
    <?php include ("ValideLd3.php"); ?>  <!--Pour remplir la liste déroulante 3-->
    
    
    
  </form>



</html>

p3 pour l'affichage de la 1ère liste:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>


<?PHP
include 'Connexionbd.php';
$rq="Select * from service order by desig_sce;";
$rq_pos_id=0; //position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$rq_pos_val=1; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php 

$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());
$retour = '<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">Choisir...</option>';
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
echo $retour
?>

</html>

p4 pour l'affichage de la 2ème liste:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>


<?PHP
include 'Connexionbd.php';

$Ld1_retour =''; //cde_sce clé de la liste déroulante 1

if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}

if ($Ld1_retour) {

$rq="Select * from service where cde_sce=".$Ld1_retour." order by desig_sce;";
$rq_pos_id=0;//position dans le SQL de la clé de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
$rq_pos_val=1;//position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php 

$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());//echo $Ld1_retour;
$retour = '<select name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
$retour .= '<option selected value="">Choisir...</option>';

if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';

}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
}else{
$retour = '<select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>';
}	
echo $retour
?>


</html>

p5 pour l'affichage de la 3ème liste:
<?PHP
include 'Connexionbd.php';
$Ld1_retour =''; //cde_sce clé de la liste déroulante 1 
$Ld2_retour =''; //desiog_sce clé de la liste déroulante 2	

if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
if (isset($_GET['Ld2'])) {$Ld2_retour =  $_GET['Ld2'];}

if (($Ld1_retour!='')&&($Ld2_retour!='')) {
$rq="Select type_sce from service where cde_sce='$Ld1_retour' AND desig_sce='$Ld2_retour' ";
$rq_pos_id=0;
$rq_pos_val=0;
$result= mysql_query ($rq) or die('Erreur SQL !'.$rq.'
'.mysql_error());
$retour = '<select name="Liste3" id="Liste3" size="1" onchange="Affiche_Btn();">';
$retour .= '<option selected value="">Choisir...</option>';

if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_row($result)) {
$retour .= '<option value="'. $row[$rq_pos_id] .'">'. $row[$rq_pos_val] .'</option>';
}
$retour .= '</select>';
} else {
$retour = '';
}
mysql_free_result($result);
mysql_close($connexion);
}else{
$retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
}	
echo $retour
?>
Commenter la réponse de cbst