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

PHP & Base de données Discussion :

[SQL] Pagination d'une galerie photo [Fait]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Par défaut [SQL] Pagination d'une galerie photo
    Bonjour à tous,

    voila j'ai créé une galerie photo qui fonctionne en php et qui va chercher les nom des photos dans une base de données.

    J'ai un problème assez cocasse et je n'arrive pas à le résoudre malgré beaucoup d'essais infructueux.
    J'affiche un certain nombre d'images (que l'utilisateur peut définir ) par page et j'ai créer un bouton suivant et précédent, lorsque je clique sur le bouton suivant il m'affiche la 2eme page mais lorsque je reclique, il ne va pas plus loin. Il réaffiche la 2eme page.

    Voila le code :
    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
    117
    118
    119
    120
    121
    122
    123
    124
    125
    <? 
    	session_start(); 
    	// permet de connaitre le navigateur utilisé (firefox, MSIE,...)
    	include("navigateur.php");
    ?>
     
    <div id="content">
      <?php 
     
    	//variable de session pour garder la séléction sur l'objet de la liste déroulante séléctionnée
    	$Groupe = $_POST['Groupe'];
     
    	//initialize les variable si on vient sur la page pour la 1ere fois
    	if($_SESSION['Selection'] != $Groupe)
    	{
    		$limite=0;
    		$_SESSION['Selection_limite']=0;
    	}
    	$_SESSION['Selection']=$Groupe;
    	$nombre = $_POST['Nombre'];
     
    	if (!isset($nombre)) 
    	{
    	  $nombre = 12;
    	}
     
    	if (!isset($_SESSION['Selection_limite'])) 
    	{
    	  $limite = 0;
    	} 
    	else 
    	{
    	  $limite = $_SESSION['Selection_limite'];	
    	}
    	$nextprev = $_POST['nextprev'];
     
    //test sur quel bouton on a cliquer (suivant, precedent)
    if(isset($nextprev))
    	{
    		if($browser == "MSIE") 
    		{
    			if($nextprev == "<") 
    			{
    				$limite = $limite - $nombre;
    			} 
    			else 
    			{
    				$limite = $limite + $nombre;
    			}
    		}
    		else
    		{
    			if($nextprev == "precedent") 
    			{
    				$limite = $limite - $nombre;
    			} 
    			else 
    			{
    				$limite = $limite + $nombre;
    			}
    		}		
    	}
     
    	$_SESSION['Selection_limite'] = $limite;
     
    	//calcul le nombre d'images total par catégorie
    	$selectTot = "SELECT tbl_Images.Nom, tbl_Images.Description, tbl_Groupe.Groupe FROM tbl_Images 
    		INNER JOIN tbl_Groupe
    		ON tbl_Groupe.PKNoGroupe = tbl_Images.FKNoGroupe WHERE tbl_Groupe.Groupe = '$Groupe';";
    	$resultTot = mysql_query($selectTot) or die ('Erreur : '.mysql_error() );
    	$total = mysql_num_rows($resultTot);
     
    	if($limite < 0)
    	{
    	$limite = 0;
    	}
     
    	if($limite > $total - $nombre)
    	{
    		if($total - $nombre < 0)
    		{
    		$limite = 0;
    		}
    		else
    		{
    		$limite = $total - $nombre;
    		}
    	}
    	?>
    	//permet de choisir la categorie d'image à afficher
      <h2>Cat&eacute;gorie d'images :</h2>
      <p>S&eacute;l&eacute;ctionnez la cat&eacute;gorie et le nombre d'images &agrave; afficher</p>
      <form id="GalerieForm" method="post" action="./index.php?page=galerie_beta.php">
        <div>
          <select name="Groupe" onchange="javascript:this.form.submit()">
            <?php
          $sqlgr="SELECT Groupe FROM tbl_Groupe";
          $resultatgr=mysql_query($sqlgr);
          while($val=mysql_fetch_array($resultatgr)) {
    	  if ($_SESSION['Selection'] == $val["Groupe"])
    		echo "<option  selected='selected'>".$val["Groupe"]."</option>\n";
    	  else
    		echo "<option>".$val["Groupe"]."</option>\n";
          }
    		?>
          </select>
        </div>
        <div>
          <select name="Nombre" class="right" onchange="javascript:this.form.submit()">
            <? //permet de choisir le nombre d'image à afficher par page
    		if ($nombre == 12)
    		{echo "<option value='12' selected='selected'>12</option>";}
    		else
    		{echo "<option value='12'>12</option>";}
    		if ($nombre == 21)
    		{echo "<option value='21' selected='selected'>21</option>";}
    		else 
    		{echo "<option value='21'>21</option>";}
    		if ($nombre == 30)
    		{echo "<option value='30' selected='selected'>30</option>";}
    		else
    		{echo "<option value='30'>30</option>";}
    	?>
          </select>
      </form>
    La page qui pose problème est celle la : http://www.etoileduleman.ch/index.php?page=galerie.php

    Voila j'espère que vous pourrez m'aider à résoudre cette toute dernière difficulté sur ma galerie. Merci d'avance.

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Par défaut
    Moi j'ai ce script pour des articles :
    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
     
    /* Numero de page (1 par défaut) */
    if( isset($_GET['page']) && is_numeric($_GET['page'])) {
       $page = $_GET['page'];
    } else {
       $page = 1;
    }
     
    /* Nombre d'article par page */
    $pagination = 4;
    /* Numéro du 1er enregistrement à lire */
    $limit_start = ($page - 1) * $pagination;
     
    /* Préparation de la requête */
    $sql = "SELECT id, titre, texte, date, align_titre FROM news ORDER BY id LIMIT ".$limit_start.", ".$pagination.";";
    /* Requête SQL */
    $resultat = mysql_query($sql);
    /* Traitement et affichage des données */
    while ( $donnees = mysql_fetch_assoc($resultat) ) {
       ...
       ...
       ...
       // Tu fait ce que tu veux : affichage des photo par exemple    
    }
     
    /* Nb d'enregistrement total */
    $nb_total = mysql_query('SELECT COUNT(*) AS nb_total FROM news');
    $nb_total = mysql_fetch_array($nb_total);
    $nb_total = $nb_total['nb_total'];
     
    /* Pagination */
    $nb_pages  = ceil($nb_total / $pagination);
     
    echo "<div align='center'>[ Page :";
    /* Boucle sur les pages */
    for ($i = 1 ; $i <= $nb_pages ; $i++) {
       if ($i == $page ) {
          echo "&nbsp;".$i."&nbsp;";
       } else {
          echo " <a href=articles.php?page=".$i.">".$i."</a>&nbsp;";
       }
    }
    echo " ]</div>";
    Essaye de t'en inspirer

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Par défaut
    Merci mais t'as solution utilise $_GET alors que moi je l'ai pensé en $_POST ce qui m'obligerais à revoir tout le code, mais c'est peut-etre ce que je vais faire si je n'arrive pas à résoudre mon problème.

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 144
    Par défaut
    L'avantage d'utiliser $_GET est que tu ne passe pas par un formulaire contrairement a $_POST. Je pense que c'est la solution la plus simple vu que les variables $_GET ne correspondent que à "limite" dans SQL. Donc ce ne sont pas des données sensibles

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 47
    Par défaut
    oui c'est surement ce que je vais faire, merci pour l'idée. Par contre juste une petite question, est-ce qu'on peut mélanger du $_POST et $_GET dans la meme page?

  6. #6
    Membre éclairé Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Par défaut
    Oui il me semble l'avoir déjà fait.
    $_GET et $_POST sont indépendants, l'un va te permettre de prendre des variables cachées (POST = "postées"), et l'autre va te permettre de prendre les variables de l'url (GET = envoyées via l'url page.php?monparametre=mavaleur)

    Exemple :
    <form name="monformulaire" method="post" action="mapage.php?parametre_get=choix1">
    <input type="text" name="parametre_poste" value="ici valeur">
    <input type="submit" value="ton bouton" />
    </form>

    En revanche, on n'a pas toujours l'utilité d'utiliser post et get en même temps.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réaliser une galerie photo automatique sans php
    Par vallica dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/10/2006, 10h57
  2. Une Galerie photo
    Par agbononamour dans le forum Langage
    Réponses: 2
    Dernier message: 30/08/2006, 16h20
  3. [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
  4. [Système] Faire une galerie photo simple
    Par titor dans le forum Langage
    Réponses: 10
    Dernier message: 24/06/2006, 21h02

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