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 :

[POO] Affichage page par page


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut [POO] Affichage page par page
    Bonjour. Ayant commencé la POO dernierement, je me demandais s'il était possible de limiter l'affichage comme cela se fait ( sans la POO) avec une requete SQL. En fait, j'utilise une classe collection (classe qui regroupe plusieurs objets du meme type), dont je me sert afin d'extraire chaque objet à afficher.
    Cela est-il possible ? Auriez-vous une solution à me proposer ?
    Merci d'avance.

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    tu peux faire la même chose en POO ensuite ça dépend comment tu veux utiliser ta classe
    montre nous ce que tu as déjà essayé

  3. #3
    Nouveau membre du Club Avatar de anakronox
    Inscrit en
    Novembre 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 49
    Points : 34
    Points
    34
    Par défaut
    Mes essaies n'ont pas été très concluant. Le seul qui se rapprochait du résultat souhaité, étai avec l'utilisation d'une classe pagination (écrite par quelqu'un d'autre, FhX):
    Voici le code(tel qu'il était sur le site source):
    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
     
       class Pagination 
     {
    	public $output; // Sortie HTML;
    	public $nbtotal; // Nombre total de liens, de news, de n'importe quoi :)
    	public $_getName; // Nom du _GET pour l'affichage des pages !
     
    	public $nbmaxparpage; // Nombre d'affichage par page
    	private $nbdepages; // Nombre de pages nécessaires
    	public $minid; // Retourne l'ID du premier enregistrement pour la page en cours
     
    	public function __construct( $nbtotal, $nbmaxparpage = 10, $getName = 'page') 
    	{
    		$this->nbtotal = (int) $nbtotal;
    		$this->nbmaxparpage = (int) $nbmaxparpage;
    		$this->nbdepages = ceil($this->nbtotal / $this->nbmaxparpage);
    		$this->_getName = $getName;
    	}
     
    	public function Generate() 
    	{
    		unset($this->output);
     
    		$pageencours = ( isset($_GET[$this->_getName]) && (int) $_GET[$this->_getName] > 1 ) ? (int) $_GET[$this->_getName] : 1;
    		$this->minid = ( $pageencours - 1 ) * $this->nbmaxparpage;
    		if ( $this->nbdepages > 1 ) 
    		{
    			for ( $i=1; $i <= $this->nbdepages; $i++ ) 
    			{
    				if ( $i === $pageencours ) 
    				{
    					$this->output[] = array('link' => FALSE, 'page' => $i);
    				} else 
    				{
    					$this->output[] = array('link' => TRUE, 'page' => $i);
    				}
    			}
    		}
    		else 
    		{
    			$this->output = NULL;
    		}
     
    	}
     
     }
     
    <?php
    //L'utilisation ?
     
     $query = mysql_query('SELECT COUNT(*) FROM news');
     $data = mysql_fetch_row($query); // Supposons que vous récupérer le nombre max de news
     $num_rows = (int) $data[0];
     
     $Pagination = new Pagination ( $num_rows, 10 ); // Affichera 10 news par page
     $Pagination->Generate; // Génére la pagination (peut y avoir d'autres options à changer avant, c'est vous qui voyez !)
     
     if ( isset($Pagination->output) && is_array($Pagination->output) ) 
    { // On vérifie que y'a bien un output, sinon on zap !
          $var = '<span> Page : ';
         foreach ( $Pagination->output as $key )
         { // On parcours le tableau
               if ( $key['link'] ) 
              {
                    $var .= '<a href="./news.php'.$Pagination->_getName.'='.$key['page'].'">'.$key['page'].'</a> ';
              }
             else 
             {
                    $var .= $key['page'].' '; // Si on est sur la bonne page, on met pas de lien.
              }
         }
        $var .= '</span>';
      }
     
     if ( isset($var) ) echo $var; // On affiche le tout.
     
     ?>
    Et voici mon utilisation:
    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
     
    $Pagination = new Pagination ( $nbSujets, 1 );
    	$Pagination->Generate();
    	if ( isset($Pagination->output) && is_array($Pagination->output) ) 
    	{ // On vérifie que y'a bien un output, sinon on zap !
    		$var = '<span> Page : ';
     
     
    		echo "<table width=80% border=00 cellspacing=00 cellpadding=0>";
    		echo "<tr class='head'><td>";
    		echo "Les sujets :</td><td>Auteur:</td>";
    		foreach ( $Pagination->output as $key ) 
    		{ // On parcours le tableau
    			if ( $key['link'] ) 
    			{
    				// Mon probleme provient surement de cette ligne
    				$var .= '<a href="'.$_SERVER['PHP_SELF'].'&'.$Pagination->_getName.'='.$key['page'].'">'.$key['page'].'</a> ';
     
     
    				echo "<tr><td>";
    				$unSujet = $collectionSujet->current(); // on extrait le sujet en cours
    				$unSujet->afficherSujet();
    				echo "</td>";
    				echo "<td>";
    				$unSujet->afficherAuteur();
    				echo "</td></tr>";
    				$collectionSujet->has_next(); // On passe au sujet suivant
     
    			}	 
    			else 
    			{
    				$var .= $key['page'].' '; // Si on est sur la bonne page, on met pas de lien.
    			}
    		}
    		echo "</table>";
    		$var .= '</span>';
    	}
     
    	if ( isset($var) ) echo $var; // On affiche le tout.
    Je pense que mon probleme provient du fait que je n'ai pas trop compris comment afficher les autres pages( la ligne ou il y a: $var .= '<a href="'...). Auriez vous une idée ?

Discussions similaires

  1. Affichage ipconfig /displaydns page par page? windows7
    Par destructive.flame dans le forum Windows
    Réponses: 1
    Dernier message: 28/02/2014, 08h00
  2. [MySQL] Affichage du résultat page par page (pagination)
    Par marcito dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 20/07/2007, 14h53
  3. [MySQL] Affichage page par page et requêtes du type $sql .=
    Par carelha dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 06/04/2006, 17h12
  4. [Tableaux] PB liens apres affichage page par page
    Par x2thez dans le forum Langage
    Réponses: 16
    Dernier message: 15/03/2006, 16h58
  5. [MySQL] afficher plusieurs enregistrements par page par page à la volée
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 14/03/2006, 12h22

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