Page 1 sur 1

[Résolu] boucle for

Posté : 30 nov. 2010, 09:35
par Cypher_PHP
Bonjour

Je suis en train de construire un slider jQuery avec php et BDD.
Donc j'ai fait un slider de petites images avec liens cliquables. j'ai un souci pour les liens.
Sur chaque image, on doit avoir un différent lien numéroté et là, j'aperçois que chaque image a un numéro identique "6".
c'est normal car il s'arrête à la fin de chaque boucle non stoppée donc à 6.
Or, je voudrais qu'à chaque image, la boucle doit s'arrêter à un numéro.
merci de votre aide
		<div id="movers-row">
			<?php 
					$articles = $this->requestAction('/articles/FiveSlider');
					foreach($articles as $article) {
					$mini= $article['Article']['mini'];
			?>
			<?php 
				for( $i = 2; $i < 6; $i++ ) 
			?> 
			<div><a href="#<?php echo $i;?>" class="cross-link">			
					<?php echo $html->image('/files/images/'.$mini, array('class'=>'nav-thumb'));?>
				</a>
			</div>
			<?php
			}
			?>
		</div>

Re: boucle for

Posté : 30 nov. 2010, 09:57
par xTG
                <div id="movers-row">
                        <?php
                                        $articles = $this->requestAction('/articles/FiveSlider');
                                        $i = 2;
                                        foreach($articles as $article) {
                                        $mini= $article['Article']['mini'];
                        ?>
                        <div><a href="#<?php echo $i;?>" class="cross-link">                   
                                        <?php echo $html->image('/files/images/'.$mini, array('class'=>'nav-thumb'));?>
                                </a>
                        </div>
                        <?php
                        $i++;
                        }
                        ?>
                </div>
Si je comprends bien ce serait plutôt ainsi non ?
Ton foreach ne te ramène qu'une seule image à la fois, donc une simple variable qu'on incrémente (et qu'on fait débuter à 2 ?).

Re: boucle for

Posté : 30 nov. 2010, 10:19
par Cypher_PHP
Je vais essayer de vous expliquer clairement

mon foreach génère des images à partir de la deuxième image jusqu'à 6.
donc l'image 2 créera un lien N°2, l'image 3 créera un lien N°3, ainsi de suite

Re: boucle for

Posté : 30 nov. 2010, 11:19
par Ryle
Il te manque les accolades qui permettront de délimiter le bloc d'instructions auquel quoi s'applique ton for :)
for( $i = 2; $i < 6; $i++ ) 
Résultat, le for s'exécute tout seul, $i s'incrémente jusqu'à 6, puis il passe à la suite du code avec la même valeur...
for( $i = 2; $i < 6; $i++ ) {
....
}

Re: boucle for

Posté : 30 nov. 2010, 11:38
par Cypher_PHP
corrigé mais le résultat arrive à 2345....
comprend rien
<?php
for( $i = 2; $i < 6; $i++ ) {
echo $i;
}
?>

Re: boucle for

Posté : 30 nov. 2010, 11:46
par Ryle
En fait ton résultat est 2, puis 3, puis 4 etc. sauf que si tu ne fais que un echo de $i sans espace, retour à la ligne ou autre, il t'affiche tous les chiffres à la suite et à l'écran tu obtiens 2345 :)

Mais à priori ce que tu veux faire correspond au code qu'à posté xTG :)

Re: boucle for

Posté : 30 nov. 2010, 11:47
par moogli
Salut,

fait un echo $i.'<br />'; et regarde ce que cela donne ;)

@+

Re: boucle for

Posté : 30 nov. 2010, 12:09
par Cypher_PHP
sur la proposition de xTG, le lien est bloqué au nombre 2.
		<div id="movers-row">
			<?php 
					$articles = $this->requestAction('/articles/FiveSlider');
					foreach($articles as $article) {
			?>
				<?php
				 $i = 2;
				?>
			<div>			<a href="#<?php echo $i;?>"
							
				class="cross-link">			
					<?php 
					$mini= $article['Article']['mini'];
					echo $html->image('/files/images/'.$mini, array('class'=>'nav-thumb'));
					?>
				</a>
				
			</div>
			<?php $i++;	?>
			<?php
			}
			?>
		</div>

Re: boucle for

Posté : 30 nov. 2010, 12:22
par stealth35
et pourquoi ne pas utiliser la clé du tableau ?
<div id="movers-row">
    <?php
    $articles = $this->requestAction('/articles/FiveSlider');
    foreach($articles as $key => $article) :
    ?>
    <div>
        <a href="#<?php echo ++$key; ?>" class="cross-link">                   
        <?php echo $html->image('/files/images/'.$article['Article']['mini'], array('class'=>'nav-thumb')); ?>
        </a>
    </div>
    <?php endforeach; ?>
</div>

Re: boucle for

Posté : 30 nov. 2010, 12:28
par Cypher_PHP
stealth35

je veux bien mais le problème est que les nombres liés aux id d'articles ne seront plus compatibles avec le plugin de slider.

Re: boucle for

Posté : 30 nov. 2010, 12:47
par stealth35
stealth35

je veux bien mais le problème est que les nombres liés aux id d'articles ne seront plus compatibles avec le plugin de slider.
de quelle type doivent être les id ?

Re: boucle for

Posté : 30 nov. 2010, 12:51
par Cypher_PHP
les id sont en int()

Re: boucle for

Posté : 30 nov. 2010, 12:59
par Cypher_PHP
c'est bon
j'ai trouvé
et merci beaucoup
voici le bon code
<div id="movers-row">
    <?php $i = 2; ?>
    <?php $articles = $this->requestAction('/articles/FiveSlider'); ?>
    <?php foreach($articles as $article): ?>
        <div> 
            <?php 
			$mini = $article['Article']['mini'];
			echo $html->link($html->image('/files/images/'.$mini, array('class'=>'nav-thumb')), '#' . $i, array('class'=>'cross-link','escape' => false)); ?>    
        </div>
            <?php $i++; ?>
    <?php endforeach; ?>
</div>

Re: [Résolu] boucle for

Posté : 30 nov. 2010, 14:54
par stealth35
fallait faire array_valuerpour le foreach :wink:

Re: [Résolu] boucle for

Posté : 30 nov. 2010, 18:56
par xTG
En effet Cyber_php cela fonctionne mieux quand on prend correctement le code que j'ai donné. ^_-