Galerie d'image

Petit nouveau ! | 3 Messages

08 juin 2005, 14:39

Bonjour, voila j'aimerais créé un script qui permet de gerer des images. Je m'explique je voudrais faire une sorte de galerie d'image.


Donc dans un premier temps de compte de nombre de page nécessaire :

Code : Tout sélectionner

$nombreDimageparpage = 20; // On récupère le nombre total de messages $retour = mysql_query('SELECT COUNT(*) AS nb_images FROM galerie); $donnees = mysql_fetch_array($retour); $totalDesImages = $donnees['nb_images']; // On calcule le nombre de pages à créer $nombreDePages = ceil($totalDesImages / $nombreDimageparpage); //la boucle echo 'Page : '; for ($i = 1 ; $i <= $nombreDePages ; $i++) { echo '<a href="galerie.php?page=' . $i . '">' . $i . '</a> '; } ?> </p>
Pour l'instant tout va bien ^^
Mais c'est pour l'affichage des images... je ne sais pas comment faire pour qu'il affiche 4 images par ligne

Exemple :

Image 1 Image 2 Image 3 Image 4 -> Retour a la ligne
Image 5 Image 6 Image 7 Image 8 -> Retour a la ligne
.
.
.
.

Merci de m'aider :)

Eléphanteau du PHP | 36 Messages

08 juin 2005, 14:47

Avec un modulo dans ta boucle :
echo $i % 4 == 0 ? '<br />' : '' ;
:wink:

Petit nouveau ! | 3 Messages

08 juin 2005, 15:10

Peut tu me montrer si te plait? ;p

Eléphanteau du PHP | 36 Messages

08 juin 2005, 15:14

Comme ça :
<?
	$i = 1 ;
	while ( $i <= $nombreDePages )
	{
	echo '<a href="galerie.php?page=' . $i . '">' . $i . '</a> ' ;
	echo $i % 4 == 0 ? '<br />' : '' ;
	$i ++ ;
	}
?>


Dans la boucle quoi ! Au passage j'ai utilisé une boucle while, car un chouille plus rapide. :wink:

Petit nouveau ! | 3 Messages

08 juin 2005, 16:06

Ok merci beaucoup ^^

Eléphanteau du PHP | 36 Messages

08 juin 2005, 16:09

Pas de quoi ^^

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

08 juin 2005, 17:19

une galerie photo en PHp, pourvu ça vous guidera.
<?
//Ce programme parcourt un répértoire donné 
//et affiche les images qui s'y trouvent dans une table HTML
//dont la mise en  forme est paramètrable
//
//Attention: ce programme ne fait pas de filtrage de fichiers (il ne distingue pas une image d'un autre objet)
//			 Mais il n'affiche que des images
//
//Fonction explorateur de répertoire
function liste($path)
{
    $tableau = array();
    if ($dir = @opendir($path))
    {
        while($file = readdir($dir))
        {
            if ($file !="." && $file != "..")
            {
                if (is_file($path."/".$file))
                {
                    array_push($tableau, $path."/".$file);
                }
            }
        }
    }
  return $tableau;
}

//Remplir le tableau source de fichiers à partir de $path
$path='./images';
$source = liste($path);

//Paramètres de l'interface
$action = isset($_GET["action"])?$_GET["action"]:"";  //boutons suivant/précédent
$nbLignes = isset($_GET["nbLignes"])?$_GET["nbLignes"]:2;  //régle le nbre de lignes par page
$nbCol = isset($_GET["nbCol"])?$_GET["nbCol"]:2; //régle le nbre de colonnes par page
$images_page = $nbLignes * $nbCol; //calcule le nbr d'images par page
$pos = isset($_GET["pos"])?$_GET["pos"]:0; //la position actuelle dans le tableau source de fichiers

//Traiter le lot d'images suivant/précédent à afficher
if ($action == "Suivant" && $pos + $images_page < count($source)) $pos += $images_page;  
if ($action == "Précédent" && $pos - $images_page >= 0) $pos -= $images_page;

//Affichage de la source en respectant les paramètres d'affichage (nbre colonnes/nbre lignes)
$i=0; 
echo '<h1>Galerie de photos</h1><hr><table width=100%>'; 
for($p = $pos; $p < $pos + $images_page; $p++) { 
//Saut à la ligne si $i est multiple de $nbCol 
if ( $i % $nbCol == 0)  echo '<tr bgcolor="#feffb7">'; //retour à la ligne
if ($p >=0 && $p < count($source)) //afficher une image si elle existe
	echo '<th ><img src="'.$source[$p].'" width=50 heigth=50 align=bottom><br>'
		.substr(basename($source[$p]),0,strpos(basename($source[$p]),".")); //nom du fichier sans chemin ni extension
$i++; //compteur d'images affichées
} 
echo '</table><hr>';

//Formulaire de contrôle/paramètrage de l'afficheur'
echo "<form name=f method=get><table border=0 width=100%><tr><td>"; 
//Les boutons suivant/précédent ne s'affichent que si nécéssaire
//s'il y un précédent :
if($pos - $images_page >= 0)  echo '<input type="submit" name=action value="Précédent">'; 
//s'il y a un suivant:
if($pos + $images_page < count($source))  echo '<input type="submit" name=action value="Suivant">';
//paramètres nbr Lignes et colonnes par page (Auto validable)
echo '<td>Colonnes <input value="'.$nbCol.'" name="nbCol" onChange="f.submit();">'; 
echo '<td>Lignes <input value="'.$nbLignes.'" name="nbLignes" onChange="f.submit();">';
//Un champs caché pour la position en cours dans la source de fichiers
echo '<input type=hidden value="'.$pos.'" name="pos">'; 
echo "</table></form>";
?>
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Domi
Invité n'ayant pas de compte PHPfrance

03 juil. 2007, 14:28

Je reviens vers vous sur ce sujet.
J'ai adapter le script pour mon site mais je n'arrive pas à mettre en forme mon tableau. La taille des colonnes etc...

Pourriez vous m'aider la dessus ?

Merci d'avance

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

03 juil. 2007, 15:12

comme tu as dù remarquer, le programme ne s'est pas soucié du désign. Il expose une table HTML réglée par défaut à 100% de largeur et des images de 50x50 pour simplement la démo.

Par contre il peut régler le nombre de colonnes et lignes à afficher.

Je te conseille d'utiliser une feuille de style CSS pour placer la mise en forme volue. Il suffit d'utiliser des classes CSS et les placer sur les balises concernées.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène