Bonjour à tous,
j’essaye de faire un double foreach sur mon site, seulement ce double foreach m'affiche deux fois les informations.
Sur ma fonction je passe deux tableaux :

$d'variable1'] = $this->Model1->find('all');
$d'variable2'] = $this->Model2->find('all');
$this->set($d);

dans mu vue je fais mon double foreach :

<?php foreach ($variable1 as $v): ?>
    <?php foreach ($variable2 as $k): ?>
        <?php if($k'Model2']'id'] == $v'Model1']'id']): ?>
            <?php echo $v'Model1']'name']; ?></p>
        <?php else: ?>
            <?php echo 'A venir'; ?></p>
        <?php endif; ?>
    <?php endforeach; ?>
<?php endforeach; ?>

Dans ce cas, il liste la variable1 et il liste aussi la variable2 qui normalement doit remplacer ceux qui correspondent à la variable1.
Merci.....

2 réponses


Bonjour,

Qu'est ce que contiennent tes tableaux ? Le problème vient peut-être de leurs structures...

zenkiai
Auteur

Bonjour Shadow,
Merci de ton aide, j'ai tellement essayé de facon différente que je n'y arrive plus.
Voici mon debug :

Ma fonction dans mon controller UsersController.php :
 function badge(){
        $this->loadModel('BadgeUser');
        $this->BadgeUser->contain('Badge','User');
            $d'badgesusers'] = $this->BadgeUser->find('all');
        $d'badges'] = $this->BadgeUser->Badge->find('all');  
        $this->set($d);
ma vue badge.ctp
 <?php foreach ($badges as $k => $v): ?>
            <?php foreach ($badgesusers as $kk => $vv): ?>
                <?php if($vv'BadgeUser']'badge_id'] == $v'Badge']"id"]): ?>
                    <div class="badges">
                        <p class="badgeTitle bebas textcenter"><?php echo $v'Badge']'name']; ?></p>
                        <img src="<?php echo $v'Badge']'url_image']; ?>">
                        <p class="badgeText textcenter"><?php echo $v'Badge']'content']; ?></p>
                    </div>
                <?php else: ?>
                    <div class="badges">
                        <p class="badgeTitle bebas textcenter"><?php echo $v'Badge']'name']; ?></p>
                        <img src="/img/badges/badge0.png">
                        <p class="badgeText textcenter"><?php echo $v'Badge']'content']; ?></p>
                    </div>
                <?php endif; ?>       
            <?php endforeach; ?>
        <?php endforeach; ?>
et le debug des tableaux :
app/Controller/UsersController.php (line 157)
array(
    'badgesusers' => array(
        (int) 0 => array(
            'BadgeUser' => array(
                'id' => '1',
                'badge_id' => '1',
                'user_id' => '1'
            ),
            'User' => array(
                'id' => '1',
                'username' => 'truc',
                'mail' => 'truc@gmail.com',
                'role' => 'admin',
            ),
            'Badge' => array(
                'id' => '1',
                'name' => 'badge1',
                'content' => 'avoir le badge1',
                'url_image' => '/img/badges/badge1.png'
            )
        ),
        (int) 1 => array(
            'BadgeUser' => array(
                'id' => '2',
                'badge_id' => '2',
                'user_id' => '1'
            ),
            'User' => array(
                'id' => '1',
                'username' => 'truc',
                'mail' => 'truc@gmail.com',
                'role' => 'admin',
            ),
            'Badge' => array(
                'id' => '2',
                'name' => 'badge2',
                'content' => 'avoir le badge2',
                'url_image' => '/img/badges/badge2.png'
            )
        )
    ),
    'badges' => array(
        (int) 0 => array(
            'Badge' => array(
                'id' => '1',
                'name' => 'badge1',
                'content' => 'avoir le badge1',
                'url_image' => '/img/badges/badge1.png'
            )
        ),
        (int) 1 => array(
            'Badge' => array(
                'id' => '2',
                'name' => 'badge2',
                'content' => 'avoir le badge2',
                'url_image' => '/img/badges/badge2.png'
            )
        ),
        (int) 2 => array(
            'Badge' => array(
                'id' => '3',
                'name' => 'badge3',
                'content' => 'avoir le badge3',
                'url_image' => '/img/badges/badge3.png'
            )
        )
    )
)