[Résolu] boucle for

Eléphant du PHP | 258 Messages

30 nov. 2010, 09:35

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>
Modifié en dernier par Cypher_PHP le 30 nov. 2010, 12:59, modifié 1 fois.
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

ViPHP
xTG
ViPHP | 7331 Messages

30 nov. 2010, 09:57

                <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 ?).

Eléphant du PHP | 258 Messages

30 nov. 2010, 10:19

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
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 nov. 2010, 11:19

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++ ) {
....
}
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 258 Messages

30 nov. 2010, 11:38

corrigé mais le résultat arrive à 2345....
comprend rien
<?php
for( $i = 2; $i < 6; $i++ ) {
echo $i;
}
?>
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 nov. 2010, 11:46

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 :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

30 nov. 2010, 11:47

Salut,

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

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 258 Messages

30 nov. 2010, 12:09

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>
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 12:22

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>

Eléphant du PHP | 258 Messages

30 nov. 2010, 12:28

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.
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 12:47

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 ?

Eléphant du PHP | 258 Messages

30 nov. 2010, 12:51

les id sont en int()
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

Eléphant du PHP | 258 Messages

30 nov. 2010, 12:59

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>
Cordialement
---------------------------------------------------------
Cyphos utilise
- Firefox et Google Chrome dernière version
- Windows Seven ou Windows XP SP3,
- Wampserver

ViPHP
ViPHP | 5462 Messages

30 nov. 2010, 14:54

fallait faire array_valuerpour le foreach :wink:

ViPHP
xTG
ViPHP | 7331 Messages

30 nov. 2010, 18:56

En effet Cyber_php cela fonctionne mieux quand on prend correctement le code que j'ai donné. ^_-