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

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é. ^_-