Liste déroulante et base de données

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 : Liste déroulante et base de données

par cecile22sky » 04 déc. 2008, 18:07

Merci beaucoup de vos réponses, je vais essayer d'adapter tout ça à mon cas ^^

C'est pas gagné mais si j'avance, je vous en ferai part :)

Re: Liste déroulante et base de données

par Victor BRITO » 04 déc. 2008, 17:27

En ce qui concerne la requête, son résultat doit être retourné sous forme d'un tableau (l'utilisation d'une fonction comme mysql_fetch_assoc() le permet).
$resultat = array ();
$requete = mysql_query (" -- Ta requête SQL ici");
if (mysql_num_rows ($requete) > 0)
{
  while ($ligne = mysql_fetch_assoc ($requete))
  {
    $resultat['colonne1'] = $ligne['colonne1'];
    $resultat['colonne2'] = $ligne['colonne2'];
  }
}
// On libère les ressources
mysql_free_result ();
Pour alimenter le champ select, il suffira de modifier le code de ton formulaire comme suit :
<form action="select_emp_deroulant.php" method="post">
  <fieldset> 
<?php
// Aucun résultat n'est retourné : on n'affiche donc pas le champ select (ni son étiquette)
// D'où la condition suivante
if (count ($resultat) > 0):
?>
  <label for="id_enom">enom :</label>  
	<select name="enom" id="id_enom">
<?php
  // On parcourt le tableau au moyen d'une boucle
  foreach ($resultat as $valeur):
?>
		<option value="<?php echo $valeur['colonne1'] ?>"><?php echo $valeur['colonne2'] ?></option>
<?php
  endforeach;
?>
	</select><br/>
<?php
endif;
?>
        <p> le caractère '%' remplace n'importe quelle chaîne.</p>
  <label for="id_empnomin">empno min :</label><input type="text" size="4" id="id_empnomin" name="minnumber" value="10"/>
  <label for="id_empnomax">empno max :</label><input type="text" size="4" id="id_empnomax" name="maxnumber" value="20"/>
  <input type="submit" value="rechercher"/>
  </fieldset>
</form>
Édition : grillé. :oops:

par guilt92 » 04 déc. 2008, 17:17

Bonjour,

Très honnêtement j'ai rien compris à ta question :p

Basé sur le titre je vais expliquer le principe pour faire une liste déroulante dont les options sont en base de données...

Dans ta page php (il n'y a qu'une page php, pas de .php et un .html...)
<select name="enom" id="id_enom"> 
      <option value="-1">Choix</option>
<?php
//la requete
$req = "SELECT nom_option,value_option FROM ma_base";
//on l'execute
$q = mysql_query($req) or die(mysql_error());
//on boucle sur les résultats
while($r = mysql_fetch_assoc($q)) {
//on crée les options
?>
<option value = "<?php echo $r["value_option"];?>"><?php echo $r["nom_option"];?></option>
<?php
} //on finit le while
?>
</select>
En gros l'idée est que pour chaque résultat donné par la requete tu crées une option dans le select en mélangeant php et html... je sais pas si ca répond à ta question...

Liste déroulante et base de données

par cecile22sky » 04 déc. 2008, 16:56

Bonjour :)

Archi-débutante en PHP, mais quelques notions de programmation, je planche actuellement sur un petit exercice que nous a donner notre prof.

Nous avons à notre disposition une bdd. Une page html qui contient le formulaire :

Code : Tout sélectionner

<form action="select_emp_deroulant.php" method="post"> <fieldset> <label for="id_enom">enom :</label> [b]<select name="enom" id="id_enom"> <option value="-1">Choix</option> </select><br/>[/b] <p> le caractère '%' remplace n'importe quelle chaîne.</p> <label for="id_empnomin">empno min :</label><input type="text" size="4" id="id_empnomin" name="minnumber" value="10"/> <label for="id_empnomax">empno max :</label><input type="text" size="4" id="id_empnomax" name="maxnumber" value="20"/> <input type="submit" value="rechercher"/> </fieldset> </form>
Ce qui est en gras, c'est ce que j'ai modifié. Et un fichier php qui traite la requête.

J'ai déjà cherché et exploré quelques sites parlant de ce point, sans vraiment les comprendre.

Je ne souhaite modifier que le fichier .php comment vais je pouvoir signaler que au formulaire de prendre telle ou telle balise à un endroit précis ? J'ai déjà réfléchi à ma requête et pense savoir comment traiter la demande par la suite... mais le reste, je ne dois pas avoir assez de recule sur ce que l'on fait.

Pourriez vous me donner une toute petite piste ?
Je vous remercie :)