Modérateur PHPfrance |
8758 Messages
06 févr. 2017, 12:49
salut,
ton code semble fonctionnel. tu n'as pas fermé la balise "a" dans la boucle et il n'y a pas de <tr> (avant ce code ?).
j'ai testé avec succès ce code
<?php
// en commentaire parce que je n'ai pas la base
//$photo_1 = $connection->prepare('SELECT chemin FROM photo_profil WHERE id_membre=:id_membre');
//$photo_1->execute(array(':id_membre'=>$detail));
$i=0;
$max=4; //nb d'entrées par ligne
//on boucle pour sauter de ligne, en commentaire parce que pas d'accède base
//while($data = $photo_1->fetch(PDO::FETCH_OBJ)){
// création d'un object standard pour remplir un tableau qui sert à tester la boucle foreach qui remplace le while (même principe)
$o = new stdClass();
$o->chemin = 'toto';
$d = [$o,$o,$o,$o,$o,$o,$o,$o,$o,$o];
echo '<tr>';
foreach ($d as $data) {
// utilisation de la variable $max que tu définis plus haut
if ($i > 0 && $i % $max == 0) {
echo '</tr><tr>';
}
// en commentaire parce que je n'ai pas les fonctions
//vignette('image_profil/'.$data->chemin.'', 185, 135);
//redim('image_profil/'.$data->chemin.'', 600, 450);
// utilisation de la syntaxe heredoc c'est un peu plus clair
echo <<<html
<td>
<a class="fancybox" rel="gallery1" href="MINI1image_profil/{$data->chemin}" title="">
<img src="MINIimage_profil/{$data->chemin}" border="0" alt="" class="blanc" />
</a>
</td>
html;
$i++;
}
echo '</tr>';
Donc logiquement celui ci devrait fonctionner
<?php
$photo_1 = $connection->prepare('SELECT chemin FROM photo_profil WHERE id_membre=:id_membre');
$photo_1->execute(array(':id_membre'=>$detail));
$i=0;
$max=4; //nb d'entrées par ligne
//on boucle pour sauter de ligne
while($data = $photo_1->fetch(PDO::FETCH_OBJ)){
echo '<tr>';
foreach ($d as $data) {
if ($i > 0 && $i % $max == 0) {
echo '</tr><tr>';
}
vignette('image_profil/'.$data->chemin.'', 185, 135);
redim('image_profil/'.$data->chemin.'', 600, 450);
echo <<<html
<td>
<a class="fancybox" rel="gallery1" href="MINI1image_profil/{$data->chemin}" title="">
<img src="MINIimage_profil/{$data->chemin}" border="0" alt="" class="blanc" />
</a>
</td>
html;
$i++;
}
echo '</tr>';
regarde le code html qui est généré pour être certain qu'il soit conforme à ce que tu attends.
après il faut déboguer pour savoir ce que contiennent les variables au moment où tu attends le changement de ligne.
tu peux éviter tous cela en utilisant CSS3 et flex box (et une largeur de vignette de 25% (ou moins si tu as des marges bien entendu).
@+
Il en faut peu pour être heureux ......