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

Langage PHP Discussion :

liste dans un formulaire / modèle


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut liste dans un formulaire / modèle
    Bonjour tout le monde.
    Comme vous vous en doutez, j'arrive avec un petit problème, celui ci sera facile à résoudre pour vous je suppose, mais étant débutant ...

    je vous l'expose.

    tout d'abord, les tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fournisseur (numero_fournisseur, nom ...)
    articles (numero_article, libelle ...)
    Vous comprendrez bien évidemment qu'un fournisseur propose des articles et non l'inverse.

    ce que je cherche à faire, c'est pouvoir lors de la consultation de mon fournisseur obtenir une liste de tous les objets qu'il propose (numéro_article, libelle, prix ...)

    par exemple mon interface devrait ressembler à celle ci:
    --------------------------------------------------------------------------
    nom fournisseur : fournisseur1
    adresse fournisseur : adresse1
    code postal fournisseur : code_postal1
    ...

    et en dessous de ces informations avoir un tableau qui me permettrai de lister les divers articles :
    numéro_article libelle prix ....
    1 article1 prix1 ....
    2 article2 prix2 ....
    --------------------------------------------------------------------------
    me faut il un modèle ou un formulaire ?
    - si je dois utiliser un modèle, comment ne récupérer qu'un enregistrement ?
    je sais utiliser les fetchAll() mais je ne sais comment ne récupérer qu'un seul enregistrement.

    - si je dois utiliser un formulaire, comment faire pour "bloquer" la saisie des champs de texte (étant donné qu'il ne s'agit que de consultation, aucune modification n'est tolérée).


    petite précision, j'aimerais pouvoir lors de la consultation pouvoir ajouter des articles à la liste des articles proposés par le fournisseur (je possède déja le formulaire d'ajout d'articles. il ne me restera qu'a récupérer le numéro de fournisseur et l'affaire et jouée).


    J'espère avoir été clair.
    Merci d'avance de votre aide qui me sera des plus précieuse !!!

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    il te faut un modèle pour chaque table étendant de Zend_Db_Table_Abstract (voir tutos nombreux sur le net).

    Pour ce qui est de récupérer un seul enregistrement, tu utilises fetchRow() au lieu de fetchAll() ou alors fetchAll()->current()

  3. #3
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Merci de ta réponse Madfrix !

    j'ai tenté ceci dans mon controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function consulterfournisseurAction()
    	{
    			$this->view->title = "Consultation de fournisseur";
    			$fournisseur = new Fournisseurs();
    			$id = (int)$this->_request->getPost('id');
    			$select  = $fournisseur->select()->where('numero_fournisseur='.$id);
    			$row = $fournisseur->fetchRow($select);
    	}
    Cependant une question me vient, lorsque l'on utilise un fetchAll() dans le controller, on utilise un foreach dans le modèle pour les divers enregistrements, mais lorsque l'on utilise un fetchRow que doit on utiliser dans le modèle (dans ce que j'ai lu de la doc, il n'expliquent que la partie controller, enfin si j'ai bien compris)?

    Autre chose, je souhaite lister tous les articles liés au fournisseur sélectionné, et je ne sais comment procéder. fetchRow() ou fetchAll() ??
    (sachant qu'un fournisseur peut proposer plusieurs articles).
    Existerait il in fetchAll() dans lequel il serait possible de poser des conditions ?
    J'ai tenté cette manière,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $prestation = new Prestations();
    $select  = $prestation->select()->where('numero_fournisseur='.$id);
    $this->view->prestation = $prestation->fetchAll();
    Mais cela me retourne tous les articles et non uniquement ceux proposés par le fournisseur sélectionné.

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Après plusieurs essais, mon controller ressemble à ceci :
    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
     
    function consulterfournisseurAction()
    {
            $this->view->title = "Consultation de fournisseur";
     
    	$fournisseur = new Fournisseurs();
    	$id = (int)$this->_request->getPost('id');
    	$select  = $fournisseur->select()->where('numero_fournisseur='.$id);
    	$row = $fournisseur->fetchRow($select);
     
    	$article = new Articles();
    	$select = $article->select();
    	$select->from($article,array('numero_article', 'numero_fournisseur_article', 'libelle_article', 'prix_article', 'code_postal_article', 'ville_article'))
    			->where('numero_fournisseur_article='.$id);
    	$rows = $article->fetchAll($select);							
    }
    Mais malheureusement je rencontre des difficultés avec les fetchRow($select) et fetchAll($select) donc des erreurs "invalid argument for foreach ..." lorsque je tente de récupérer les enregistrements dans mon modèle

    Quelqu'un aurait il une idée ?

  5. #5
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut Résolu !
    J'ai trouvé ! (tout du moins je pense )
    ce n'est surement pas très propre, mais cela fonctionne

    voici le 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
    16
     
    $this->view->title = "Consultation de fournisseur";
     
    $id = (int)$this->_request->getParam('id');
     
    $fournisseur = new Fournisseurs();
    $select = $fournisseur->select();
    $select->from($fournisseur,array('numero_fournisseur', 'nom_fournisseur', 'contact_fournisseur', 'adresse_fournisseur', 'code_postal_fournisseur', 'ville_fournisseur', 'numero_departement_fournisseur','numero_pays_fournisseur', 'telephone_fournisseur', 'fax_fournisseur', 'mail_fournisseur'))
    ->where('numero_fournisseur='.$id);
    $this->view->fournisseur = $fournisseur->fetchAll($select);
     
    $article = new Articles();
    $select = $article->select();
    $select->from($article,array('numero_article', 'numero_fournisseur_article', 'libelle_article', 'prix_article', 'code_postal_article', 'ville_article'))
    ->where('numero_fournisseur_article='.$id);
    $this->view->article = $article->fetchAll($select);
    Je serai ravi que ce code serve à quelqu'un

    Encore merci à Madfrix de m'être venu en aide !!

  6. #6
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Merci pour le code mé est ce que tu travaille avec le modele MVC ou non, si oui alor tu ne doi pas avoir des requete dans le controller tou se qui a une relation avec la base doit etre dans le M du MVC "Modele". plus d'info il ya aussi le fetchOne et le fetchCol.
    pour le fitchRow en recuper les variable comme $variable['nom_champ'] en ne fé pas une foreach parceque c selement une ligne.
    le fetchOne il retourn selement un enregistrement en recupere selement avec le nom de la variable.
    le fetchCol il retourn une collone dune table et tu le recuper avec $variable[$i]

  7. #7
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut oooops
    effectivement m4riachi je travaille avec le modèle MVC. (enfin j'essaie et je débute de la manière la plus lamentable qui soit je dois dire )

    Ou devrais-je placer mes requêtes selon toi ?
    comment ferais tu ??

    Merci de ta réponse

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2009
    Messages
    736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2009
    Messages : 736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class Articles extends Zend_Db_Table_Abstract 
    {
          protectedt $_name = 'articles'
          public function select_all_article()
         {
                $db = $this->getAdapter("dbAdapter");
                $select = $db->select()
                                    ->from($this->_name,array ('numero_article', 'numero_fournisseur_article', 'libelle_article', 'prix_article', 'code_postal_article', 'ville_article'))
                                    ->where('numero_fournisseur_article='.$id);
               return  $db->fetchAll($select);
         }
    }
    Mé moi pour les requete jutilise requete sql c'est plus facile a utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Articles extends Zend_Db_Table_Abstract 
    {
          protectedt $_name = 'articles'
          public function select_all_article()
         {
                $db = $this->getAdapter("dbAdapter");
                $query = "select * from article"
               return  $db->fetchAll($query);
         }
    }

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

Discussions similaires

  1. Mise a jour d'une zone liste dans un formulaire BIS
    Par fsautejeau dans le forum Access
    Réponses: 4
    Dernier message: 03/07/2006, 10h37
  2. Mise a jour d'une zone liste dans un formulaire
    Par lawokgluot dans le forum Access
    Réponses: 3
    Dernier message: 30/06/2006, 11h41
  3. Critère de requête avec une zone de liste dans un formulaire
    Par Dehez dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2006, 12h49
  4. Réponses: 5
    Dernier message: 18/10/2005, 14h09
  5. [STRUTS]Liste dans un formulaire
    Par SEMPERE Benjamin dans le forum Struts 1
    Réponses: 14
    Dernier message: 11/02/2005, 17h10

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