galerie d'image par modulo

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : galerie d'image par modulo

Re: galerie d'image par modulo

par moogli » 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).

@+

galerie d'image par modulo

par pacphil » 29 janv. 2017, 16:34

Bonjour j'essaie de réaliser une mise a la ligne des images par ligne de 4. La j'ai 6 images en une ligne droit alors que je devrais avoir 4 sur une ligne et deux en dessous?, je vois pas mon erreur. une petite aide serais la bienvenue .
<?php

      $photo_1 = $connection->prepare('SELECT * 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)){

if ($i > 0 && $i % 4 == 0){
        echo '</tr><tr>';
    }
    echo "<td>"; 
	
      vignette('image_profil/'.$data->chemin.'',185, 135);
      redim('image_profil/'.$data->chemin.'', 600, 450);	
	  ?>
      <a class="fancybox" rel="gallery1" href="<?php echo'MINI1image_profil/'.$data->chemin.''; ?>" title="">
      <img src="<?php echo'MINIimage_profil/'.$data->chemin.''; ?>" border="0" alt="" class="blanc" />
      <?PHP
	echo"</td>";

    $i++;
    }
    echo "</tr>";

 
 ?>