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

Signaler
Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009
-
cbst
Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009
-
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>

2 réponses

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

Bonsoir,

Si tu ne veux pas de rechargement de la page, regardes JavaScript, avec JQuery ou MooTools..
Messages postés
7
Date d'inscription
lundi 25 janvier 2010
Statut
Membre
Dernière intervention
5 septembre 2009

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
?>