begin process at 2012 02 10 23:47:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > GÉNÉRATEUR DE LISTE DÉROULANTE

GÉNÉRATEUR DE LISTE DÉROULANTE


 Information sur la source

Note :
8,6 / 10 - par 5 personnes
8,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :liste, déroulante, générer, html Niveau :Débutant Date de création :06/07/2006 Date de mise à jour :06/07/2006 17:06:30 Vu :25 378

Auteur : Vince66

Ecrire un message privé
Commentaire sur cette source (41)
Ajouter un commentaire et/ou une note

 Description

Voici une petite fonction sans prétention mais qui peut rendre des services :)
Elle permet, à partir d'une requête SQL, de retourner le code HTML d'une liste déroulante (<select><option>...).
On peut également définir une valeur par défaut lors de l'affichage de la liste déroulante (selected="selected") grâce au paramètre $selected auquel vous attribuez l'identifiant de l'élément à afficher. L'élément 0 est l'élément affiché par defaut.
Le paramètre $nom correspond à l'attribut "name" de la liste.

Voilà, simple comme "bonjour" :)

Source

  • /**
  • * Fonction creer_select
  • * Renvoi le code HTML d'une liste déroulante en fonction de la requête
  • * SQL ($sql). La liste déroulante portera le nom $nom et sélectionnera
  • * par défaut l'élément portant l'id $selected
  • **/
  • function creer_select ($sql, $nom, $selected = 0, $defautSelected = 'Cliquez ici pour sélectionner') {
  • // On execute la requête
  • if (false != ($query = mysql_query ($sql)))
  • {
  • // On vérifie que la requête retourne quelque chose
  • if (mysql_num_rows ($query) != 0) {
  • // Variable $html contenant le code HTML à renvoyer
  • $html = '<select name="'.$nom.'">
  • <option value="0"'.(($selected == 0)?' selected="selected"':'').'>'.$defautSelected.'</option>';
  • // Boucle parcourant le résultat de la requête
  • while ($value = mysql_fetch_row ($query)) {
  • // Pour chaque enregistrement on ajoute une option dans la liste
  • $html .= '
  • <option value="'.$value[0].'"'.(($selected == $value[0])?' selected="selected"':'').'>'.$value[1].'</option>';
  • }
  • // Fin de la liste déroulante
  • $html .= '</select>';
  • // On renvoi le code HTML
  • return $html;
  • // Sinon, si la requête ne retourne rien
  • } else {
  • // On renvoi false
  • return false;
  • }
  • // Sinon la requête est fausse
  • } else {
  • // On renvoi false
  • return false;
  • }
  • }
/**
* Fonction creer_select
* Renvoi le code HTML d'une liste déroulante en fonction de la requête
* SQL ($sql). La liste déroulante portera le nom $nom et sélectionnera
* par défaut l'élément portant l'id $selected
**/      
function creer_select ($sql, $nom, $selected = 0, $defautSelected = 'Cliquez ici pour sélectionner') {
  // On execute la requête
  if (false != ($query = mysql_query ($sql)))
  {
    // On vérifie que la requête retourne quelque chose
    if (mysql_num_rows ($query) != 0) {
      // Variable $html contenant le code HTML à renvoyer
      $html = '<select name="'.$nom.'">
<option value="0"'.(($selected == 0)?' selected="selected"':'').'>'.$defautSelected.'</option>';
      // Boucle parcourant le résultat de la requête
      while ($value = mysql_fetch_row ($query)) {
        // Pour chaque enregistrement on ajoute une option dans la liste
        $html .= '
<option value="'.$value[0].'"'.(($selected == $value[0])?' selected="selected"':'').'>'.$value[1].'</option>';
      }
      // Fin de la liste déroulante
      $html .= '</select>';
      // On renvoi le code HTML
      return $html;
    // Sinon, si la requête ne retourne rien
    } else {
      // On renvoi false
      return false;
    }
  // Sinon la requête est fausse
  } else {
    // On renvoi false
    return false;
  }
}

 Conclusion

Je n'ai pas constaté de bug mais je n'ai pas non plus tester ma fonction dans tous les sens.
Donc si vous voyez des corrections ou des améliorations à apporter, je suis à l'écoute :)


 Historique

