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

Bibliothèques et frameworks PHP Discussion :

[PEAR][HTML_QuickForm] Résultat d'une requête dans liste déroulante


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut [PEAR][HTML_QuickForm] Résultat d'une requête dans liste déroulante
    Bonjour à tous,
    j'utilise actuellement la classe quickform de pear,et j'ai un problème pour afficher le résultat d'une requête dans un champs select .

    j'ai suivi le tutoriel http://php.developpez.com/cours/pear/html-quickform/ mais lorsque je le reproduit sur ma base rien ne s'affiche dans ma liste déroulante . Il y a bien l'ascenseur dans la liste mais rien d'écrit.

    voici un morceaux de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ...
    $form = new HTML_QuickForm('Inscription','post','#');
     
    $form->addElement('header', null, 'Formulaire d\'inscription');
    $form->addElement('text','pseudo','Pseudo');
    $form->addElement('text','pass','Password');
    $form->addElement('text','email','Email');
    $form->addElement('text','prenom','Prenom');
    $form->addElement('text','nom','Nom');
     
    $paysselect = & $form->addElement('select','pays','Pays');
    $paysselect->load($result);
    $paysselect->loadquery($dsn,'select * from Pays','Pays','titre');
    ...
    Le package DB est bien installé et les autres champs de mon formulaire s'affiche également .

    j'ai l'impression que le problème viens de cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     $paysselect->load($result);
    car je n'est pas de variable $result dans mon code,
    dans le tutoriel non plus l'auteur n'a pas de variable $result déclarée, je ne vois pas comment cela peut marcher.

    Quelqu'un aurait une idée ?

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 12
    Points : 10
    Points
    10
    Par défaut autre problème
    J'ai finalement contourné par cette solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    /****************************************************/
    /*Renvoi le résultat d'une requête dans un tableaux*/
    /****************************************************/
    function select_table($table,$i,$champs)
    {
    	$tab=array();
    	$query="select * from ".$table." order by ".$champs;
    	$result=mysql_query($query) or die(mysql_error());
    	while ($row = mysql_fetch_row($result)) {
    		array_push($tab,$row[$i]);
    	}
    return $tab;
    }
     
     
    /********************/
    /*Code du formulaire*/
    /********************/
     
    $tab = select_table("pays",1,"titre");
    $form->addElement('select','pays','Pays',$tab);
    Mais un autre problème survient. J'ai une table ville comprenant environ 39 000 villes et lorsque que j'affiche le formulaire, il reste bloqué sur le champs ville le temps que la requête se fasse et ça n'affiche pas le reste du formulaire.

    Quelqu'un saurait-il résoudre se problème ?

    je pense regarder du côté ajax mais je ne vois pas vraiment comment l'implémenter

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    Pour le select, si $result est bien un objet DB_Result, alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $paysselect = & $form->addElement('select','pays','Pays');
    $paysselect->loadDbResult($result, 'Pays','titre');
    Si ce n'est pas le cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $paysselect = & $form->addElement('select','pays','Pays');
    $paysselect->loadQuery($dsn, 'select * from Pays', 'Pays','titre');
    Concernant ton problème de chargement, je te conseil de t'organiser comme suit :
    - Chargement de ce qu'il y'a a charger (tu garde ton return $tab de coté)
    - Utilisations dans différentes partie du code pour générer du HTML
    - Sortie du HTML généré

    Donc en gros tu appel ta fonction "select_table" avant de sortir quoi que ce soit. Mais pour ça, tout dépend de la structure de tes pages.

    a+ et bon courage
    Damran

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Afficher résultat d'une requête dans une zone de liste
    Par davidbd dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/08/2013, 22h21
  2. Résultat d'une requête dans une liste
    Par supertoms dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/04/2008, 19h39
  3. Résultats d'une requête dans une liste
    Par marivi dans le forum Langage SQL
    Réponses: 3
    Dernier message: 28/01/2008, 15h09
  4. Réponses: 2
    Dernier message: 21/10/2007, 01h56
  5. Réponses: 1
    Dernier message: 17/06/2007, 11h10

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