Page 1 sur 1

listes déroulantes avec MySQL

Posté : 05 janv. 2006, 17:44
par bobivienla
bonjour,

j'ai un formulaire avec plusieurs listes déroulantes, par rapoort au choix de la premiere , la deuxieme liste affiche uniquement les données qui correspondent, je sélectionne un choix dans la 2eme, la 3eme liste affiche ce qu"elle doit afficher ...etc.... j'ai en tout 4 listes déroulantes qui reliées sont à MySQL par php,

je voulais savoir si mon choix doit se porter sur Javascript ou y aurait il une aure méthode plus efficace ?

Si je garde la javascript, dois je créer d'autre fonctions ou je réutilise la meme ?

Dans ma page, j'ai actuellement 2 listes déroulantes qqui fonctionne parfaitment,
Merci pour vos conseils,

Voici le début de ma page:
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script language=javascript>
function modifcombo(){
document.location.replace("ajout.php?gam=" + document.form1.lib_gam.value );
document.form1.lib_gam.value = $gam;
}
</script>;
</head>

<body>

<?php

if (isset($_GET['gam'])){
$gam = $_GET['gam'];
} else {
$gam = NULL;
}

?>
<form name="form1" method="post" action="valide.php">
<table bgcolor="#ffe7c0" border="0">
<tbody>
<caption style="font-weight: bold;" valign="top" align="center"><big>Ajout d'un produit<br>
<br>
</big></caption> 

<tr>
<td style="text-align: left; font-weight: bold;"><font color="#ff6000"> Gamme :</font></td>
<td><select name="lib_gam" class="txt16-000000" onChange="javascript : modifcombo()">
<option value=""></option>


<?php


$dbhost="localhost";
$dblogin="xxxxxxx";
$dbpassword="xxxxxxxx";
$dbname="xxxxxxx";

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname);

$ma_req = "SELECT * FROM gamme;";
$res_req = mysql_query($ma_req)
 or die("Selection table \"gamme\" impossible");


if (mysql_num_rows($res_req)!=0) {  // résultat non vide
while ($une_ligne = mysql_fetch_array($res_req)) {
$id_gam =  $une_ligne["id_gam"];
$lib_gam = $une_ligne["lib_gam"];
print "<option value=" . $id_gam;
if ($id_gam == $gam) {

	print " selected";

	}

	print ">" . $lib_gam ."</option>";

	}

	}

?>

</select>

</td>

</tr>

<tr>

<td style="text-align: left; font-weight: bold;"><font color="#ff6000">Famille : </font></td>

<td><select name="lib_niveau1" class="txt16-000000">

<option value=""></option>



<?php

	// Connexion à la base
$dbhost="localhost";
$dblogin="xxxxxx";
$dbpassword="xxxxxxx";
$dbname="xxxxxxxxx";

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname);



$ma_req = "SELECT * FROM niveau1 WHERE id_gam = '$gam';";
$res_req = mysql_query($ma_req)
or die("Selection table \"niveau1\" impossible");


if (mysql_num_rows($res_req)!=0) {  // résultat non vide
while ($une_ligne = mysql_fetch_array($res_req)) {
$id_gam = $une_ligne["id_gam"];
$lib_niveau1 = $une_ligne["lib_niveau1"];
print "<option value=" . id_gam . ">"  .  $lib_niveau1 .  "</option>";
}
}
?>



............. suite du formulaire

Posté : 05 janv. 2006, 18:23
par jeff
salut
je voulais savoir si mon choix doit se porter sur Javascript ou y aurait il une aure méthode plus efficace ?
ba ca depend du conford d'utilisation que tu veut et des contrainte que tu peut rencontrer
-est ce que le rechargement de la page est genant
-est ce que les utilisateurs on javascript d'activer(%10 l'on pas)

une autre methode serai ajax mais bon (ca depend des questions precedent et de ce que tu veut faire rellement)

Posté : 05 janv. 2006, 18:26
par zeus
une autre methode serai ajax mais bon (ca depend des questions precedent et de ce que tu veut faire rellement)
AJAX est une communication entre PHP et JS, donc on a toujours les 10% qui ne l'ont pas ...

Mais je pense que tu peut te permettre d'obliger les gens à a voir JS d'activer et utiliser AJAX

Posté : 05 janv. 2006, 18:27
par bobivienla
pourquoi pas AJAX mais connait pas du tout, des liens ?