06 juillet 2006 12:05:57 :
Modification de la mise en page du code pour une meilleur lisibilité.
06 juillet 2006 17:06:30 :
Prise en compte des remarques faites par Kankrelune. Merci ;)

 Sources du même auteur

CLASSE MYSQL UTILISANT LES FONCTIONS PDO
AFFICHAGE D'UN TABLEAU HTML À PARTIR D'UN ARRAY

 Sources de la même categorie

Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK
Source avec Zip Source avec une capture EL COYOTOS LIVRE D'OR PHP 5 par elcoyotos
COMPTEUR DE VISITE - FICHIER TXT - CODE MINIMAL par SuperChouquette

 Sources en rapport avec celle ci

TRANSFORMER DU PBB CODE EN CODE HTML par audain
LISTER DES LIENS / URLS DEPUIS UN TEXTE par gmni
Source avec Zip ENVOIE MAIL EN HTML AVEC PHP PAS DE SPAM SUR HOTMAIL ET GMAI... par Dje33
Source avec Zip CHAINER 3 LISTES DÉROULANTES EN AJAHT par CARATGOLD2004
Source avec Zip LISTE DÉROULANTE AVEC TOUS LES PAYS par Arafat Le Sorcier

Commentaires et avis

Commentaire de kankrelune le 06/07/2006 14:57:35

bien... perso je rajouterais un paramètre pour personaliser le descriptif de la valeur par défaut... .. .

Sinon utilise les simples quotes plutot que les doubles quotes... c'est toujours ça de gagné... .. . ;o)

(($selected == 0)?" selected=\"selected\"":"")

=>

((empty($selected)) ? ' selected="selected"' : '')

Mais c'est du détail... .. .

Le die c'est un peu crade pour de la prod... .. .

function creer_select ($sql, $nom, $selected = 0, $defautSelected = 'Cliquez ici pour sélectionner')
{
  if(false != ($result = mysql_query ($sql)))
  {
    if (mysql_num_rows($result) != 0)
    {
      $html = '<select name="'.$nom.'">
      <option value="0"'.((empty($selected)) ? ' selected="selected"' : '').'>'.$defautSelected.'</option>';
      
      while($value = mysql_fetch_row ($result))
        $html .= '
        <option value="'.$value[0].'"'.(($selected == $value[0]) ? ' selected="selected"' : '').'>'.$value[1].'</option>';
      
      $html .= '</select>';
      
      return $html;
    }
    else return false;
  }
  else return false;
}

Je met 8/10... .. .

@ tchaOo°

Commentaire de Vince66 le 06/07/2006 16:40:51

Merci pour tes conseils que je note avec interêt :)
Pour les quotes, tu as raison. Je n'y avais pas pensé même si j'essaye de les utiliser le plus souvent possible.
Ensuite, tester la requête pour vérifier si elle renvoit "false", j'étais à cent lieux d'y penser.
C'est une logique que je n'avais jamais imaginé mais en effet, c'est plus propre que d'arrêter le script pour afficher un message d'erreur MySQL.

Je m'en vais modifier la source en conséquence. :)

Commentaire de malalam le 07/07/2006 07:45:37 administrateur CS

Hello,

pas gd chose à ajouter, si ce n'est que quand c'est possible, j'utiliserais la comparaison typée :
  if(false !== ($result = mysql_query ($sql)))

if (mysql_num_rows($result) !== 0)

mais toujours
(($selected == $value[0]) ? ' selected="selected"' : '')
(on ne sait jamais, selon le type renvoyé par la requête)

Un exemple de requête ne serait pas de trop, pour bien montrer ce que ta fonction va utiliser.
Parce que : SELECT nom, prenom, id FROM users
risque de surprendre quelques débutants peu attentifs :
SELECT id, CONCAT(nom, ' ', prenom) as nom_prenom FROM users
(par exemple).

Et enfin, je ferais quelques vérifications sur les arguments passés, histoire d'éviter les mauvaises surprises.

Ah, et si la requête ne retourne rien, j'aurais tendance à afficher une liste vide, mais bon...ça, c'est une question de préférence ;-)

C'est pas mal, plutôt propre, et très certainement utile à beaucoup.

