listes déroulantes avec MySQL

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : listes déroulantes avec MySQL

par jeff » 06 janv. 2006, 12:10

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>';

par bobivienla » 06 janv. 2006, 12:03

je laisse tombé pour l'instant

merci a tous

par jeff » 06 janv. 2006, 11:51

et c'est quoi le probleme??
met ton code entre les balise php et non pas code ca sera plus lisible :wink:

par bobivienla » 06 janv. 2006, 11:41

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>

par jeff » 05 janv. 2006, 19:41

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

par Cyrano » 05 janv. 2006, 19:32

On peut même rajouter aidejavascript

par zeus » 05 janv. 2006, 18:33

par bobivienla » 05 janv. 2006, 18:27

pourquoi pas AJAX mais connait pas du tout, des liens ?

par zeus » 05 janv. 2006, 18:26

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

par jeff » 05 janv. 2006, 18:23

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)

listes déroulantes avec MySQL

par bobivienla » 05 janv. 2006, 17:44

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