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 :

Aide sur pagination


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Aide sur pagination
    Bonjour

    Voilà je vais essayer de vous expliquer!
    J'ai un formulaire d'upload de fichier pour une partie admin qui fonctionne très bien !
    Ensuite je fais un boucle qui liste tout les fichiers uploader avec un lien pour pouvoir les supprimer mais je voudrais pouvoir faire un système de pagination sans BDD et je ne vois pas du tout comment m'y prendre !

    Voiçi le bout de code qui permet l'affichage des images avec le lien de suppression :
    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
     
    <?php
    $adresse = "./images/"; //Adresse du dossier.
    if(isset($_GET['nom'])) //Si $_GET['nom'] existe, on supprime le fichier...
    {
         if ($Fichier != "." && $Fichier != "..") 
         {
              $nom=''.$adresse.'/'.$_GET['nom'].'';
              unlink($nom);
              $page_texte .= '<p style="text-align:center; font-style:italic; color:#C00;">Le fichier "'.$_GET['nom'].'" a été éffacé !</p><br>';
         }
    } 
     
     
    $page_texte .= '<fieldset><legend>Image de la galerie</legend><br /><br /><p align="center">';
    $dossier = opendir($adresse);
    while ($Fichier = readdir($dossier)) 
    {
      if ($Fichier != "." && $Fichier != "..") 
      {
    	  $i++;
    		// On peut afficher l'image.
    		$page_texte .='<a href="index.php?page=Admin_Galerie&amp;nom='.$Fichier.'">Supprimer</a> ==> <img src='.$adresse.$Fichier.' width="100" height="100" /></a>&nbsp;&nbsp;';
    		if($i == 4){
    			$i = 0;
    			$page_texte .="<br/><br />";			
    			}
      }
    }
    $page_texte .='</p></fieldset>';
    closedir($dossier); //Fermeture du dossier.
    ?>
    Ensuite il faut savoir que sur le site j'utilise déjà un système de pagination peut-être qu'il faut utilisé ce code :
    L'exemple vient de la liste des membres : (mais par BDD)
    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
     
    <?php
        // Liste des pages
        if ( $nbr_membre > $configuration['page_membres'] )
        {
            $liste_page_haut = "<tr>\n  <td colspan=\"4\">" . $langue['page'] . "&nbsp;:\n";
     
            for ( $i = 1 ; $i <= $nbr_page ; $i++ )
            {
                $affiche_numero = false;
     
                for ( $numero = 1 ; $numero <= $configuration['numero_debut'] ; $numero++ )
                {
                    if ( $i == $numero ) $affiche_numero = true;
                }
     
                if ( !$affiche_numero )
                {
                    for ( $numero = $page_actuelle - $configuration['numero_autour'] ; $numero <= $page_actuelle + $configuration['numero_autour'] ; $numero++ )
                    {
                        if ( $i == $numero ) $affiche_numero = true;
                    }
                }
     
                if ( !$affiche_numero )
                {
                    for ( $numero = $nbr_page + 1 - $configuration['numero_fin'] ; $numero <= $nbr_page ; $numero++ )
                    {
                        if ( $i == $numero ) $affiche_numero = true;
                    }
                }
     
                if ( $affiche_numero ) 
                {
                    $liste_page_haut .= '    <a href="index.' . EXT . '?page=Liste_des_membres&start=' . ( $i - 1 ) * $configuration['page_membres'] . '" title="' . $langue['page_goto'] . $i . '">';
                    $liste_page_haut .= ( $start == ( $i - 1 ) * $configuration['page_membres'] ) ? '<span class="page_actuelle">' . $i . "</span></a>\n" : $i . "</a>\n";
                    $trois_petits_points = false;
                }
                else if ( !$trois_petits_points )
                {
                    $liste_page_haut .= "    ...\n";
                    $trois_petits_points = true;
                }
            }
     
            $liste_page_haut .= "  </td>\n</tr>\n";
     
            $liste_page_bas = "<tfoot>\n<tr>\n  <td colspan=\"4\">" . $langue['page'] . "&nbsp;:\n";
     
            for ( $i = 1 ; $i <= $nbr_page ; $i++ )
            {
                $affiche_numero = false;
     
                for ( $numero = 1 ; $numero <= $configuration['numero_debut'] ; $numero++ )
                {
                    if ( $i == $numero ) $affiche_numero = true;
                }
     
                if ( !$affiche_numero )
                {
                    for ( $numero = $page_actuelle - $configuration['numero_autour'] ; $numero <= $page_actuelle + $configuration['numero_autour'] ; $numero++ )
                    {
                        if ( $i == $numero ) $affiche_numero = true;
                    }
                }
     
                if ( !$affiche_numero )
                {
                    for ( $numero = $nbr_page + 1 - $configuration['numero_fin'] ; $numero <= $nbr_page ; $numero++ )
                    {
                        if ( $i == $numero ) $affiche_numero = true;
                    }
                }
     
                if ( $affiche_numero ) 
                {
                    $liste_page_bas .= '    <a href="index.' . EXT . '?page=Liste_des_membres&start=' . ( $i - 1 ) * $configuration['page_membres'] . '" title="' . $langue['page_goto'] . $i . '">';
                    $liste_page_bas .= ( $start == ( $i - 1 ) * $configuration['page_membres'] ) ? '<span class="page_actuelle">' . $i . "</span></a>\n" : $i . "</a>\n";
                    $trois_petits_points = false;
                }
                else if ( !$trois_petits_points )
                {
                    $liste_page_bas .= "    ...\n";
                    $trois_petits_points = true;
                }
            }
     
            $liste_page_bas .= "  </td>\n</tr>\n</tfoot>\n\n";
        }
    ?>
    Merci pour votre aide
    Cordialement Nathan

  2. #2
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    Au moment ou tu boucles sur ta liste de fichiers, il faut que tu vérifies que le fichier que tu veux afficher fait partie de la page
    En gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    define('NB_PAR_PAGE',10);
    $pageDebut = $_GET['PAGE']*Nb_PAR_PAGE;
    $pageFin = $pageDebut+NB_PAR_PAGE;
    while ($Fichier = readdir($dossier)) {
      if ($Fichier != "." && $Fichier != "..")   {
    	$nbFichiers++;
            if ( $nbFichiers > $pageDebut && $nbFichiers < $pageFin ) {
    	// On peut afficher l'image.
            }
       }
    }
    Ensuite il te resta à faire des liens en fonctions du nombre de fichiers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for($i=1;$i<=$nbFichiers/NB_PAR_PAGE;++$i){
       echo '<a href="monscript.php?PAGE='.$i.'">page '.$i.'</a>';
    }
    Evidemment, là c'est un exemple, il faudra gérer des valeurs entières pour le nombre de pages, mais l'idée est là
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour la réponse rapide.

    J'ai essayé mais là je patine
    Voilà 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
    37
    38
    39
    40
    41
     
    <?php
    $adresse = "./images/"; //Adresse du dossier.
    define('NB_PAR_PAGE',10);// Nombre de fichier par page
    $pageDebut = $_GET['PAGE']*Nb_PAR_PAGE;// Début
    $pageFin = $pageDebut+NB_PAR_PAGE;// Fin
    if(isset($_GET['nom'])) //Si $_GET['nom'] existe, on supprime le fichier...
    {
         if ($Fichier != "." && $Fichier != "..") 
         {
              $nom=''.$adresse.'/'.$_GET['nom'].'';
              unlink($nom);
              $page_texte .= '<p style="text-align:center; font-style:italic; color:#C00;">Le fichier "'.$_GET['nom'].'" a été éffacé !</p><br>';
         }
    } 
     
     
    $page_texte .= '<fieldset><legend>Image de la galerie</legend><br /><br /><p align="center">';
    $dossier = opendir($adresse);
    while ($Fichier = readdir($dossier)) 
    {
      if ($Fichier != "." && $Fichier != "..") 
      {
    	  $i++;
    	  $nbFichiers++;
            if ( $nbFichiers > $pageDebut && $nbFichiers < $pageFin ) {
    		// On peut afficher l'image.
    		$page_texte .='<a href="index.php?page=Admin_Galerie&amp;nom='.$Fichier.'">Supprimer</a> ==> <img src='.$adresse.$Fichier.' width="100" height="100" /></a>&nbsp;&nbsp;';
    		if($i == 4){
    			$i = 0;
    			$page_texte .="<br/><br />";
    				for($i=1;$i<=$nbFichiers/NB_PAR_PAGE;++$i){
    				   $page_texte .= '<a href="index.php?page=Admin_Galerie&amp;'.$i.'">page '.$i.'</a>';
    				}
    			}
    		}
      }
    }
    $page_texte .='</p></fieldset>';
    closedir($dossier); //Fermeture du dossier.
    ?>
    A mon avis je dois tout mélangé et très certainement comme un "naze".

    Merci encore

  4. #4
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    la boucle for construisant la pagination doit se situer en dehors et après la boucle while sur les fichiers.

    De plus je viens de voir qu'il faut commencer la boucle à 0 sinon on loupe la première page. J'ai ajouté un test également sur la valeur reçue en get

    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
     
    $adresse = "./images/"; //Adresse du dossier.
    define('NB_PAR_PAGE',10);// Nombre de fichier par page
    $pagecourante = 0;
    if ( !empty($_GET['PAGE']) ){
    	$pagecourante=$_GET['PAGE'];
    }
    $pageDebut = $pagecourante*Nb_PAR_PAGE;// Début
    $pageFin = $pageDebut+NB_PAR_PAGE;// Fin
    if(isset($_GET['nom'])) //Si $_GET['nom'] existe, on supprime le fichier...
    {
         if ($Fichier != "." && $Fichier != "..") 
         {
              $nom=''.$adresse.'/'.$_GET['nom'].'';
              unlink($nom);
              $page_texte .= '<p style="text-align:center; font-style:italic; color:#C00;">Le fichier "'.$_GET['nom'].'" a été éffacé !</p><br>';
         }
    } 
     
     
    $page_texte .= '<fieldset><legend>Image de la galerie</legend><br /><br /><p align="center">';
    $dossier = opendir($adresse);
    while ($Fichier = readdir($dossier)) 
    {
      if ($Fichier != "." && $Fichier != "..") 
      {
    	  $i++;
    	  $nbFichiers++;
            if ( $nbFichiers > $pageDebut && $nbFichiers < $pageFin ) {
    		// On peut afficher l'image.
    		$page_texte .='<a href="index.php?page=Admin_Galerie&amp;nom='.$Fichier.'">Supprimer</a> ==> <img src='.$adresse.$Fichier.' width="100" height="100" /></a>&nbsp;&nbsp;';
    		if($i == 4){
    			$i = 0;
    			$page_texte .="<br/><br />";
    			}
    		}
      }
    }
    $page_texte .='</p></fieldset>';
    for($i=0;$i<$nbFichiers/NB_PAR_PAGE;++$i){
    	$page_texte .= '<a href="index.php?page=Admin_Galerie&amp;'.$i.'">page '.$i.'</a>';
    }
    closedir($dossier); //Fermeture du dossier.
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pour la pagination vu j'ai compris mon erreur par contre quand je change de page c'est toujour les mêmes images et non pas les autres !

    Je sais pas si j'ai été super clair au pire c'est un site ou je fais des test donc si tu veux voir je te donne l'adresse et les accès par MP si tu le souhaite bien sur !

    Merci encore pour t'as gentillesse

Discussions similaires

  1. Aide sur les Class, Pagination
    Par roukgreg dans le forum Langage
    Réponses: 3
    Dernier message: 08/06/2010, 14h11
  2. Aide sur système de news et pagination
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 18/11/2009, 08h53
  3. Réponses: 2
    Dernier message: 27/02/2003, 01h33
  4. [Kylix] Aide sur BitBlt
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 10/12/2002, 22h54
  5. Aide sur une fenetre
    Par Ray-j dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 29/11/2002, 08h51

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