8 aussi.

Commentaire de stepibou le 08/07/2006 12:01:27

A si un truc :
Ton parametre $selected = 0 , y sert a rien :

tu laisse juste (en param):
$selected = '' si il est vide pas de selected ="selected"
et si il est rempli dans l'utilisation de ta fonction par
'default' :
$defautSelected = 'Cliquez ici pour sélectionner'
et si autre text , ben autre texte...

Sinon, par contre y te manquerai un parametre, pour ajouter des evenements javascript ou des styles.

bon code , a+

Commentaire de malalam le 10/07/2006 09:39:33 administrateur CS

Stepibou => quelle différence tu fais entre $selected = 0, et $selected = '', dans les paramètres d'une fonction...?
Et tu te trompes sur son utilisation, je pense. Il prend pour valeur un entier, l'id dans la bdd correspondant à la valeur d'une option, pour que ce soit celle-ci qui soit sélectionnée par défaut.
Le defaultSelected n'a rien à voir : c'est juste un texte pour mettre une 1ère option à blanc, indiquant à l'utilisateur ce qu'il faut faire.

Commentaire de stepibou le 10/07/2006 14:00:19

salut!

ouai, ok, oué, j'y avais plus ou moins pensé apres coup... donc en effet tu a bien besoin des deux parametres distincts , (ce que je proposais était un bidouillage..)

Mais il faudra eventuellement rajouter l'autre paramètre dont je parlais!

Sinon, malalam, ta classe de formulaire est beaucoup plus complète, et presque plus simple.. lol

bye

Commentaire de malalam le 10/07/2006 14:29:24 administrateur CS

Presque... ;-)

Commentaire de mdupras le 23/02/2007 16:43:20

Je suis débutant avec PHP. Je trouve cette fonction très intéressante mais effectivement il serait très intéressant d'avoir un exemple complet afin de nous permettre de l'utiliser plus rapidement. Je dois créer une lsite déroulante à partir de données lues d'une Table de Base de données Mysql.
Merci à l'avance. Je cherche encore a intégrer tout cela.

Commentaire de fafakart le 01/06/2007 15:42:24

Bonjour,

je voudrais savoir comment on fait pour générer une liste déroulante à partir d'une table de la base de donnée en php.

merci d'avance pour vos reponse

Commentaire de elodie77 le 10/07/2007 21:59:30

Bonjour,

J'ai fait une liste déroulante lié à une table qui marche nikel..
Mais coment faire pour supprimer les doublons lors de la selection ou de l'affichage???

Merci...

Commentaire de Vince66 le 11/07/2007 08:50:42

Bonjour,
>Fafakart :
Voir le script plus haut... :)

>Elodie77
Pour éviter les doublons, tu peux utiliser la fonction DISTINCT dans ta requête SQL. :)

Commentaire de fatatra le 14/09/2007 16:32:38

Bonjour;
Parfait ce code, seule une petite question subsite pour moi qui débute.
Comment diable fait t'onb pour executer du code html contenu dans une variable php??

en gros qd j'utilise cette fonction ca passe puisque je ne génére pas d'erreur mais rien ne s'affiche, aucune liste déroulante a l'horizon!!

Merci de votre aide.

Commentaire de fatatra le 14/09/2007 16:48:27

en faite g trouver tout seul, je fait echo creer_select(les parametres...) et j'ai une liste qui s'affiche,

dernier probleme les valeur qu'a recuperer la fonction dans la tables font des lignes blanches dans la liste déroulante??? en gros ca cette fonction me genere ce code:

<select name="liste joueurs">
<option value="0" selected="selected">Cliquez ici pour sélectionner</option>
<option value="med" selected="selected"></option>
<option value="reg" selected="selected"></option>
<option value="seb" selected="selected"></option></select>    </body>

Une idée du pourquoi??

Commentaire de Vince66 le 14/09/2007 16:48:43

un simple "echo" pour afficher le résultat.
Exemple :
echo creer_select('SELECT `id`, `libelle` FROM `ma_table`', 'ma_liste');

Commentaire de Vince66 le 14/09/2007 16:51:23

