Bonjour,
J'ai un script qui me fait une galerie photo.
Je souhaiterai que tous les x photos, on aille à la ligne pour les photos suivantes, mais je ne connais pas la fonction.
Merci pour votre aide.
Bonjour,
J'ai un script qui me fait une galerie photo.
Je souhaiterai que tous les x photos, on aille à la ligne pour les photos suivantes, mais je ne connais pas la fonction.
Merci pour votre aide.
Une fonction pour aller à la ligne
Tu comptes et tu mets des <TR> ou <BR> toutes les x photos, mais sinon si tu mets un peu de code ça pourrait nous aider à t'aider (expression vue sur un autre topic).
tu met chaque photo entre <div style="float:left;"></div>
Enfin, tu devrais plutot aller voir du coté du forum HTML
J'ai oublié de préciser l'essentiel.
Les photos correspondent à des resultats php/MySql, les photos ne sont pas en dur, donc le but c'est justement d'arriver à un bout de code qui enverra un br toutes les x photos.
Voici le code si ca vous interresse:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 <?php // on déclare un tableau qui contiendra le nom des fichiers de nos miniatures $tableau = array(); // on ouvre notre dossier contenant les miniatures $dossier = opendir ('../assets/thumbail/'); while ($fichier = readdir ($dossier)) { if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') { // on stocke le nom des fichiers des miniatures dans un tableau $tableau[] = $fichier; } } closedir ($dossier); // on défini le nombre de colonne sur lesquelles vont s'afficher nos miniatures $nbcol=2; // on compte le nombre de miniatures $nbpics = count($tableau); // si on a au moins une miniature, on les affiche toutes if ($nbpics != 0) { echo '<table>'; for ($i=0; $i<$nbpics; $i++){ if($i%$nbcol==0) echo '<tr>'; // pour chaque miniature, on affiche la miniature munie d'un lien vers la photo en taille réelle $mapicture = "../assets/picture/$tableau[$i]"; $lienversmapicture = "return popImage('$mapicture','hug')"; echo '<td><a href="#" onClick="',$lienversmapicture,'"><img src="../assets/thumbail/' , $tableau[$i] , '" alt="Copyright " onload=this.style.filter=\'progid:DXImageTransform.Microsoft.Shadow(color=#000000,direction=135,strength=3)\' border="0"/></a></td>'; if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>'; } echo '</table>'; } // si on a aucune miniature, on affiche un petit message :) else echo 'Aucune image à afficher'; ?>
Voici le code que j'utilise pour ça. Il manque au début le code de connexion à la table de la base:
Colorez votre code PHP sur les forums grâce à Developpez.com<?
//$num est le nombre de photos
if($num > 0) {
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
//Création du tableau
//""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
print"<table width='100%' border='0' cellspacing='10' cellpadding='0'>";
// Nombre de colonnes désirées
$nb_colonne = 4;
$z = 0;
$nb_cel = $num;
for ($i = 0; $i < $num; $i++) {
if ( $z % $nb_colonne == 0 ) {
// si le reste de $z / 3 (le nombre de colonnes
// désirées) égale 0 et que $z n'en est pas à sa
// première itération (pour éviter d'avoir une
// ligne "<tr>" parasite au début, c'est que l'on
// peut commencer une ligne
// on commence une ligne du tableau
echo "\n<tr>\n";
}
if($z % $nb_colonne !=0 OR $z % $nb_colonne == 0 ) {
//Récupération des données de la base
$id = mysql_result($query,$i,'id');
//Nom du fichier image dans la base
$image = mysql_result($query,$i,'image');
// on affiche une cellule composé d'un tableau de 2 lignes et une colonne
print("
<td><div align='center'><table border='1' cellspacing='0' cellpadding='0' bordercolor='#000000'>
<tr>
<td width=\"150\"><div align='center'><b>$id</b></div></td>
</tr>
<tr>
<td><div align='center'><img src='imagesan/$image' width='80' height='80' border='0'></div></td>
</tr>
</table></div></td>");
}
$z++; // on incrémente le compteur
if ( $z % $nb_colonne == 0 OR $z == $nb_cel ) {
// puisque $z a été incrémenté une ligne plus haut,
// la condition ci-dessous recevra une valeure de $z
// différente du début de la boucle, donc on peut
// fermer la ligne
echo "\n</tr>\n";
}
}
echo "</table>";
//}
}
?>
pour vraiment avoir qq chose de modulaire, qq soit la résolution, utiliser des div avec le style float à left.
C'est propre (XHTML strict et CSS), c'est modulaire, et y a bcp moins de ligne à ecrire
ecrit à la volé donc pas testé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <style> .image { float:left; margin:10px 5px 10px 5px; height:150px; width:150px;} </style> <?php // image provenant de BDD while ($row = mysql_fetch_assoc($result)) { echo '<div class="image"><img src="'.$row['adresse_img'].'" /></div>'; } ?>
wamania, dans le code que tu donnes je ne comprend pas comment tu fais pour avoir par exemple un affichage sur 3 colonnes?
Merci pour vos réponses.
wamania, je garde ton code pour un autre site, mais la je préfère avoir mes photo en fixe.
Merci à Nico pour ton code qui fonctionne très bien et qui résout totalement mon pb.
resolu, merci à tous
en fait je crois qu'il n'y a pas un nombre de colonne defini.
On donne la taille du cadre general si jai bien compris et après ca sadapte automatiquement.
Donc le nombre de colonne sera variable
Oki, il en manquait un bout, mais l'idée reste la même
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <style> .image { float:left; margin:10px 5px 10px 5px; height:150px; width:150px;} .image_new_line {clear:left; margin:10px 5px 10px 5px; height:150px; width:150px;} </style> <?php // image provenant de BDD while ($row = mysql_fetch_assoc($result)) { $class = 'image'; if ($i == 3) { $i = 0; $class = 'image_new_line'; } echo '<div class="'.$class."><img src="'.$row['adresse_img'].'" /></div>'; $i++; } ?>
oui, sauf si on force avec clear, qui place un bloc en dessous du précédent.en fait je crois qu'il n'y a pas un nombre de colonne defini.
On donne la taille du cadre general si jai bien compris et après ca sadapte automatiquement.
Donc le nombre de colonne sera variable
merci pour toutes ces précisions.
bonne journée.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager