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

Zend Framework PHP Discussion :

boucler sur des elements selon des categories


Sujet :

Zend Framework PHP

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut boucler sur des elements selon des categories
    Bonjour,

    Voila je rencontre un petit problème avec mon code.


    Je cherche à afficher des elements selon des catégories, Ex :
    j'ai 3 catégories (possion, champignon, recette_confortables)
    chacune de ces catégories contient des recettes.
    je dois afficher 5 recette pour chaque catégorie
    Ce que je fais
    comme je bosse sur Zend, j'ai un controller et une view:
    voila e que je fais dans mon controller :
    ** controller : **
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $this->view->listeCoursLiveFuturs = array(
        $Courslive3Model->getPlaylistContent(5, 5),
        $Courslive3Model->getPlaylistContent(21, 5),
        $Courslive3Model->getPlaylistContent(23, 5)
       );
    *View : *
    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
     
     <?php 
                $i = 0;
                $nbr_thematique_max = 12; 
                    foreach ($this->listeCoursLiveFuturs as $allplaylist) :  ?>
     
                <?php if($i == 0 ):?>
                    <div class="row-fluid blockrow">
                <?php elseif($i == $nbr_thematique_max):?>
                    </div>
                <?php elseif ($i % 5 == 0): ?>
                    </div>
                    <div class="row-fluid blockrow">
                <?php 
                endif; ?>
                <?php $allplaylist[$i]['image'] = url('media') . "courslive3-b" . $allplaylist[$i]['id_courslive3']; ?>
                    <?php // $image = url('media') . 'playlist-b' . $allplaylist['id_courslive3']; ?>
                    <div class="col-lg-3 suggestion" <?php echo (MDETECT_SUPPORT == 'mobile'?'style="margin: 10px;width: calc(100% - 20px);"':'')?>>
                       <a  href="<?php echo l(array('controller' => 'courslive3', 'action' => 'detail', 'id' => $allplaylist[$i]['id_courslive3']), false, true); ?>" title="<?php echo __('Cours de cuisine en ligne : %1$s', $allplaylist[$i]['libelle']); ?>">
                            <img src="<?php echo $allplaylist[$i]['image']; ?>" alt="<?php echo $this->img_suggestion; ?>" />
                            <div class="banner_img oswald text-center">
                                <div>
                                    <?php echo $allplaylist[$i]['titre']; ?>
                                </div>
                            </div>
                        </a>  
                    </div>  
                        <?php   $i++;  endforeach;  ?>
                </div>

    Ce que je veux

    le visuel dans le navigateur doit être comme ceci :
    poisson : recette1, recette2, ....recette5
    champigon : recette1, recette2, ....recette5
    recette_confortables : recette1, recette2, ....recette5
    les recette seront affichées dans le bloc : <div class="col-lg-3 suggestion..

    Ce que j'obtiens

    le problème avec mon code c'est qu'il m'affiche pour chaque catégorie, une seule recette.
    je n'ai pas su comment géré ça. déja le premier souci est dont le [$i] : $allplaylist[$i] mais je ne sais pas comment régler cela.

    merci d'avance

  2. #2
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je suppose que getPlaylistContent retourne un tableau. Donc $this->listeCoursLiveFuturs contient un tableau de tableaux. Il va donc te falloir une double boucle si tu veux afficher tous les éléments.

    Ce que je ne capte bien, c'est à quoi servent $nbr_thematique_max et le modulo 5.
    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]

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    Bonjour,
    merci pour votre réponse, et désolée si j'ai pris du temps pour répondre je suis encore sur le même code, ne faite pas attention au bout de code que vous m'avez montré, je l'ai viré.
    En fait dans mon controller j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           
     $Courslive3Model = new Default_Model_Courslive3Model();
    // Cette ligne permet d'avoir la liste des 3 premiere Playlists de la DB
     $this->view->listeCoursLiveFuturs = $Courslive3Model->getPlaylistsOfThisCoursLive(null,3);
    [SIZE]// Celui ci permet d'avoir le contenu des playlists, le 1er argument je doit mettre l'ID de la playlist, le 2eme c'est le nombre de ligne de contenu, ici 5 contenu pour chaque Playlist [/SIZE]
    $this->view->categ2 = $Courslive3Model->getPlaylistContent(21, 5);

    Le problème c'est qu'avec ce code je n'obtient qu'une playlist (càd celle qui a l'ID 21), moi je cherche à avoir toutes les 3 premieres Playlist

    Voila mon code complet :

    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
    public function landingaboAction() {
            $userInfo = Zend_Auth::getInstance()->getStorage()->read(); //Better than $_SESSION
            $this->view->prenom =  $userInfo->prenom;
            $Courslive3Model = new Default_Model_Courslive3Model();
            $this->view->listeCoursLiveFuturs = $Courslive3Model->getPlaylistsOfThisCoursLive(null,3);
    //        var_dump($this->view->listeCoursLiveFuturs);
            //LAST REPLAY
    //        $newReplays = $Courslive3Model->getNewReplays(1);
    //        $last_replay = $newReplays[0];
    //        $this->view->last_replay = $last_replay;
     
            //CLASS BY CATEGORY : Les champignons ,Recettes réconfortantes, Recettes réconfortantes 
    //    $this->view->liste = array(
    //         $Courslive3Model->getPlaylistContent($this->view->listeCoursLiveFuturs, 5),
            $this->view->categ2 = $Courslive3Model->getPlaylistContent(21, 5);
    //        $this->view->categ3 = $Courslive3Model->getPlaylistContent(23, 5)
    //    );
    //    foreach ($this->liste as $az) {
    //       echo  $az["courslive3"];
    //    }
                     var_dump($this->view->categ2);
     
            $this->view->replaydujour = $Courslive3Model->getReplayDuJour();
        }
    Du coup à la fin je dois tout afficher via un foreach dans ma VIEW.

    merci

  4. #4
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Histoire d'être sûre : ton problème est sur l'affichage dans la vue ou dans la récupération des données ? Ton var_dump($this->view->listeCoursLiveFuturs); contient bien 3 éléments ?
    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]

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    Exacte, elle affiche les 3 playlist, mais avec le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      var_dump($this->view->categ2);
    j'arrive à afficher les 5 contenus de la playlist qui a l'ID 21 , sauf que moi je cherche à afficher les 5 contenus des 3 playlists.Nom : aaa.png
Affichages : 76
Taille : 582,3 Ko

    je dois avoir à la fin comme sur l'IMAGE ci jointe.

    merci

  6. #6
    Membre du Club
    Femme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2012
    Messages
    285
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2012
    Messages : 285
    Points : 54
    Points
    54
    Par défaut
    hello,
    j'ai trouvé comment y procéder dans le controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $this->view->listeCoursLiveFuturs = $Courslive3Model->getPlaylistsOfThisCoursLive(null,3);
     
    $this->view->courslives = array();
    foreach( $this->view->listeCoursLiveFuturs as $playlist)
    $this->view->courslives[] = $Courslive3Model->getPlaylistContent($playlist["id_courslive3playlist"], 5);
    il me reste juste à l'afficher avec un double foreach dans ma view, mais quelque chose manque puisque j'ai une erreur :
    Notice: Undefined index: id_courslive3 in C:\wamp\www\atelierdeschefs\adc_web\application\modules\default\views\scripts\fr\courslive3\landingabo.phtml on line

    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
     
     <div class="row-fluid blockrow owl-carousel ">
                        <?php foreach ($this->listeCoursLiveFuturs as  $allplaylist) :  ?>   
                        <?php foreach ($this->courslives as $liste) :  ?>   
                        <div>  
                        <?php $allplaylist['image'] = url('media') . "courslive3-b" . $allplaylist['id_courslive3']; ?>
                            <div class="owl-item suggestion thematiques-img-slider <?php echo (MDETECT_SUPPORT == "desktop" || MDETECT_SUPPORT == "tablet") ? "col-lg-3" : "" ?>" <?php echo (MDETECT_SUPPORT == 'mobile'?'style="width: calc(100% - 20px);"':'')?>>
                               <a  href="<?php echo l(array('controller' => 'courslive3', 'action' => 'detail', 'id' => $allplaylist['id_courslive3']), false, true); ?>" title="<?php echo __('Cours de cuisine en ligne : %1$s', $allplaylist['libelle']); ?>">
                                   <img class="relative" src="https://www.atelierdeschefs.com/media/courslive3-b1300" alt="<?php echo $this->img_suggestion; ?>" />
                                    <div class="banner_img oswald text-center">
                                        <div>
                                            <?php echo $allplaylist['titre']; ?>
                                        </div>
                                    </div>
                                </a>  
                            </div>
                        </div>
                        <?php endforeach; ?>
                        <?php endforeach; ?>
                    </div>

  7. #7
    Invité
    Invité(e)
    Par défaut
    Notice: Undefined index: id_courslive3 in C:\wamp\www\atelierdeschefs\adc_web\application\modules\default\views\scripts\fr\courslive3\landingabo.phtml on line ...
    Il manque juste... le numéro de ligne !

Discussions similaires

  1. Recherche de points sur une carte selon des critères donnés
    Par guevar13 dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 10/05/2016, 23h26
  2. Réponses: 7
    Dernier message: 07/08/2012, 15h24
  3. Réponses: 2
    Dernier message: 05/05/2008, 00h25
  4. Disposition des elements selon la resolution
    Par tchoukapi dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 11/06/2007, 13h59
  5. lister des fichiers selon des critères
    Par Corben dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 18/10/2005, 16h52

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