Le premier champ de ta requête doit être l'identifiant et le deuxième doit être le texte à afficher dans la liste.
Voir l'exemple que j'ai donné ci-dessus qui est, je pense, le plus simple à comprendre. :)

Commentaire de fatatra le 14/09/2007 17:03:00

ok g compris tout seul merci!

Commentaire de fatatra le 14/09/2007 17:04:42

merci pour tout vince66, j'avais pas vu tes commentaires mais c'est exactement ca, coool.

Commentaire de jphilippev le 14/01/2008 11:07:39

bonjour c'est à peu près ca que je cherchais
juste une question comment fait t'on si on veut effacer des champs qui sont identiques
genre il y a 5 rouges 3 bleus et 8 jaunes et avoir seulement une liste qui reprend rouge, bleu et jaune???

Commentaire de Vince66 le 14/01/2008 11:14:08

Ca se joue au niveau de ta requête SQL ça. Je ne connais pas la structure de ta table mais un DISTINCT pourrait faire l'affaire :)

Commentaire de jphilippev le 14/01/2008 11:41:06

merci vince après recherche j'ai vu aussi le GROUP BY

Commentaire de Cko4 le 19/02/2008 15:19:54 8/10

Merci beaucoup pour cette source, après avoir appliquer quelques modifications pour combler certains de mes besoins, cette fonction m'est très utile.

Commentaire de Santana123451 le 19/03/2008 08:22:48

Bonjour a tous,
svp, je veux faire apparaitre une liste déroulante a partir d'une autre liste...
voici l'astuce :
<< On choisissons un champ de la liste une autre liste apparait devant cette liste, et on peut choisir a partir
de la nouvelle liste un champ qui va selectionner untableau de la base de donnée >>

Commentaire de Vince66 le 19/03/2008 08:54:40

Avec de l'AJAX pourquoi pas.

Commentaire de Louis13 le 12/04/2008 11:18:37

Comment récupérer la valeur sélectionnée dans la liste déroulante
merci

Commentaire de Vince66 le 14/04/2008 09:05:42

Bonjour,
En mettant la liste déroulante dans un formulaire et en validant celui-ci peut-être ? :-)

Commentaire de Louis13 le 14/04/2008 09:39:36

c'est fait mais selon l'exemple en ecrivant echo creer_select(...), je n'arrive pas à retrouver la valeur du select choisi

Commentaire de Vince66 le 14/04/2008 14:29:13

J'avoue que je ne comprends pas bien la question...
echo creer_select() te permet de générer le code HTML d'une liste déroulante, rien d'autre.

Si tu veux récupérer la valeur de la liste déroulante, il te faut la mettre entre des balises <form></form> et récupérer la valeur via $_POST sur la page suivante.

Commentaire de programmeurjs le 27/10/2008 09:12:17

Bonjour
J'ai copié la fonction que vous avez écris en haut, j'ai ajouté quelques instructions(en dehors de la fonction) pour me connecter à la base de données puis j'ai appelé la fonction mais la liste ne s'est pas affichée.
est ce que vouus avez une idée pourquoi elle ne s'est pas affichée ?

Commentaire de claude77260 le 24/07/2011 10:42:08

Bonjour ,
j'ai voulu me servir de cette fonction qui est sur le papier très utile, mais l'auteur n'a pas fait beaucoup d'efforts pour les explications
Dommage de ne pas avoir pris une heure pour rendre service à la majorité des novices, comme moi !!
heureusement que VINCE66 a donné qq pistes

pour l'appel de la fonction dont le nom est "combo_choix" j'ai fait ceci

////////////////////////////////////////////////////////////////////////////////
//           Déclaration du tableau contenant les combo
////////////////////////////////////////////////////////////////////////////////

echo'<table align=center cellspacing=2 cellpadding=2 border=1 width=90%>';
echo'<tr>';

///////////////////////////////////////////////////////////////////////////////
//fonction liste deroulante Bibliotheque Genre
////////////////////////////////////////////////////////////////////////////////
echo'<td>';
echo'<form action="liste_bibliotheque_ajouter.php" methode="post" name="form_genre"';
echo "<h4>Genre de l'ouvrage :</h4>" ;
echo'</td>';
echo'<td>';
//Appel à la fonction liste_choix
echo combo_choix('SELECT `id_bibliotheque_genre`, `bibliotheque_genre` FROM `adh_bibliotheque_genre`','form_genre');
echo'<input type=submit value= GO>';
echo'</form>';
echo'</td>';
echo'</tr>';
// Fin

