Album photo sur plusieurs pages.

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 : Album photo sur plusieurs pages.

par Gsgsd » 21 janv. 2007, 00:29

Voila apres etude du code de morfal et de la faq voila ce que j'ai fais dites moi ce que vous en pensez !!!
<?php
$dir = "./pics/";
$tableau = array();
$dossier = opendir ($dir); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        $tableau[] = $fichier;
    }
} 
closedir ($dossier);
/* Définition des variables */
$ipp = 6;
$nbcol = 2;
$nbpics = count($tableau);
$nb_pages = ceil($nbpics / $ipp);
$page = $_GET['page'];
/* Fin de définition des variables */
if (!isset($page) || $page < 1)
{
    $page = 1;
}
elseif ($page > $nb_pages)
{
	$page = $nb_pages;
}
	echo '<p align="center"><a href="'.$_SERVER['PHP_SELF'].'?page=1"><<</a>&nbsp;';
if ($page > 1)
{
	echo"<a href='".$_SERVER['PHP_SELF']."?page=".($page - 1)."'>< Précedent</a>";
}
else
{
	echo"Précedent";
}
	echo'&nbsp;-&nbsp;';
if ($page < $nb_pages)
{
	echo "<a href='" . $_SERVER['PHP_SELF'] . "?page=" . ($page + 1) . "'>Suivant ></a>"; 
}
else
{
	echo"Suivant";
}
	echo '&nbsp;<a href="'.$_SERVER['PHP_SELF'].'?page='.$nb_pages.'">>></a></p>';
if ($nbpics > 0) {
    echo '<table align="center">';
			for	($i = $ipp * ($page - 1) ; $i < $page*$ipp ; $i++)
			{
			if ($i == $nbpics) {break;}
			if($i%$nbcol==0) echo '<tr>';  
			echo '<td><a href="'.$dir , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" style="margin:0.5em;" /></a></td>';
			if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
			}     
    echo '</table>';
}
else
{
	echo 'Aucune image à afficher';
}
?>

par Gsgsd » 16 janv. 2007, 15:17

Je m'excuse de poster 2 fois à la suite.

Pour montrer que je ne suis pas un féniant,j'ai essayé d'adapter la doc que m'a indiqué "jojolapine"...

Voila je penses que je suis sur la bonne voie mais j'ai du faire 1 ou 2 fautes:

-Je n'ai peut êtrepas tenu compte de l'url des images affiché.
-Et les liens avant apres ne s'affiche pas.

Voila mon code:
<?php
/*action sur le dossier*/
$dir = './photo';
$tableau = array();
$dossier = opendir ($dir.'/'); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        $tableau[] = $fichier;
    }
} 
closedir ($dossier); 
/*-------------*/

/*Différentes variables*/
$nbcol=3;
$url = "./album.php?page=";
$nb_img_par_page = 3;
$page_en_cours    = isset($_GET['page']) ? $_GET['page'] : 0;
$page_affichee    = ($page_en_cours + 1);
$nbpics = count($tableau);
$nb_pages = ceil($nbpics / $nb_img_par_page);
/*-----------*/

if($nb_pages > 0)
{
    $barre_nav = "";
    if($nb_pages > 1)
    {
        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> | ";
            }
        }
		$barre_nav .= "<strong>". $page_affichee ."</strong>";
        if(($page_affichee) < $nb_pages)
        {
			$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>";
            }
        }
        $page_affichee = "Page ". $page_affichee ." sur un total de ". $nb_pages ." pages.";
    }
    else
    {
        $barre_nav .= "page 1/1";
    }
	$debut = $page_en_cours * $nb_img_par_page;
    if ($nbpics != 0) {
    echo '<table align="center" style="margin-bottom:2em;">';  
    for ($i = ($page * $nb_img_par_page + 1) ; $i < (($page + 1) * $nb_img_par_page + 1); $i++){
        if($i%$nbcol==0) echo '<tr>';  
        echo '<td><a href="'.$dir.'/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" border="0" /></a></td>';  
        if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
    }  
    echo '</table>';
}
else echo 'Aucune image à afficher';
}
?>
Donc voila si vous voulez bien l'aider pour ce coups la je suis pret à chercher du moment que je sais ou je vois qu'il y a une erreur :wink:

par Gsgsd » 16 janv. 2007, 13:58

Merci beaucoup "morfal". c'est plus que je ne le demandais comme je l'ai deja dit je ne demande pas qu'on me fasse tout mais juste qu'on m'aide, je n'avais aucune idée de comment on fait (quelle technique utiliser) simplement. Meme si je comprend votre réticence pour des personnes qui ne sont que des consommateurs. Je demandais de l'aide pas un script dans mon premier sujet vous aviez eu du mal à cause du manque d'info c'est pour cela que cette fois-ci j'ai voulu qu'aucune infos ne manque !!!! :roll:

EDIT:

J'ai testé et je ne comprends pas pourquoi le lien "Avant" ne s'affiche pas j'ai vérifié il n'y pas l'air d'y avoir une erreur de syntaxe une autre question à quoi sert le"!" devant "isset($_GET['page'])"

