IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

pagination pour une galerie sans base de donnée


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut pagination pour une galerie sans base de donnée
    je souhaite créer un système de pagination pour une galerie sans utilisé une base de donnée.
    voila ce que j'ai déjà fait :

    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
    35
    36
    37
    38
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
    //définir l'offset, la foto par laquelle on commence
    //on fait un while sur le repertoire a afficher
     
     
    //compter le nombre de fichier
    $files = glob("images/min/*.*");
    $compteur = count($files);
    echo "Il y a <font color=#FF0000>$compteur</font>images dans le dossier min "; 
     
     
    //definir le nombre d'image par page que l'on souhaite
    $pagination=16;
     
     
    // le compteur s'incrémente lors de chaque ajout, des quon arrive au nombre max fixé on arrete le while
     
     
     
    //générer les différentes pages
     
     
     
    //gérer les boutons suivant et précédent premiere et derniere page derniere page
     
     
     
    ?>
    </body>
    </html>
    tout d'abord je voudrais savoir si dans mon code j'ai la bonne démarche, n'ai-je pas oublié une étape ?
    S'il s'agit de la bonne démarche, je ne sais pas dans un premier temps faire l'incrémentation du compteur lors de l'ajout d'une image?
    pouvez vous me donnez des conseils car je suis coincée?
    j'ai déjà réaliser l'affichage des images en miniature et du contenu du répertoire images.
    ce que je souhaite obtenir graphiquement c'est : un bouton précedent-1-2-3-4 et le bouton suivant
    merci

  2. #2
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    La méthode (pour moi) est la suivante:

    Tu doit avoir une variable du style $_GET['page']
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(isset($_GET['page']))
      $var_page_courante = $_GET['page'];
    else
      $var_page_courante = 1;
    Ensuite tu as ton nombre d'image par page, $pagination, tu affichera donc les images de 1 à 1+15 sur la premiere page, de 17 à 32 sur la seconde, etc.
    Tu obtient ce nombre max et nombre début en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $nbr_fin = $var_page_courante * $pagination;
    $nbr_debut = ($var_page_courante - 1) * $pagination;
    Ensuite pour tes liens il te suffit de faire une boucle.
    Tu calcule le nombre de page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $nbr_page = $nbr_image / $pagination;
    // on gère la partie décimal (33/16) = 2,xxx donc 3 pages...
    if(intval( abs($nbr_page)) < $nbr_page)
      $nbr_page++;
    Et donc après ta boucle de 1 à $nbr_page. Pour les boutons suivant et précédent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if($page_courante != 1)
      // Affiche bouton précédent
    for($i=1;$i<=$nbr_page;$i++)
      // Lien de page
    if($page_courante != $nbr_page)
      // Affiche bouton suivant
    Voilà en espérant t'avoir aidé.

  3. #3
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    donc j'ai amélioré mon script, mais j'ai encore un soucis, je ne sais pas comment faire pour faire l'affichage des images qui correspond à la page choisie ?

    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
     
    //compter le nombre de fichier
    $files = glob("images/min/*.*");
    $compteur = count($files);
     
    //definir le nombre d'image par page que l'on souhaite
    $pagination=16;
    $nombreDePages=ceil($compteur/$pagination);
     
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pagese
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        echo '<a href="page.php?page=' . $i . '">' . $i . '</a> ';
    }
     
    //affichage des image en fonction de la page choisie
     
     
    ?>
    </body>
    </html>

  4. #4
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Tu va lister tes images normalement en incrémentant un compteur, et tu affichera uniquement les images correspondant aux numéro de ta page, càd:

    Avec pagination de 16
    page 1 => 1 à 16
    page 2 => 17 à 32

    etc.

    Donc de ($num_page-1)*$pagination à $num_page*$pagination.

  5. #5
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    je ne sais pas du tout comment je peu coder cela

  6. #6
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Tu as dit dans un post précédent je crois que tu avais déjà réalisé l'affichage de tes images, est-ce exact ?

    Si oui, il te suffit de parcourir normalement ta boucle sur les images du dossier.
    A chaque itération de ta boucle tu incrémente une variable initialement mise à 0, puis si la valeur de ce compteur est comprise entre le numéro de la premiere et derniere image a afficher tu affiche, sinon tu fait rien.

    Envoi moi ton code qui liste toutes les images de ton répertoire, ou dis moi si tu ne l'a pas fait!

  7. #7
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voila ce que j'ai fait jusqu'a présent :
    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
    35
     
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
    //définir l'offset, la foto par laquelle on commence
    //on fait un while sur le repertoire a afficher
     
     
    //compter le nombre de fichier
    $files = glob("images/min/*.*");
    $compteur = count($files);
     
    //definir le nombre d'image par page que l'on souhaite
    $pagination=16;
    $nombreDePages=ceil($compteur/$pagination);
     
    //affichage des image en fonction de la page choisie
    for ($i = GET[page]*pagination; $i <= GET[page]*(pagination+1); $i++)
    {
    echo '$files[i]';
    }
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pages
     
     
    ?>
    </body>
    </html>

  8. #8
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    Si $file contient le tableau de tes images fait

    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
    35
    36
    37
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
    //définir l'offset, la foto par laquelle on commence
    //on fait un while sur le repertoire a afficher
     
     
    //compter le nombre de fichier
    $files = glob("images/min/*.*");
    $compteur = count($files);
     
    //definir le nombre d'image par page que l'on souhaite
    $pagination=16;
    $nombreDePages=ceil($compteur/$pagination);
     
    //affichage des image en fonction de la page choisie
    for ($i = ($_GET['page']-1)*$pagination; $i <= $_GET['page']*$pagination); $i++)
    {
      echo $files[$i];
    }
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pagese
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        echo '<a href="?page=' . $i . '">' . $i . '</a> ';
    }
     
    ?>
    </body>
    </html>

  9. #9
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    slt,
    voici ce que j'ai fait :
    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
    35
    36
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
     
    <body>
    <?php
    //compter le nombre de fichier
    $files = glob("images/min/*.*");
    $compteur = count($files);
     
    //definir le nombre d'image par page que l'on souhaite
    $pagination=16;
    $nombreDePages=ceil($compteur/$pagination);
     
    if (isset($_GET['page'])) $page = $_GET['page'];
    else $page = 0;
     
    //affichage des image en fonction de la page choisie
    for($i = ($page-1)*$pagination; $i <= $page*$pagination; $i++)
    {
      echo' <img src="images/min/<?php echo $[$i] ?>" />';
    }
     
    // Puis on fait une boucle pour écrire les liens vers chacune des pagese
    for ($i = 1 ; $i <= $nombreDePages ; $i++)
    {
        echo '<a href="?page=' . $i . '">' . $i . '</a> ';
    }		
     
    ?>
    </body>
    </html>
    mais je ne sais pas comment gérer l'affichage des images en fonction du choix.
    avez vous des conseils?
    merci

  10. #10
    Débutant Avatar de VIRGINIE87
    Femme Profil pro
    Sans Emploi
    Inscrit en
    Avril 2006
    Messages
    286
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Sans Emploi

    Informations forums :
    Inscription : Avril 2006
    Messages : 286
    Points : 72
    Points
    72
    Par défaut
    voici le nouveau code que j'ai réalisé, mais je n'arrive toujours pas à afficher les images en fonction de la page choisie :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
     
    <?php
    	if(!empty ($_FILES)){
    		require("imgClass.php");
    		$img=$_FILES['img'];
    		$ext=strtolower(substr($img['name'],-3));
    		$allow_ext = array("jpg","png","gif");
    		if(in_array($ext,$allow_ext)){
    			move_uploaded_file($img['tmp_name'],"images/".$img['name']);
    			Img::creerMin("images/".$img['name'],"images/min",$img['name'],215,112);
    			Img::convertirJPG("images/".$img['name']);
    		}
    		else
    			$erreur = "votre fichier n'est pas une image";
    	}		
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html lang="fr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     
    		<script type="text/javascript" src="zoombox/jquery.js"></script>
    		<script type="text/javascript" src="zoombox/zoombox.js"></script>
     
    		<link href="zoombox/zoombox.css" rel="stylesheet" type="text/css" media="screen" />
    	</head>
    	<body>
    		<?php
    			if(isset($erreur))
    				echo $erreur;
     
    			$dos="images/min";
    			$dir = opendir($dos);
    			while($file= readdir($dir))
    			{
    				$allow_ext = array("jpg",'png','gif');
    				$ext=strtolower(substr($file,-3));
    				if(in_array($ext,$allow_ext))
    				{
    				}
    			}
    			$files = glob("images/min/*.*");
    			$compteur = count($files);
    			$nb_colonne=4;
    			$nb_ligne= ($compteur) / ($nb_colonne);
    		?>
    		<table>
    			<?php
    				for ($i = 0; $i < $compteur; $i+=4) // On augmente de 4 à chaque passage de la boucle et elle tourne tant qu'on a pas atteint le compte
    				{ 
    					echo '<tr>';
     
    					for ($j = $i; $j < ($i + 4); $j++) // Les quatre prochains fichiers
    						if (isset($files[$j])) // Vérifie qu'on n'est pas rendu trop loin
    							echo '<td><a href="'.$files[$j].'"  rel="zoombox[galerie]" ><img src="' . $files[$j] . '" alt="Image" ></a></td>'; // Le nom du fichier en cours
     
    					echo '</tr>';
    				}
    				$adresse = "images/min/"; //Adresse du dossier.
    				$dossier = opendir($adresse); //Ouverture du dossier. 
     
    				$fichiertxt = 'donnees.txt'; // fichier texte
    				$tab = array_map('trim', file($fichiertxt));
    				$f = fopen($fichiertxt, 'a+'); // lecture écriture
    				$dossier2 = 'H:\\Wamp\\wamp\\www\\images\\min';
     
    				if($dossiera = opendir($dossier2))  // si le dossier recherché existe
    				{
    					while($fichier = readdir($dossiera)) // on lit les fichiers du dossier
    					{
    						if($fichier != '.' && $fichier != '..' && $fichier != 'Thumbs.db' AND !in_array($fichier, $tab)) // on ne traite pas ces fichiers
    							fwrite($f, $fichier."\n"); // on enregistre à la fin
    					} // on termine la boucle
     
    					closedir($dossiera); // on ferme le dossier
    				}
     
    				fclose($f); // on ferme
    			?>
    		</table>
    		<?php
    			//compter le nombre de fichier
    			$files = glob("images/min/*.*");
    			$compteur = count($files);
     
    			//definir le nombre d'image par page que l'on souhaite
    			$pagination=16;
    			$nombreDePages=ceil($compteur/$pagination); 
     
    			if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    			{
    				$pageActuelle=intval($_GET['page']);
     
    				if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
    					$pageActuelle=$nombreDePages;
    			}
    			else // Sinon
    				$pageActuelle=1; // La page actuelle est la n°1
     
    			$premiereEntree=($pageActuelle-1)*$pagination;
    			// Puis on fait une boucle pour écrire les liens vers chacune des pages
    			for ($i = 1 ; $i <= $nombreDePages ; $i++)
    			{
    				if($i==$pageActuelle)
    					echo ' [ '.$i.' ] '; 
    				else
    					echo '<a href="?page=' . $i . '">' . $i . '</a> ';
    			}
     
    			foreach(array_slice($files, $premiereEntree, $pagination) as $image)
    				echo '<img src="images/min/'.$image.'" />';
    echo '<pre>'.print_r($GLOBALS,1).'</pre>'; 
    		?>
    	</body>
     
    </html>
    pour gérer l'affichage j'ai fait cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    foreach(array_slice($files, $premiereEntree, $pagination) as $image)
        echo '<img src="images/min/'.$image.'" />';
    mais je sais pas si cela est correct et si je l'ai positionné à la bonne place.
    donnez-moi des conseils.
    merci

  11. #11
    Membre actif Avatar de firehist
    Homme Profil pro
    Intégrateur Web Freelance
    Inscrit en
    Février 2008
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur Web Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2008
    Messages : 151
    Points : 214
    Points
    214
    Par défaut
    J'edit ce message dans la journée avec ta réponse

Discussions similaires

  1. Pb pour import d'une grosse grosse base de données
    Par xave dans le forum Décisions SGBD
    Réponses: 13
    Dernier message: 20/08/2009, 14h32
  2. Remplire une grille sans base de données.
    Par dlefebvre dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/07/2008, 20h52
  3. Réponses: 3
    Dernier message: 01/03/2007, 21h54
  4. [MySQL] Système de pagination pour une galerie photo
    Par Badaboumpanpan dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/06/2006, 15h31
  5. probléme pour faire une copie de base de donnée
    Par nours33 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 31/12/2005, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo