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 avec class pdo / mysql


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut Pagination avec class pdo / mysql
    Bonjour,

    j'ai afficher la liste de ma table avec ma class sur mon theme actuel j'ai une fausse pagination.

    Je souhaiterai remplacer par une pagination pdo avec une classe.

    j'ai trouvé ceci :

    voici ce que j'ai fait j'ai bien une pagination 1 à 3.

    Mais l'annuaire reste complet sur chaque page plutot que de se diviser en 3 pages.

    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
    		<div class="row span-none">
     
    								foreach($managerServicePublic->getListGroupByPivot() as $lstAll) 
    								{
    									<div class="col-md-4">
    										<a href="listing-details.html">
    											<div class="list-mig-like-com com-mar-bot-30">
     
    												<div class="list-mig-lc-con">
     
    													<h5>echo'$lstAll->getPivot()'</h5>
    													<h6>echo'$lstAll->getTypeService()'</h6>
    													<p>echo'$lstAll->getCommune()'</p>
    												</div>
    											</div>
    										</a>
    									</div>
     
    										}
     
     
    $nbElements = $managerServicePublic->countGroupByPivot();
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(3);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
     
    echo'$paginationFinal';
    mes fonctions des mes classes :
    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
     
     
    public function countGroupByPivot()
    	{
    		return $this->db->query('SELECT COUNT(*) FROM service group by pivot')->fetchColumn();
    	}
     
    public function getListGroupByPivotLocal($debut = -1, $limite = -1)
    	{
     
    		$listeService = array();
     
    		$sql = 'SELECT id_service,id_data,code_insee,date_maj,pivot,..... FROM service group by pivot';
     
     
    		if ($debut != -1 || $limite != -1)
    		$sql .= ' LIMIT ' . (int) $debut . ', ' . (int) $limite;
     
    		$requete = $this->db->query($sql);
     
    		while ($Service = $requete->fetch(PDO::FETCH_ASSOC))
    		$listeService[] = new Service ($Service);
     
    		$requete->closeCursor();
     
     
    		return $listeService;
     
     
    	}

    j'ai du effectuer un group by car dans ma base de donnée j'ai des infos d'annaire avec des pivot identique tels que mairie,etc,..
    merci pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Salut,

    Ton code returne t-il des erreurs? pourquoi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo'$lstAll->getPivot()'
    n'a t'il pas de balise php? ta classe pagination? Ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nbElements = $managerServicePublic->countGroupByPivot();
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(3);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    devrait peut-être avant l'affichage, de plus
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($managerServicePublic->getListGroupByPivot() as $lstAll)
    ou est initialisé .

  3. #3
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    Salut,


    n'a t'il pas de balise php? ta classe pagination?

    -> ici c'est l'initialisation de la classe sur ma page annuaire.

    -> j'ai bien un <?php j'ai juste affiché la partie concerné de la page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $nbElements = $managerServicePublic->countGroupByPivot();
    $PaginationFinal = new Pagination();
    $PaginationFinal->setCurrentPage($_GET['page']);
    $PaginationFinal->setInnerLinks(3);
    $PaginationFinal->setNbElementsInPage(12);
    $PaginationFinal->setNbMaxElements($nbElements);
    $paginationFinal = $PaginationFinal->renderBootstrapPagination();
    devrait peut-être avant l'affichage, de plus
    foreach($managerServicePublic->getListGroupByPivot() as $lstAll) ou est initialisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $managerServicePublic.

    -> au debut de ma page j'ai initialiser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $managerServicePublic = new ServicePublicManager_PDO($db);
    include '../lib/pagination.class.php';
    mon code fonctionne très bien pour l'affichage de l'annuaire sauf la pagination que je veux .

    par contre j'ai fais un print_r de SELECT COUNT(*) FROM ef_service group by pivot et ca renvoi
    43 et le resultat su phpmyadmin :
    43
    151
    198
    53
    211
    367
    83
    39
    3
    245
    250
    82
    353
    9
    1640
    3
    27
    284
    181
    282
    43
    94
    161
    183
    201
    165
    159
    1753
    589
    122
    Je ne comprend pas pourquoi il affiche pas un total mais plusieurs et que la fonction la 1 valeur du count ?

    merci

  4. #4
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    par contre j'ai fais un print_r de SELECT COUNT(*) FROM ef_service group by pivot et ca renvoi
    43 et le resultat su phpmyadmin
    C'est normal https://secure.php.net/manual/fr/pdo...etchcolumn.php fetchcolumn retourne 1 résultat, or le group by https://www.w3schools.com/sql/trysql...select_groupby va grouper tes éléments par pivot et puisque tu as plusieurs pivots différents.

    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach($managerServicePublic->getListGroupByPivot() as $lstAll)
    Tu ne modifie pas les paramètres, donc puisque tes valeurs sont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $debut = -1, $limite = -1
    ton limite n'est pas appliqué. Fait un var_dump de ta requête sql pour en être certains.

    Tu dois récupérer ta page puis passer en paramètre de ta fonction, le nombre d'élément ce qui te donnera le début $debut=numpage*nombreelement et ta limite ici 12.

  5. #5
    Membre éprouvé
    Inscrit en
    Janvier 2008
    Messages
    1 159
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 159
    Par défaut
    j'ai fait un var dump

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($managerService->getListGroupByPivot() as $lstAll) 
    {
    	var_dump($lstAll);
    mais rien est retournée ?

    merci pour votre aide.

  6. #6
    Membre Expert

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 583
    Par défaut
    Le var_dump sert juste à débugger, si tu fais un die après le var_dump?
    Dans ton foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    // si on a une page et que c'est un entier alors ok si on initialise à null
    $page = (!empty($_GET['page']) && is_int($_GET['page'])) ? $_GET['page'] : null;
    $limit = 12;
    // le debut corresond au nombre d'élément par page * le numéro de la page - 1, exemple page 2 j'ai donc 2- 1 * 12 = 12. Vaut mieux utiliser une variable pour le nombre élément.
    $debut = ($page - 1) * $limit;
    foreach($managerServicePublic->getListGroupByPivot($debut, $limit) as $lstAll)
    J'ai pas tester il faut que tu adaptes je pense

Discussions similaires

  1. [PDO] LOAD DATA LOCAL INFILE avec PDO MySql
    Par ultimus dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 01/07/2015, 11h54
  2. [MySQL] Class pagination avec problème d'affichage
    Par eltyty dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 09/07/2011, 11h48
  3. Pagination avec PHP et Mysql
    Par __fabrice dans le forum Flash
    Réponses: 2
    Dernier message: 27/09/2006, 14h17
  4. Problème avec classe MySQL
    Par shadeoner dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/07/2006, 11h25
  5. Réponses: 6
    Dernier message: 15/05/2005, 14h11

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