galerie de photos a partir de dossiers par page (suite)

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 de photos a partir de dossiers par page (suite)

par sasg » 19 mai 2006, 20:02

voila g reussi a le faire fctionner correctrment, rn tout cas grand merci a toi guilt!

http://chezmm.free.fr/version3/par_page ... ine&page=1

voila le resultat
Une fonction de plus d'implementer qui fonctionne sur mon site sans toi je n'y serai pas arrive où dans longtemps alors :wink:

par sasg » 19 mai 2006, 17:31

je comprend pas ce que fait ton code et a quoi ca sert de faire un 2eme compteur pourquoi pas utiliser $compt ?

en rajoutant ton code je n'ai plus de photo qui s'affiche..

par guilt92 » 19 mai 2006, 16:31

echo '<table bgcolor="#000000" border='.$bor.'><tr>'; 

$compt=0; 
$dp = opendir($vig); 
$compteur_photo = 0; 
while($photo = readdir($dp)) 
{ 
if($compteur_photo>=($page_affichee-1)*8 && compteur_photo<=$page_affichee*8 - 1) 
{ 
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext)) 
    { 
        if($compt%$ipl == 0) 
        { 
          echo '</tr><tr>'; 
        } 
        echo "<td>\n"; 
        echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">'; 
        echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>'; 
        $compt++; 
    } 
$compteur_photo++; 
}
else $compteur_photo++; 

} 
Bah je n ai pas d autre solution que celle que je t ai deja donné, en la testant pas a pas tu devrais voir si elle marche pas le pourquoi, ca doit etre un detail parce que en théorie elle fonctionne pour moi...

par sasg » 19 mai 2006, 16:22

:?:

Je n' arrive pas :cry: a afficher les photos suivantes, je n'arrive pas a lui dire commence a partir de tel photo...

:evil:

par guilt92 » 19 mai 2006, 13:46

C'est tout a fait normal que cela ne fonctionne pas, actuellement tu affiches tes photos sans tenir compte du $page_affichee qui recupere le $_GET["page"] qui te dit donc sur quel page tu es...

La boucle While qui affiche tes photos est avant ce bout de code qui récupère la page en cours, et surtout tu n'en tiens pas compte dans cette boucle. Il faudrait que tu implémentes par exemple un IF comme je te l avais suggéré ou tu prendrai un compteur qui s incrémente a chaque fois et qui entre dans l affichage uniquement si il est compris entre les bornes que j avais expliquées :)

Maintenant que tu maitrise mieux l affichage essaye de comprendre la boucle IF que j avais ajoutée a ton code dans mes post précédent, et si tu as un probleme n hesite pas...

par sasg » 19 mai 2006, 12:51

si le code est deja fait pour la barre de menu mais je n'arrive pas a passer aux image de la 2eme page!

Quand je clicque sur la page 2 je n'arrive pas a recuperer (et a faire la fonction) les photos qui doivent s'afficher
<?php

//affiche le menu appart
function menu_appart ()
{
$rep = "./appart";
$dir = opendir($rep);
echo '<br/>';
while ($dossier = readdir($dir))
 {
   if ($dossier !="." && $dossier != "..")
   {
     if(is_dir($rep."/".$dossier)) 
     {
      echo '<a href="par_page2.php?dir='.$dossier.'&page=0">'.$dossier.'</a>';
  	  echo ' <br/>';  
     }
   }
 }
closedir($dir);
};
?>


<?php
/*Creation de la galerie
$rep = dossier des photos
$vig = dossier des vignettes
$ext = extension
$ipp = nombre d'image par page
$wid = largeur des photos
$bor = bordure (1=oui, 0=non)
*/
function galerie($rep,$vig,$ext,$ipl,$ipp,$wid,$bor)
{

if(!$rep)
	{ 
  	$rep='.'; 
	}
echo 'repertoire : '.$rep;
if(!$vig)
	{ 
  	$vig='.'; 
	}
echo '<br>vig : '.$vig;
if(!$wid)
	{ 
  	$wid='100%';
	}
echo '<br/>nomre par ligne : '.$ipl;
echo '<br/>nombre par page : '.$ipp;
echo '<center>';
echo '<table bgcolor="#000000" border='.$bor.'><tr>';
$compt=0;
$dp = opendir($vig);
  while($photo = readdir($dp))
  {
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
	  {
	    if($compt != $ipp)
		{
		  if($compt%$ipl == 0)
		  { 
		  	echo '</tr><tr>'; 
		  }
    	echo "<td>\n";
    	echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">';
    	echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>';
		$compt++;
		}
	 	
      }
  }

echo '</tr></table>';
echo 'nombre de photos : '.$compt;

/* Paramètres de pagination */
$nb_photo_par_page = $ipp;             /* Nombre de photos qui seront affichées sur chaque page */
$url = './par_page2.php?dir='.$_GET[dir].'&page=';

/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee    = ($page_en_cours + 1);

echo '<center>';
echo '<table bgcolor="#000000" border='.$bor.'><tr>';
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$photo_total=0;
$dp = opendir($vig);
while($photo = readdir($dp))
{
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
	{
        
    $photo_total++; 
    }
}
$nb_pages = ceil($photo_total / $nb_photo_par_page);
echo 'nombre de photos : '.$photo_total .'<br/>';
/**
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
if($nb_pages > 0)
{
    /* On définit une variable qui contiendra les données de navigation */
    $barre_nav = "";
    /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
    if($nb_pages > 1)
    {
        /**
        Nous avons plusieurs pages: nous allons afficher successivement les liens vers
        les pages précédentes s'il y en a, la page en cours et les liens vers les pages
        suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
        sauf pour la page en cours dont nous mettrons le chiffre en gras
         */
        if($page_en_cours > 0)
        {
            for($i = 0; $i < $page_en_cours; $i++)
            {
                $p = $i + 1;
                $barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
            }
        }
        /**
        On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une
        page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
         */
        $barre_nav .= "<strong>". $page_affichee ."</strong>";
        /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
        if(($page_affichee) < $nb_pages)
        {
            /* Il reste encore d'autres pages à afficher */
            $nb_suivantes = $nb_pages - ($page_affichee);
            for($j = ($page_affichee); $j < $nb_pages; $j++)
            {
                $p = $j + 1;
                $barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
            }
        }
        
        /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
        $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
    }
    else
    {
        /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
        $barre_nav .= "1";
    }
    /**
    On peut maintenant afficher notre page. On va commencer par récupérer les informations
    On doit définir à partir de quelle nouvelle on doit récupérer les données dans la clause LIMIT.
     */
echo($barre_nav);}
echo '</center>';
};
 
 
//Donne l'extension d'un fichier
function extension($fichier)
{
    ereg("\.([^\.]*$)", $fichier, $exte);
    return $exte[1];
};

?> 

<?php
menu_appart();
galerie('appart/'.$_GET['dir'], 'appart/'.$_GET['dir'].'/vig','jpg',4,8,100,0);
?>
j'espere que j'ai ete assez clair :?
http://chezmm.free.fr/version3/par_page ... ine&page=0

par guilt92 » 19 mai 2006, 12:16

est-ce que j'ai oublie quelque chose
Non je ne crois pas mais cela n'était il pas déjà fait dans le code d'origine ? Ou alors peut etre tu as tout recommencé ?

par sasg » 19 mai 2006, 11:38

Merci de me donner des pistes plutot que des solutions toute prete , ca me force a me debrouiller :)

voila j'ai reussi a faire afficher les 8 photos par page, et 4 photos par ligne
http://chezmm.free.fr/version3/par_page ... lon&page=0
echo '<table bgcolor="#000000" border='.$bor.'><tr>';
$compt=0;
$dp = opendir($vig);
  while($photo = readdir($dp))
  {
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
	  {
	    if($compt != $ipp)
		{
		  if($compt%$ipl == 0)
		  { 
		  	echo '</tr><tr>'; 
		  }
    	echo "<td>\n";
    	echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">';
    	echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>';
		$compt++;
		}
	 	
      }
  }

echo '</tr></table>';
echo 'nombre de photos : '.$compt;
il me reste "plus qu'à" :? faire le menu de page.

Donc je dois regarder jusqu'à quelles photos la page est affiche et ensuite regarde si il ya encore des photos et si oui je dois calculer le nombre de page necessaire pour les afficher

est-ce que j'ai oublie quelque chose :?:

par sasg » 19 mai 2006, 10:31

$ipl = c'est le nombre d'image(s) par ligne dans le tableau
donc j'aimerais mettre 8 photos par page et donc 4 photos par ligne

apres voire par la suite si je veux personnaliser l'affichage mais bon c 'est une autre question.

je vais donc essayer de faire afficher 8 phtos par page sans les mettre dans un tableau

par guilt92 » 19 mai 2006, 10:15

if($compt%$ipl == 0) 
c'est quoi $ipl ?

Sinon dans un premier temps essaye deja d'afficher les 8 photos à la suite
et ensuite passe a la mise en forme. Ca sera peut être plus simple de localiser le problème.

par sasg » 18 mai 2006, 17:51

merci mais j'ai un probleme, je commence m'embroullier sur mon code je suis occupe dessus depuis hier!

pour l'instant, des que j'ai plus 8 photos dans un dossier rien ne s'affiche alors que quand il y a en a moins les photos s'affiche
<?php

//affiche le menu appart
function menu_appart ()
{
$rep = "./appart";
$dir = opendir($rep);
echo '<br/>';
while ($dossier = readdir($dir))
 {
   if ($dossier !="." && $dossier != "..")
   {
     if(is_dir($rep."/".$dossier)) 
     {
      echo '<a href="par_page1.php?dir='.$dossier.'&page=0">'.$dossier.'</a>';
  	  echo ' <br/>';  
     }
   }
 }
closedir($dir);
};
?>


<?php
/*Creation de la galerie
$rep = dossier des photos
$vig = dossier des vignettes
$ext = extension
$ipl = nombre d'image par ligne
$wid = largeur des photos
$bor = bordure (1=oui, 0=non)
*/
function galerie($rep,$vig,$ext,$ipl,$wid,$bor)
{

	if(!$rep)
	{ 
  		$rep='.'; 
	}
	echo 'repertoire : '.$rep;
	if(!$vig)
	{ 
  		$vig='.'; 
	}
	echo '<br>vig : '.$vig;
	if(!$wid)
	{ 
  		$wid='100%';
	}
/*compte combien d'image il y a dans le dossier*/
$compt=0;
$dp = opendir($vig);
while($photo = readdir($dp))
{
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
	{
        $compt++; 
    }
}

/* Paramètres de pagination */
$nb_photo_par_page = 8;             /* Nombre de photos qui seront affichées sur chaque page */
$url = './par_page1.php?dir='.$_GET[dir].'&page=';

/* On détermine quelle est la page qui est actuellement affichée */
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee    = ($page_en_cours + 1);

echo '<center>';
echo '<table bgcolor="#000000" border='.$bor.'><tr>';
/* Calcul du nombre total de pages : on arrondit à l'entier supérieur (ceil() ) */
$nb_pages = ceil($compt / $nb_photo_par_page);

/**
Nous disposons maintenant de suffisament d'éléments pour créer notre barre de navigation.
Première chose à vérifier : avons-nous plusieurs pages, et au moins une ?
*/
	if($nb_pages > 0)
	{
    /* On définit une variable qui contiendra les données de navigation */
    	$barre_nav = "";
    /* Nous avons au moins une page : avons nous besoin d'une barre de navigation ? */
    	if($nb_pages > 1)
    	{
        /**
        Nous avons plusieurs pages: nous allons afficher successivement les liens vers
        les pages précédentes s'il y en a, la page en cours et les liens vers les pages
        suivantes. Nous aurons une barre sous la forme : 1 | 2 | 3 etc.. en liens clicables
        sauf pour la page en cours dont nous mettrons le chiffre en gras
         */
        	if($page_en_cours > 0)
        	{
           		for($i = 0; $i < $page_en_cours; $i++)
            	{
                	$p = $i + 1;
                	$barre_nav .= "<a href=\"". $url . $i ."\" title=\"page ". $p ."\">". $p ."</a> | ";
            	}
        	}
        /**
        On affiche la page en cours : notez le (+ 1) : pour les calculs, nous partons d'une
        page 0 mais pour l'internaute, il est préférable de commencer à la page 1, donc on incrémente
         */
        	$barre_nav .= "<strong>". $page_affichee ."</strong>";
        /* Enfin on affiche (s'il y a lieu) les liens vers les pages suivantes */
        	if(($page_affichee) < $nb_pages)
        	{
            /* Il reste encore d'autres pages à afficher */
            	$nb_suivantes = $nb_pages - ($page_affichee);
            	for($j = ($page_affichee); $j < $nb_pages; $j++)
            	{
              		$p = $j + 1;
                	$barre_nav .= " | <a href=\"". $url . $j ."\" title=\"page ". $p ."\">". $p ."</a>";
            	}
        	}
        
        /* On peut définir en plus la situation dans une autre variable à afficher ailleurs */
        	$page_affichee = 'Page '. $page_affichee .' sur un total de '. $nb_pages .' pages.';
    	}
    	else
    	{
        /* Nous n'avons qu'une seule page, on peut se contenter d'afficher juste page 1/1 */
        	$barre_nav .= " Page 1/1";
    	}
    /**
    On peut maintenant afficher notre page. On va commencer par récupérer les informations
    */


echo '<center>';


	echo $barre_nav.'<br/>';
	echo $page_affichee;
	}
	echo '<table bgcolor="#000000" border='.$bor.'><tr>';

$compt=0;
$dp = opendir($vig);
$compteur_photo = 0;
while($photo = readdir($dp))
	{
		if($compteur_photo>=($page_affichee-1)*8 && compteur_photo<=$page_affichee*8 - 1)
		{
      	  if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
    		{
          	  if($compt%$ipl == 0)
        		{
          	  	  echo '</tr><tr>';
        		}
        	echo "<td>\n";
        	echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">';
        	echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>';
        	$compt++;
    		}
	  	  $compteur_photo++;
		}
	  else $compteur_photo++;
	}
echo '</tr></table>';
echo 'nombre de photos : '.$compt;
echo '</center>';
};
 
 
//Donne l'extension d'un fichier
function extension($fichier)
{
    ereg("\.([^\.]*$)", $fichier, $exte);
    return $exte[1];
};

