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

Symfony PHP Discussion :

Comment afficher la valeur max [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut Comment afficher la valeur max
    Bonjour,

    Une relation de type n-m entre les tables formation et membre m'a permis d'obtenir un schema :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
     
    Formation:
      connection: doctrine
      actAs:
        Timestampable: null
      tableName: Formation
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
        niveau:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
     
    JMembreFormation:
      connection: doctrine
      actAs:
        Timestampable: null
      tableName: j_membre_formation
      columns:
        membre_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: false
        formation_id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: false
      relations:
        Formation:
          onDelete:       CASCADE
        Membre:
          onDelete:       CASCADE
     
    Membre:
      connection: doctrine
      tableName: Membre
      columns:
        id:
          type: integer(4)
          fixed: false
          unsigned: false
          primary: true
          autoincrement: true
     
        nom:
          type: string(50)
          fixed: false
          unsigned: false
          primary: false
          notnull: true
          autoincrement: false
     
      relations:
        Formations:
          class: Formation
          refClass: JMembreFormation
          foreignAlias: Membres
          local: membre_id
          foreign: formation_id
    Je voudrais afficher la dernière formation obtenue par membre. Mais j'ai ceci :



    Au lieu de ceci :


    J'ai crée une methode getLastFormationByMembre dans la classe qui recupere les dernieres formations obtenues par membre, mais je n'arrive pas à l’intégrer dans la vue index du module concerné (ici membre).

    Ma methode :

    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
     
    class JMembreFormationTable extends Doctrine_Table
    {
        public static function getLastFormationByMembre(){
     
            $q = Doctrine_Query::create()
                    ->SELECT('max(f.niveau) AS Maxfom,j.membre_id AS Membre')
                    ->FROM('JMembreFormation j')
                    ->leftJoin('j.Formation f')
                    ->groupBy('j.membre_id');
     
    //                return $q->fetchOne();
                    return $q->execute();
     
        }
     
     }
    Quelqu'un a -t'il une idée à me proposer pour afficher le libellé de la dernière formation obtenue ?

  2. #2
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    Si tu veux obtenir seulement le dernier champs (ce que j'ai compris), il faut rajouter une clause :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORDER BY `champ` DESC LIMIT 1
    Bien sure à la sauce Doctrine.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut
    La clause LIMIT 1 , je ne pense pas. Attend un schema vaut mieux toujours que de longues phrases.

    Tu as ceci :

    Membre
    1 Jean paul
    CAP, BAC, BTS
    2 Pierre Daniel
    BAC, LICENCE, MASTER

    Ici le dernier diplôme obtenu par chacun :

    Jean Paul => BTS
    Pierre Daniel => MASTER


    c'est ce que je veux .

  4. #4
    Membre très actif Avatar de Shuty
    Homme Profil pro
    Ingénieur en développement
    Inscrit en
    Octobre 2012
    Messages
    630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur en développement
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2012
    Messages : 630
    Par défaut
    Je voudrais afficher la dernière formation obtenue par membre. Mais j'ai ceci :
    Le LIMIT 1 va te donner le dernier champs en effet. Autrement tu peux boucler ta requête.

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut
    Cela renvoie toujours une collection.

  6. #6
    Membre confirmé
    Inscrit en
    Janvier 2011
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 63
    Par défaut
    Rappel : la méthode que j'ai postée renvoie déjà une valeur max (donc la derniere formation) par membre.

    Je le sais parce que j'ai ecrit un test unitaire qui marche nickel.
    et dans mon test unitaire, j'affiche ladite valeur de la sorte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    $lastformationIndirecte = JMembreFormationTable::getLabelNiveauFormation();
    $t->is($lastformationIndirecte[0]->Maxfom, 1);
    Pour appeler cette methode dans la vue indexSuccess.php de mon module membre, il faut juste faire par exemple :

    $lastforms = JMembreFormationTable::getLabelNiveauFormation()

    echo $lastforms->Maxform

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

Discussions similaires

  1. [VxiR2] Comment afficher une valeur en fonction du max d'une autre valeur
    Par mp.giraud dans le forum Deski
    Réponses: 3
    Dernier message: 06/05/2009, 16h58
  2. Réponses: 20
    Dernier message: 30/05/2006, 13h24
  3. comment afficher les valeurs d'une semaine
    Par duck54 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 28/05/2006, 22h57
  4. [FPDF] comment afficher une valeur formatée
    Par fabrice1596 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 05/04/2006, 19h37
  5. Comment afficher une valeur contenue dans une variable ?
    Par manubrard dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2006, 15h56

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