on envoie le formulaire à la page php que l'on est en train d'écrire
je récupère bien la combo avec toutes les lignes de la table

ensuite le but est quand même de récupérer les variables de la combo
et là çà coince, je ne récupère rien



//********************Recuperation des variables de la combo*************************
if(isset($_POST['submit'])) //si vrai alors---Determine si  n'est pas vide et on recupere les input du formulaire
{
echo "Vous avez choisi : <b>" . $_POST[bibliotheque_genre] . "</b><br>";
$id_genre=$_POST['id_bibliotheque_genre'];
$genre=$_POST['bibliotheque_genre'];
}

l'echo devrait au moins me retourner le champ de l'intitulé de la combo ???

Si QQ'un passe encore par ici merci de m'aider

Bonne journée



Commentaire de Vince66 le 25/07/2011 12:33:37

"l'auteur n'a pas fait beaucoup d'efforts pour les explications [...]
heureusement que VINCE66 a donné qq pistes"

Vince66 (donc moi) EST l'auteur.
Désolé si mes explications ne sont pas suffisantes et content que mes pistes t'aient plu :D

Mais je te rassure, je reçois toujours des alertes e-mail lorsque quelqu'un poste un commentaire. Je m'efforce d'y répondre autant que faire se peut.

Il est normal que tu ne récupères rien. Dans ta fonction "combo_choix", tu as donné le nom "form_genre" à ta liste déroulante. Donc lors de la récupération, tu dois appeler la variable POST du même nom.

Alors 2 choses déjà :
- Lorsque que tu appelles une variable POST, le nom entre crochets doit être entre quote également : $_POST['bibliotheque_genre'] (sauf dans de rare cas où c'est une constante).
- "bibliotheque_genre" est le nom d'un champ de ta table. Seulement ta liste déroulante ne renvoi que le premier champ appelé dans ta requête select. Donc ici, ta liste déroulante renverra id_bibliotheque_genre.

Enfin, pour récupérer ce que te renvoi ta liste, il faut l'appeler par le nom de ta liste et non par le nom du champ de ta table... Tu définis le nom de ta liste dans la fonction combo_choix. Ici, c'est "form_genre" donc la variable $_POST['form_genre'] te renverra ta valeur id_bibliotheque_genre.

Pour info, le deuxième champ de ta requête (bibliotheque_genre) n'est là pour que l'affichage. Pour que les personnes utilisant ton application sachent ce qu'ils sélectionnent.

Ici une correction de ton code :
//********************Recuperation des variables de la combo*************************
if(isset($_POST['submit'])) //si vrai alors---Determine si  n'est pas vide et on recupere les input du formulaire
{
   echo "Vous avez choisi : <b>" . $_POST['id_bibliotheque_genre'] . "</b><br>";
   $id_genre=$_POST['id_bibliotheque_genre'];

   $requete_genre = mysql_query('SELECT bibliotheque_genre FROM adh_bibliotheque_genre WHERE id_bibliotheque_genre = '.$id_genre);
   $genre=mysql_result($requete_genre, 0, 'bibliotheque_genre');
}

Petite explication sur la correction :
J'ai changé le nom de la variable POST dans ton echo. Celle-ci retourne donc l'id.
De la même manière, j'enregistre l'id dans ta variable $id_genre.
Enfin pour avoir le genre, j'ai effectué une requête sur la base afin de le récupérer à partir de l'id.

Voilà.
J'espère que mes explications sont assez claires pour toi.
Si ce n'est pas le cas, précise moi quelle partie ne l'est pas et j'essaierai de l'expliquer autrement.

Bonne journée

Commentaire de Vince66 le 25/07/2011 12:41:56

Un dernier petit conseil :
Evite de faire des echo à tout va comme tu l'as fait pour l'affichage de ton formulaire.
Cela sollicite le serveur pour pas grand chose.

Tu aurais pu faire avec du html et du script php inclus au bon endroit :
<!-- Commentaire HTML
////////////////////////////////////////////////////////////////////////////////
//           Déclaration du tableau contenant les combo
////////////////////////////////////////////////////////////////////////////////
Fin du commentaire HTML -->
<form action="liste_bibliotheque_ajouter.php" methode="post" name="form_genre">
<table align=center cellspacing=2 cellpadding=2 border=1 width=90%>
   <tr>
      <td><h4>Genre de l'ouvrage :</h4></td>
      <td>

<?php
///////////////////////////////////////////////////////////////////////////////
//fonction liste deroulante Bibliotheque Genre
////////////////////////////////////////////////////////////////////////////////
//Appel à la fonction liste_choix
echo combo_choix('SELECT `id_bibliotheque_genre`, `bibliotheque_genre` FROM `adh_bibliotheque_genre`','form_genre');
?>

      <input type=submit value= GO>
      </td>
   </tr>
</table>
</form>
// Fin

Commentaire de claude77260 le 25/07/2011 16:26:43

Bonjour,
excuse moi si mes propos ont choqués, ce n'était pas le but
mais tu sais pour un néophyte de mon age, pas facile de se mettre au php pour le compte de mon association
http://cg-aisne.org
je te remercie, tu es un vrai pédagogue, j'ai tout compris, enfin j'espère
je rentre de rv, je vais mettre tout ça au propre
bonne soirée et merci pour ce script qui peut servir à la plupart des débutants

Claude

Commentaire de Vince66 le 25/07/2011 16:43:10

Pas tant que ça, je me suis embrouillé dans en mettant en forme mon explication et le code que j'ai corrigé est toujours faux. Mea Culpa.
Voilà le bon code :

//********************Recuperation des variables de la combo*************************
if(isset($_POST['submit'])) //si vrai alors---Determine si  n'est pas vide et on recupere les input du formulaire
{
   echo "Vous avez choisi : <b>" . $_POST['form_genre'] . "</b><br>";
   $id_genre=$_POST['form_genre'];

   $requete_genre = mysql_query('SELECT bibliotheque_genre FROM adh_bibliotheque_genre WHERE id_bibliotheque_genre = '.$id_genre);
   $genre=mysql_result($requete_genre, 0, 'bibliotheque_genre');
}

C'était l'appel de la variable $_POST qui était fausse. Là ça devrait être bon :)