dans:
if (!isset($_GET['page']) || $_GET['page'] < 0) {
    $page = 1;
}
j'aimerais comprendre comment se gere les pages des photos parce que j'ai remarqué que le lien ne fonctionnait pas donc j'ai un peu modifié et je me retrouve bloqué !!!

Voila ce que j'ai fait:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html lang="fr">
<head>
<title>Galerie Photo</title>
</head>

<body>
<?php
$tableau = array();
$dossier = opendir ('./photo/'); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        $tableau[] = $fichier;
    }
} 
closedir ($dossier); 

$ipp = 2; // Nombre d'images par page

$nbcol=4;
$nbpics = count($tableau);

if (!isset($_GET['page']) || $_GET['page'] < 0) {
    $page = 1;
}

if ($page > 1)?>
<center><a href='<?echo $_SERVER['PHP_SELF'];?>?page=<?echo $page-=1;?>'>Avant</a> - <a href='<?echo $_SERVER['PHP_SELF'];?>?page=<?echo $page+=1;?>'>Après</a></center><br />
<?
if ($nbpics != 0) {
    echo '<table align="center" style="margin-bottom:2em;">'; 
    for ($i = ($page * $ipp + 1) ; $i < (($page + 1) * $ipp + 1); $i++) {
        if($i%$nbcol==0) echo '<tr>';  
        echo '<td><a href="./photo/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" style="margin:2em;" /></a></td>';
        if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
    }  
    echo '</table>';
}
else echo 'Aucune image à afficher';
?>

</body>
</html>

par jojolapine » 16 janv. 2007, 12:00

je te répondrait qu'il faut chercher avant de demander...
http://www.phpfrance.com/forums/voir_sujet-8874.php

par morfal » 16 janv. 2007, 10:58

Bonjour,

Voilà ton code avec 4 ou 5 lignes de plus pour traiter ton problème.
Il reste à tester :
- l'affichage conditionnel du lien vers la page suivante quand tu es déjà sur la dernière page.
- l'affichage uniquement du bon nombre d'images sur la dernière page.

Comme ça il te reste un peu de boulot ;-)

M
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html lang="fr">
<head>
<title>Galerie Photo</title>
</head>

<body>
<?php
$tableau = array();
$dossier = opendir ('./pics/'); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        $tableau[] = $fichier;
    }
} 
closedir ($dossier); 

$ipp = 5; // Nombre d'images par page

$nbcol=4;
$nbpics = count($tableau);

if (!isset($_GET['page']) || $_GET['page'] < 0) {
	$page = 1;
}

if ($page > 1) echo "<a href='" . $_SERVER['PHP_SELF'] . "?page=" . ($page - 1) . "'>Avant</a><br>";
echo "<a href='" . $_SERVER['PHP_SELF'] . "?page=" . ($page + 1) . "'>Après</a><br>"; 

if ($nbpics != 0) {
    echo '<table align="center">'; 
    for ($i = ($page * $ipp + 1) ; $i < (($page + 1) * $ipp + 1); $i++) {
        if($i%$nbcol==0) echo '<tr>';  
        echo '<td><a href="./pics/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" /></a></td>';
        if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
    }  
    echo '</table>';
}
else echo 'Aucune image à afficher';
?>

</body>
</html>

par Gsgsd » 16 janv. 2007, 00:29

Je pense poster dans la bonne section "Débuter en PHP", Je demande pas qu'on me fasse le script je demande qu'on m'aide, je ne sais pas du tout comment on fait pour faire plusieur page, je donne juste le script que j'utilise pour que vous puissiez m'aider au mieu.

par Ultim4T0m » 16 janv. 2007, 00:24

Bonjour,

Et qu'as-tu fais pour arriver à ce que tu veux ? Tu as une erreur, un problème dans ton script ? Ou tu demandes que quelqu'un ait la bonté de te le faire ...

C'est un forum d'entraide, pas un lieu où l'on vient demander des scripts à des gens qui n'ont que cela à faire :)

Album photo sur plusieurs pages.

par Gsgsd » 16 janv. 2007, 00:09

Bonjour j'ai un script de photo basique mais je souhaiterais n'afficher que x photos alors que le sript actuel m'affiche toutes les photos dans la page
avec un lien suivant et precedent !!!!

Voila le script que j'utilise:
<html>
<head>
<title>Galerie Photo</title>
</head>

<body>
<?php
$tableau = array();
$dossier = opendir ('./pics/'); 
while ($fichier = readdir ($dossier)) {
    if ($fichier != '.' && $fichier != '..' && $fichier != 'index.php') {
        $tableau[] = $fichier;
    }
} 
closedir ($dossier); 

$nbcol=4;
$nbpics = count($tableau);

if ($nbpics != 0) {
    echo '<table align="center">';  
    for ($i=0; $i<$nbpics; $i++){
        if($i%$nbcol==0) echo '<tr>';  
        echo '<td><a href="pics/' , $tableau[$i] , '"><img src="mini.php?f=' , $tableau[$i] , '" alt="Image" /></a></td>';  
        if($i%$nbcol==($nbcol-1) or $i==($nbpics-1)) echo '</tr>';
    }  
    echo '</table>';
}
else echo 'Aucune image à afficher';
?>
</body>
</html>
Merci.