Posté : 05 janv. 2006, 18:33
par zeus

Posté : 05 janv. 2006, 19:32
par Cyrano
On peut même rajouter aidejavascript

Posté : 05 janv. 2006, 19:41
par jeff
il y a aussi
http://openweb.eu.org/articles/objet_xmlhttprequest/
http://www.toutjavascript.com/savoir/xm ... quest.php3

j'ai cité XHR mais bon j'aurai peut etre du m'abstenir car si c'est paratique, a toute les sauce sa devient vite un cauchemar

Posté : 06 janv. 2006, 11:41
par bobivienla
j'ai pris exemple sur ce tuto : http://www.aidejavascript.com/article15 ... sommaire_1
mais je n'ai bien réussi à l'adapter avec ma bdd, j"'ai un probleme dès le début avec la création de la premiere liste

merci pour vos conseils,
<html>
<head>
</head>
<body>

<form action="deroule.php" method="post">
   <fieldset>
       <legend>Ajout d'un nouveau produit</legend>

       <?

$dbhost="localhost";
$dblogin="xxxxxxxx";
$dbpassword="xxxxxxxx";
$dbname="xxxxxxx";

mysql_connect($dbhost,$dblogin,$dbpassword);
mysql_select_db($dbname);

$res_req = mysql_query("SELECT id_gam, lib_gam FROM gamme");

// récupération des pays dans la BDD ou dans un fichier

// création de la liste des pays
$select1 = '<select name="lib_gam" onchange="this.form.submit()">';
foreach (mysql_fetch_array($res_req) as $lib_gam) {
	if (isset($_REQUEST["lib_gam"]) && $_REQUEST["lib_gam"]) 
	$select1 .= '<option value="$lib_gam" selected="selected"> $lib_gam</option>';
	else $select1 .= '<option value="$lib_gam"> $lib_gam</option>';
	}
	$select1 .= '</select>';

// création de la liste des régions, si un pays a été sélectionné
if (isset($_REQUEST["lib_gam"]) && $_REQUEST["lib_gam"]) {
// récupération des régions dans la BDD ou dans un fichier
$liste_niveau1 = lireNiveau1($_REQUEST["id_gam"]);
if ($liste_niveau1) {
// création de la liste des régions
$select2 = '<select name="lib_niveau1" onchange="this.form.submit()">';
foreach ($liste_niveau1 as $lib_niveau1) {
 if (isset($_REQUEST["lib_niveau1"]) && $_REQUEST["lib_niveau1"])
$select2 .= '<option value="$lib_niveau1" selected="selected"> 
$region</option>';
          	
else $select2 .= '<option value="$lib_niveau1"> $region</option>';
				        }
		       $select2 .= '</select>';
	          }
	     else $select2 = '';
		     }
		     else $select2 = '';





// création de la liste des villes, si une région a été sélectionnée
if (isset($_REQUEST["region"]) && $_REQUEST["region"]) {
// récupération des villes dans la BDD ou dans un fichier en fonction de la région
$liste_villes = lireVilles($_REQUEST["region"]);
// création de la liste des localités
if ($liste_villes) {
$select3 = '<select name="ville">';
foreach ($liste_villes as $ville) {
$select3 = '<option value="$ville"> ' . $ville . '</option>';
         }
$select3 .= '</select>';
   }
else $select3 = '';
		      }
    else $select3 = '';
      echo $select1;
           echo $select2;
           echo $select3;
?>
 </fieldset>
</form>
</body>
</html>

Posté : 06 janv. 2006, 11:51
par jeff
et c'est quoi le probleme??
met ton code entre les balise php et non pas code ca sera plus lisible :wink:

Posté : 06 janv. 2006, 12:03
par bobivienla
je laisse tombé pour l'instant

merci a tous

Posté : 06 janv. 2006, 12:10
par jeff
pour la liste essya un truc comme ceci
$select1 = '<select name="lib_gam" onchange="this.form.submit()">';
while($info=mysql_fetch_array($res_req) ) {
    if (isset($_POST["lib_gam"]))
    $select1 .= '<option value="'.$info['lib_gam'].'" selected="selected"> $lib_gam</option>';
    else
 $select1 .= '<option value="'.$info['lib_gam'].'"> $lib_gam</option>';
    }
    $select1 .= '</select>';