Commentaire de claude77260 le 25/07/2011 17:56:32

j'ai mis au propre les modifs que tu m'as proposées

j'ai un message d'erreur sur la ligne $id_genre=$_POST['form_genre'];
Notice: Undefined index: form_genre in /data/ftp/.../www/adh/liste_bibliotheque_ajouter.php on line 88

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /data/ftp/.../www/adh/liste_bibliotheque_ajouter.php on line 91

Par contre si je laisse $id_genre=$_POST['id_bibliotheque_genre']; la combo fonctionne correctement, cad que je récupère bien id_bibliotheque_genre
sauf un texte parasite qui s'affiche entre le texte de la combo et go   select id_bibliotheque_genre, bibliotheque_genre from adh_bibliotheque_genre

mais ca fonctionne correctement et je retrouve bien l'affichage du résultat id_bibliotheque_genre et bibliotheque_genre dans mon formulaire ajouter

et l'ajout et correctement fait

Donc il ne me reste plus qu'a me débarrasser de ce texte  select id_bibliotheque_genre, bibliotheque_genre from adh_bibliotheque_genre

Bonne soirée

Commentaire de Vince66 le 26/07/2011 09:35:23

Bonjour,
une question :
As-tu modifié la fonction originale ?

Car une partie de ton problème pourrait bien venir de là.
Si c'est le cas, peux-tu me copier ta fonction combo_box ?

Commentaire de claude77260 le 26/07/2011 14:19:19

bonjour Vince66
merci pour ta réponse

hier j'avais l'erreur, aujourd'hui tout est ok, une merdouille qui devait trainer dans la mémoire du navigateur ??

Je te remercie pour ta patience

je joins ici le script d'appel de la fonction de VENCE66 qui fonctionne très bien:
pour une table adh_bibliotheque_genre qui contient 2 champs
id_bibliothéque_genre et un champ bibliotheque_genre (donc un id et un intitulé)

