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 :

Pagination multiple même fichier [MySQL]


Sujet :

PHP & Base de données

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de dancom5
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    808
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56

    Informations forums :
    Inscription : Janvier 2010
    Messages : 808
    Par défaut Pagination multiple même fichier
    Bonjour les développeurs :-)

    J'ai fais un code PHP pour associer les articles aux catégories et afficher les catégories qui n'ont rien. J'ai ajouter une limite page par page à chaque catégorie pour limiter le nombre d'article par affichage.

    Le problème est que ma pagination est dépendante de toutes les catégories. Et que si j'ai un article dans une catégorie mais que dans un autre, j'en ai plusieurs. La catégorie qui en a moins, il n y aura plus d'affichage.

    Mes deux TABLES:
    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
    CREATE TABLE IF NOT EXISTS `categorie` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `categorie` varchar(222) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
     
    INSERT INTO `categorie` (`id`, `categorie`) VALUES
    (1, 'VOITURES'),
    (2, 'ORDINATEURS'),
    (3, 'NOURRITURE'),
    (4, 'JOUETS');
     
     
     
    CREATE TABLE IF NOT EXISTS `article` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `categorie_id` int(11) NOT NULL,
      `article` varchar(222) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `categorie_id` (`categorie_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    INSERT INTO `article` (`id`, `categorie_id`, `article`) VALUES
    (1, 2, 'dell'),
    (2, 2, 'hp'),
    (3, 1, 'Minoune'),
    (4, 1, 'carcasse'),
    (5, 3, 'pommes'),
    (6, 2, 'clone');
    Mon code PHP :
    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
    <?php
    include 'config_open_db.php';
     
    $sql="SELECT * FROM categorie";
     
    $rs=mysqli_query($conn,$sql);
    if(!$rs) die("Probleme : ". mysqli_error($conn));
     
    echo '<table align="center">';
     
    		while($row=mysqli_fetch_array($rs)){
          echo '<tr>';
            echo '<td bgcolor="#ddd">'.$row['categorie'].'</td>';
     
    						if( isset($_GET['page']) && is_numeric($_GET['page']) )
    								$page = $_GET['page'];
    						else
    								$page = 1;
    						$pagination = 1;
    						$limit_start = ($page - 1) * $pagination;
     
    						$asql="
    							SELECT article.id, article.article, article.categorie_id
    							FROM article
    							WHERE article.categorie_id = ".$row['id']."
    							LIMIT $limit_start, $pagination
    						";
    						$ars=mysqli_query($conn,$asql);
    						if(!$ars) die("Probleme : ". mysqli_error($conn));
     
    						while($arow=mysqli_fetch_array($ars)){
    								echo '</tr><td> - '.$arow['article'].'</td><tr>';
    						}
     
              echo '</tr><tr><td>';
     
    						$nb_total = mysqli_query($conn,'SELECT COUNT(*) AS nb_total FROM article WHERE article.categorie_id = '.$row['id']);
    						$nb_total = mysqli_fetch_array($nb_total);
    						$nb_total = $nb_total['nb_total'];
     
    						$nb_pages = ceil($nb_total / $pagination);
    						if ($page > 1)
    										echo ' <a href="?page='.($page-1).'"><</a> ';
    								else
    										echo ' < ';
    								echo '<strong>'.$page.'</strong> of '.$nb_pages;
    								if ($page < $nb_pages)
    										echo ' <a href="?page='.($page+1).'">></a> ';
    								else
    										echo ' > ';
     
    					echo '<hr></td></tr>';
     
    		}
     
    echo '</table>';
     
    mysqli_close($conn);
    ?>
    Le code PHP fonctionne très bien, mes catégories ainsi que les articles s'affichent respectivement.

    C'est le page par page qui est un problème. Si je n'avais qu'une seule catégorie a afficher, je n'aurais pas à poster mais je veux afficher toutes les catégories avec leur contenu.

    Si je change de page dans une catégorie, ça change partout. Et si j'ai rien dans une catégorie, ça va incrémenté de 1 quand même.

    Correct : 1 of 3
    pas correct : 5 of 3

    La pagination est au plus simple possible, juste avec un précédent et un suivant.

    Si quelqu'un a une idée pour ne pas que mes articles que ça incrémente pas quand je clique sur les autres "suivant".

    De l'aide serait apprécié.
    Images attachées Images attachées  

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

Discussions similaires

  1. Chargement multiple d'un même fichier XML
    Par noblind dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 08/02/2011, 11h17
  2. Réponses: 3
    Dernier message: 25/01/2010, 13h49
  3. Macro pour sauvegardes multiples d'un même fichier
    Par gigotdagneau dans le forum Conception
    Réponses: 11
    Dernier message: 26/10/2009, 12h26
  4. Réponses: 5
    Dernier message: 08/12/2004, 20h42
  5. utiliser le même fichier dans plusieurs projets vc++6
    Par yannick_sch dans le forum MFC
    Réponses: 5
    Dernier message: 12/02/2004, 17h39

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