IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Liste déroulante sous forme de fonction


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut Liste déroulante sous forme de fonction
    Bonjour,

    Voilà mon problème:
    je crée un formulaire en php avec plusieurs liste déroulante, j'ai trouvé un code pour faire cette liste déroulant (qui va lire dans une table mysql) mais pour éviter de la réécrire 15 fois je souhaite la mettre sous forme de fonction:
    exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         MenuDeroulant(fabricant,IDFab,NomFabricant)
    voici le code de ma fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function MenuDeroulant($table,$identifiant,$donnee)
    {
    	echo "<SELECT Name=identifiant Size=1><OPTION Value=0></OPTION>";
    	$sql= "SELECT * FROM table ORDER BY IDFab ASC";
    	$rep= mysql_query($sql);
    	while($ligne_liste=mysql_fetch_array($rep))
    	{
    		echo "<OPTION Value=\"".$ligne_liste['identifiant']."\">".$ligne_liste['donnee']."</OPTION>";
    	}
    	echo "</SELECT>";
    }
    Lorsque j'éxécute mon code, je vois apparaitre la liste déroulante avec le nombre de ligne correspondant à ma table mais les champs sont vides.
    Je ne comprends pas pourquoi, avez vous une solution?

    Merci d'avance
    Mikke

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    A aucun endroit tu utilises les variables passées en paramètre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function MenuDeroulant($table,$identifiant,$donnee)
    {
    	echo "<SELECT Name=$identifiant Size=1><OPTION Value=0></OPTION>";
    	$sql= "SELECT * FROM $table ORDER BY IDFab ASC";
    	$rep= mysql_query($sql);
    	while($ligne_liste=mysql_fetch_array($rep))
    	{
    		echo "<OPTION Value=\"".$ligne_liste['$identifiant']."\">".$ligne_liste['$donnee']."</OPTION>";
    	}
    	echo "</SELECT>";
    }
    Comme ça? c'est la mon problème... avec le symbole $ que je ne sais pas qd placer...

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ta liste déroulante doit renvoyer la liste des données contenues dans $table c'est ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function MenuDeroulant( $table, $identifiant, $donnee )
    {
       echo '<select name="' . $identifiant . '"><option value="0"></option>';
       $sql = 'SELECT * FROM ' . $table . ' ORDER BY ' . $identifiant . ' ASC';
       $rep = mysql_query( $sql );
       while ( $ligne_liste = mysql_fetch_array( $rep ) )
       {
          echo '<option value="' . $ligne_liste[$identifiant] . '">' . $ligne_liste[$donnee] . '</option>';
       }
       echo '</select>';
    }
    Je pense qu'un truc comme ça devrait aller. Malheureusement je ne connais pas la structure de ta base ni de tes tables. En tout cas d'après ce que tu nous as dit ça me semble le plus cohérent.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    En fait, toutes les variables en php commencent par le symbole $ (sauf constantes fixées, mais bon on va pas chipoter)
    Donc à partir du moment où tu utilises une variable, elle doit commencer par $
    Pour en savoir plus sur les variables : FAQ PHP : les variables
    Bon courage !
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    ok mais lorsque j'utilise:
    dois-je mettre un $ devant IDFab ?
    J'ai essayer toutes les possibilitées mes champs de données dans le menu déroulant restait vide...
    Encore une question: pourquoi certaines variables sont entre 2 points:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .$ligne_liste['NomFabricant'].

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Excuse moi bisunurs, je n'avais pas vu ta réponse !!!

    J'ai essayer ton code et maintenant ça marche!!
    Oui effectivement je voulais afficher les données de la colonne NomFabricant contenu dans la table fabricant.


    Merci beaucoup,

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Ah encore une question:
    Si c'est possible, j'aimerais pouvoir rajouter un NomFabricant dans ma table fabricant en le tapant dans le menu déroulant. (avec un bouton ok pour valider l'entrée et une requete mysql derrirere!)
    Je sais pas si vous me suivez
    Je sais que dans access c'est possible mais bon c'est autre chose...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Bon désolée, j'aurais pas du parler d'access
    Nan vraiment, vous savez pas comment on peut faire ça?
    (complément d'explication: si dans la liste on ne trouve pas le fabricant voulue, on peut le rajouter dans un champ vide du menu déroulant)
    Merci

  10. #10
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ce n'est pas possible d'écrire dans une liste déroulante, tu es obligé de passer par un champ text.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Ah bon... ok, tant pis! c'est comme ca que je pensais faire au début de toute facon

    encore une chtite question et je vous laisse tranquille:
    C'est quoi les points avant et après la variable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .$ligne_liste[$NomFabricant].
    Merci

  12. #12
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    c'est pour concaténé

    echo "toto"."tata";

    t'affichera tototata

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Okay,
    Je comprends mieux maintenant.
    Bon ben j'ai plus de question pour l'instant!
    Merci à tous de m'avoir aider!
    A bientôt()

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Bonjour,
    j'ai toujours encore un problème avec cette fonction, quelle valeur renvois-t-elle? Je devrais mettre un return mais de quelle variable? (je veut que ce soit la valeur inscrite dans le menu déroulant après l'avoir choisie)
    Merci pour vos éclaircissements!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function MenuDeroulant( $table, $identifiant, $donnee )
    {
       echo '<select name="' . $identifiant . '"><option value="0"></option>';
       $sql = 'SELECT * FROM ' . $table . ' ORDER BY ' . $identifiant . ' ASC';
       $rep = mysql_query( $sql );
       while ( $ligne_liste = mysql_fetch_array( $rep ) )
       {
          echo '<option value="' . $ligne_liste[$identifiant] . '">' . $ligne_liste[$donnee] . '</option>';
       }
       echo '</select>';
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $selectfab = MenuDeroulant(Fabricant,IDFab, NomFabricant)

  15. #15
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Quand tu choisis l'élément dans ta liste déroulante, ça se passe au niveau du client, donc le code PHP a déjà fini de s'exécuter. Ce n'est donc pas possible en l'état.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut

    Mais la fonction renvoit bien quelquechose non?
    je comprends pas...

  17. #17
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Ta fonction ne renvoie rien là, elle ne fait que de l'affichage.

  18. #18
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    Une fonction est un bloc de code PHP destiné généralement à être réutilisé plusieurs fois........
    Il existe deux grands types de fonctions : les fonctions qui retournent une valeur, et celles qui n'en retournent pas (on appelle ces fonctions des procédures).

  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 87
    Par défaut
    Et donc la j'ai créer une procédure???
    Je fais comment pour la transformer en fonction (qui retourne la valeur selectionner) ?

  20. #20
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Quand tu choisis l'élément dans ta liste déroulante, ça se passe au niveau du client, donc le code PHP a déjà fini de s'exécuter. Ce n'est donc pas possible en l'état.

Discussions similaires

  1. Liste déroulante sous forme de dossier
    Par paladice dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 17/09/2013, 14h00
  2. Réponses: 4
    Dernier message: 04/05/2007, 12h23
  3. Réponses: 1
    Dernier message: 03/01/2007, 21h34
  4. Réponses: 1
    Dernier message: 04/07/2006, 23h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo