Bonjour à tous,

J'ai un petit soucis, j'ai actuellement une table episodes et dedans j'ai une colonne saison donc voila çe que donne :

Ce que je voudrais c'est afficher Saison 1, saison 2 etc mais en récupérant une seule fois la saison 1,2 etc

Boucler X fois Saison 1, Saison 1, Saison 1 c'est pas top pour faire des liens sur les saisons ;)

Et pendant que j'y suis un autre petit soucis, quand j'édite un épisode j'ai une erreur sur le champ date : Undefined offset: 1 [CORE/Cake/View/Helper/FormHelper.php, line 2108]

Voila mon formulaire :

<?php echo $this->Form->create('Episode'); ?>
        <?php echo $this->Form->input('serie_id', array('label'=>"Série")); ?>
        <?php echo $this->Form->input('saison', array('label'=>"Saison")); ?>
        <?php echo $this->Form->input('episode', array('label'=>"Numéro de l'épisode")); ?>
    <?php echo $this->Form->input('name', array('label'=>"Titre de l'épisode")); ?>
        <?php echo $this->Form->input('diffusion', array('type' => 'datetime', 'label'=>"Date de diffusion", 'dateFormat' => 'DMY', 'timeFormat' => 'NONE')); ?>
        <?php
        $options = array('0'=>"Non téléchargé", '1' => 'Téléchargé', '2' => 'Vu');
        echo $this->Form->input('info', array(
                'options' => $options,
                'type' => 'select',
                'empty' => false,
                'label' => 'État'
            ));
        ?>
    <?php echo $this->Form->input('id'); ?>
<?php echo $this->Form->end('Envoyer'); ?>

Et je récupère tout bêtement avec un :

$this->Episode->id = $id;
$this->request->data = $this->Episode->read();

Si je supprime la deuxième ligne avec le read je n'ai plus l'erreur mais bien sur les informations ne sont plus récupéré.

Merci d'avance

5 réponses


Le plus simple est de faire une table Saisons, dans laquelle tu mets "Saison 1", "Saison 2" etc, pour chaque série, et au lieu de boucler les épisodes dans ta liste, tu boucles les saisons et tu affiches les épisodes fils.

Grosso-modo, la représentation basique de ta base ressemblerait à ça :

series:
    id, name
seasons:
    id, name, serie_id
episodes:
    id, name, number, season_id, date, is_read

Comme ça tu fais un $this->Serie->find('all'); (en oubliant pas de rajouter les conditions et les contains pour ne pas trouver des champs inutiles) pour ta boucle, et dans ton tableau quelque chose du genre :

<?php foreach($serie as $serie): ?>
<table>
    <thead>
        <tr>
            <th colspan="5"><?php echo $serie'Serie']'name']; ?></th>
        </tr>
    </thead>
    <tbody>
            <?php foreach($serie'Season'] as $season): ?>
           <tr>
               <td colspan="5"><?php echo $season'name']; ?></td>
        </tr>
                <?php foreach($season'Episode'] as $episode): ?>
               <tr>
                   <td><?php echo $episode'number']; ?></td>
                   <td><?php echo $episode'name']; ?></td>
                   <td><?php echo $episode'date']; ?></td>
                   <td><?php echo $episode'is_read']; ?></td>
                   <td>... liens ...]</td>
            </tr>

                <?php endforeach; ?>
            <?php endforeach; ?>
    </tbody>
</table>
<?php endforeach; ?>

C'est pas la façon la plus élégante de faire, mais ça te donne une piste.

Flowcki
Auteur

Merci pour ta réponse.
Ça m'embête de créer une nouvelle table pour ça.
Doit bien être possible de séléctionner une fois 1, une fois 2 etc

Et pas d'idée pour mon read qui me retourne l'erreur ?

Ton erreur ne provient pas quand l'id n'est pas définie ?

Flowcki
Auteur

Pas du tout ;)
Si l'id est correct j'ai l'erreur, par contre si j'ajoute du contenu donc edit/ tout court aucune erreur.

La je sèche désolé, je ne connais pas assez le helper Form avec les dates pour t'aider sur ce coup là ^^;