////////////////////////////////////////////////////////////////////////////////
//           Déclaration du tableau contenant la combo
////////////////////////////////////////////////////////////////////////////////

echo'<table align=center cellspacing=2 cellpadding=2 border=1 width=90%>';
echo'<tr>';
echo'<td>';
echo'<form action="liste_bibliotheque_ajouter.php" method="post" name="form_genre"';
echo "<h4>Genre de l'ouvrage :</h4>" ;
echo'</td>';
echo'<td>';

//*******************Appel à la fonction creer_select****************************
echo creer_select('SELECT `id_bibliotheque_genre`, `bibliotheque_genre` FROM `adh_bibliotheque_genre`','id_bibliotheque_genre');

echo'<input type="submit" name="submitbouton" value="GO">';
echo'</form>';
echo'</td>';
echo'</tr>';

//********************Recuperation des variables de la combo*************************
if(isset($_POST['submitbouton'])) //si vrai alors--- on recupere les input du formulaire
{
$id_genre=$_POST['id_bibliotheque_genre']; //on recupere l'id du formulaire de la combo

// on fait un select pour recuperer bibliotheque_genre dans la table
$requete_genre = mysql_query('SELECT bibliotheque_genre FROM adh_bibliotheque_genre WHERE id_bibliotheque_genre = '.$id_genre);
$genre=mysql_result($requete_genre, 0, 'bibliotheque_genre');
}
// on a donc les deux variable qui peuvent etre recupérées pour un affichage ou comme champ d'un formulaire d'ajout par exemple


//Merci à vence66

////////////////////////////////////////////////////////////////////////////////
//****************Formulaire ajouter *******************************************
////////////////////////////////////////////////////////////////////////////////

echo "<form name=\"frmAjout\" method=\"post\" >";
//echo "<tr>";
echo "<tr><td>&nbsp;&nbsp; id_genre: </td><td><input type=\"text\" size= 5 name=\"id_genre\" value=\"".$id_genre."\" <i>&nbsp;&nbsp;&nbsp; ";
echo"&nbsp;&nbsp; genre: <input type=\"text\" size= 95 name=\"genre\" value=\"".$genre."\" <i>&nbsp;&nbsp;&nbsp; </td>";echo "</tr>";
echo "<tr><td>&nbsp;&nbsp; descriptif: </td><td><input type=\"text\" size= 95 name=\"descriptif\" value=\"".$descriptif."\" <i>&nbsp;&nbsp;&nbsp; </td></tr>";
echo "<tr><td>&nbsp;&nbsp; titre: </td><td><input type=\"text\" size= 95 name=\"titre\" value=\"".$titre."\" <i>&nbsp;&nbsp;&nbsp; </td></tr>";
echo "<tr><td>&nbsp;&nbsp; auteur: </td><td><input type=\"text\" size= 95 name=\"auteur\" value=\"".$auteur."\" <i>&nbsp;&nbsp;&nbsp; </td></tr>";
// etc......

Commentaire de claude77260 le 23/09/2011 17:20:15

Bonjour vence66

ta fonction fonctionne très bien à toutes les sauces ou presque j'ai un problème
quant on a 2 formulaires dans la même page, le submit du formulaire de la fonction remet a zéro toute les variables de la page et les variables reçues en post d'une autre page
je m'explique je reçois une liste d'email d'une page php en post ou en get
elle s'affiche bien dans mon formulaire général
par la combo je choisi un modèle d'émail a envoyer à la liste
quant je confirme le choix de la combo
toute la liste a disparue et le modèle d'émail est bien affiché dans le textarea
je pense du a rechargement de la page pour afficher le modèle

as tu eu déjà ce problème ??  y a t il une solution ???

Merci de m'aider dans la dernière ligne droite tout le reste fonctionne
pour l'instant je fais un
ctrl A sur le champ BBC
CTL C
je charge le modèle et ensuite un
ctrl V pour remettre la liste des e mails adhérents dans le champ
et je remplis le reste des champs du formulaire d'envoi

pas simple  !!!

Commentaire de Vince66 le 26/09/2011 14:07:22