?> 

<?php
menu_appart();
galerie('appart/'.$_GET['dir'], 'appart/'.$_GET['dir'].'/vig','jpg',4,'',0);
?>
je sais plus quoi faire

http://chezmm.free.fr/version3/par_page ... ine&page=0

par guilt92 » 18 mai 2006, 17:18

echo '<table bgcolor="#000000" border='.$bor.'><tr>'; 

$compt=0; 
$dp = opendir($vig); 
$compteur_photo = 0; 
while($photo = readdir($dp)) 
{ 
if($compteur_photo>=($page_affichee-1)*8 && compteur_photo<=$page_affichee*8 - 1) 
{
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext)) 
    { 
        if($compt%$ipl == 0) 
        { 
          echo '</tr><tr>'; 
        } 
        echo "<td>\n"; 
        echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">'; 
        echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>'; 
        $compt++; 
    } 
$compteur_photo++; 
} 
else $compteur_photo++; 

} 

echo '</tr></table>'; 
echo 'nombre de photos : '.$compt; 
Il ne te reste plus qu'a gérer l'affichage de la seconde ligne de photos, car maintenant les photos affichées ne seront que celles contenues dans les bornes de ta page affichée

par sasg » 18 mai 2006, 17:15

excuse moi, mais je n'arrive pas a comprendre comment l'implementer dans mon code :?

:?:

par guilt92 » 18 mai 2006, 17:06

C'est le meme principe, il te suffit de définir des bornes, par exemple avec une variable $compteur_photo :)
//ton code
$dp = opendir($vig); 
$compteur_photo = 0;
while($photo = readdir($dp)) {
if($compteur_photo>=($page_affichee-1)*8 && compteur_photo<=$page_affichee*8 - 1)
    { 
   //ton code pour afficher les photos, 4 sur une ligne et 2 lignes 
    $compteur_photo++;
   }
else $compteur_photo++;
//suite de ton code

N'oublie pas l'initialisation de $compteur_photo = 0; avant le while :wink:

EDIT: Je viens de modifier le code j avais oublié le $compteur_photo++; dans le if.

par sasg » 18 mai 2006, 16:58

les photos ne se trouve pas dans une base de donnee, c'est ce code qui va cherche les photos ds le dossier
if(!$rep)
    {
      $rep='.';
    }
echo 'repertoire : '.$rep;
if(!$vig)
    {
      $vig='.';
    }
echo '<br>vig : '.$vig;
if(!$wid)
    {
      $wid='100%';
    }

echo '<center>';
echo '<table bgcolor="#000000" border='.$bor.'><tr>';

$compt=0;
$dp = opendir($vig);
while($photo = readdir($dp))
{
    if(is_file("$vig/$photo") && (strtolower(extension($photo)) == $ext))
    {
        if($compt%$ipl == 0)
        {
          echo '</tr><tr>';
        }
        echo "<td>\n";
        echo '<a href="javascript:openimg(\''.$rep.'/'.$photo.'\')">';
        echo '<img border=0 width='.$wid.' src="'.$vig.'/'.$photo.'"></a><br></td>';
        $compt++;
    }
}

echo '</tr></table>';
echo 'nombre de photos : '.$compt; 
j'ai deja fait une limite de 4 photos par ligne et je veux 8 en tout par page

voir ce que j'ai pour l'instant :http://chezmm.free.fr/version3/par_page ... ine&page=0