Bonjour,
Je n'ai pas bien compris le fonctionnement de ton formulaire mais effectivement si tu changes de page lors d'une action, tu dois faire passer tes variables sur la page suivante soit par POST, soit pas GET, soit pas SESSION. Les variables ne se transmettent pas de page à page toutes seules. :-)

Commentaire de claude77260 le 05/10/2011 08:24:54

Bonjour vence66

merci de ta réponse et excuses le retard,
quelques jours de congés les pieds en bouquets de violettes, ça fait du bien
le script est celui ci dessus du 26 juillet
moi je ne change pas de page, mais le fait de charger le contenu de la Function combo par submitbouton recharge la page et remet a zéro toutes les variables de la page ou reçues par post dans la page ??????????
les deux formulaires ne sont pas imbriqués (voir script)
merci de tes lumieres

à+

Commentaire de Vince66 le 05/10/2011 08:58:24

A partir du moment où tu recharges ta page, c'est comme si tu en changeais. Ce fonctionnement est tout à fait normal. Comme dit précédemment, tu dois stocker tes variables soit :
- dans ton formulaire via des champs cachés (type="hidden"), tu retrouveras alors tes variables dans le tableau $_POST[]
- dans ton url mais ces variables seront visibles par l'utilisateur, tu les retrouveras dans le tableau $_GET[]
- dans une session PHP. Tu les retrouveras alors dans $_SESSION[]

Commentaire de claude77260 le 05/10/2011 11:51:31

J'ai bien essayé par session
je récupère l'émail du destinataire dans une session

session_start();
$_SESSION['email_dest']= $_GET['email_adh'];
//echo $_SESSION['email_dest']; // décocher pour voir si on récupère bien le GET en provenance de la liste_adh

je récupère bien la $_SESSION dans mon formulaire

echo "<tr><td>&nbsp;&nbsp;Email Destinataire : </td><td><input type=\"text\" size= 55 name=\"email_dest\"   value=\"". $_SESSION['email_dest']."\"</td></tr>";

Mais dés que choisi un modèle par la function  , les données de $_SESSION['email_dest']ne sont plus disponibles

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Liste déroulante (html) [ par Dede35 ] Bonjour, J'ai une liste déroulante et lorsque je clike le bouton ok pour valider la sélection, la liste déroulante se remets à la 1ère item. Or moi j Formulaire avec plusieurs actions [ par PsyCaDi ] Bonjour,J'ai un pb sur un formulaire.J'ai une liste déroulante et 2 boutons.Je voudrais qu'un bouton execute une requête SQL d' INSERT et que l'autre Liste déroulante MAJ???? [ par rich25200 ] Bonjour,J'ai une liste déroulante alimenter par une table prenons par exemple la table famille ou dans ma liste il y a tout les noms de famille..Je ve liste déroulante / popup [ par CC24 ] bonjour à tous !je fais appel à vous car j'ai un problème que je n'arrive pas à résoudre. je m'explique : sur ma 1ère page, j'ai une liste déroulante. premiere ligne liste déroulante [ par robinou ] Bonjour,Avec ce script, aucun problème pour le passage de la variable et la re-direction. Le seul problème est qu'il ne sélectionne pas la première li Liste déroulante en php [ par iomega ] Bonjour à tous!!!J'ai une liste déroulant ou je séléctionne une dateavec un form action et lorsque je sélectionne cette date le problème c'est que cel systeme de panier de selection... [ par h2h ] voila sur mon appli lutilisateur a la possibilité de selectionné plusieurs critere et selon ses choix une liste est générer ( une liste de bien presen Liste déroulante [ par iomega ] Bonjour à tous,voici mon p'tit problème qui me casse la tete de puis hier je suis en train de faire un moteur de recherche multi-critères et j'ai une Liste déroulante lié a une base MySQL [ par pi0up51 ] Je sais faire ça en asp mais pas en php, ça doit pas être bien compliqué mais si qqn peut m'aider ;)@tte et bonn' prog'pi0up51http://www.progotop.ht.s Liste déroulante mettre en couleur la sélection [ par thedentiste ] Bonjour tlmvoila mon probleme j'essaye d'affecter différentes couleurs à chaque ligne sélectionner dans ma liste déroulante à sélection multiple.par e


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 5,008 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales