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

Zend Framework PHP Discussion :

Pagination avec Sql server [ZF 1.8]


Sujet :

Zend Framework PHP

  1. #1
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut Pagination avec Sql server
    Bonjour,
    Est-il possible, simplement de gérer la navigation sous sql server ?

    Pour info, la méthode limitPage (coté model) fonctionne à moitié: elle permet bien de limiter le nombre de rows retournées mais ne permet pas la pagination.
    Par exemple pour une limite de 5, que j'entre en page 0,1 ou 2 j'ai toujours les 5 premiers résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (
     
    //Fichier model
    $resultSet = $this->getDbTable()->fetchAll(
       $this->getDbTable()->select()->limitPage(N,5)
    );
    Merci d'avance

    Je m'y prends mal ? Est-ce géré en natif, ou dois-je le gérer moi même ?

    note: j'ai regardé un peu du coté de Zend_paginator, mais ca reviens a le gérer en php

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    C'est géré du côté de SQL Server, mais c'et à toi de le mettre en place ZF, le fera lui en PHP avec Zend_Paginator

  3. #3
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    C'est géré du côté de SQL Server, mais c'et à toi de le mettre en place ZF, le fera lui en PHP avec Zend_Paginator
    TU me dis que c'est géré coté SQL Server, donc ZF prevoit donc un moyen (limitPage) pour obtenir cette pagination, non ?

    Zend_Paginator, ca revient a recuperer tout le tableau, puis a le fragmenter a l'affichage, je prefererais gerer la pagination coté sql server

    Ma syntaxe de la pagination dans ma couche modele est elle fausse ?

    Est-ce incorrect ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Fichier model
    $resultSet = $this->getDbTable()->fetchAll(
    $this->getDbTable()->select()->limitPage(N,5)
    );

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 497
    Points : 12 600
    Points
    12 600
    Par défaut
    La doc montre un exemple mais avec un query complet, je ne sais donc si ton exemple est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $select = $db->select()
                 ->from(array('p' => 'products'),
                        array('product_id', 'product_name'))
                 ->limitPage(2, 10);

  5. #5
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    La doc montre un exemple mais avec un query complet, je ne sais donc si ton exemple est bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $select = $db->select()
                 ->from(array('p' => 'products'),
                        array('product_id', 'product_name'))
                 ->limitPage(2, 10);
    Je suis en 1.8, et j'ai suivi le quickstart pour créer mes classes modèles
    Je n'utilise donc pas $db (zend_db) mais $this->getDbTable() qui retourne une instance d'une classe héritant de Zend_Db_Table_Abstract

    source: http://framework.zend.com/docs/quick...database-table

    mais ca revient a peu pres au meme: de mon instance je construit ma requete (select()->where()->limitPage...)

    J'ai donc toujours mon soucis avec limitPage qui ne prends en compte que le second argument
    limitPage(N,4) retourne bien 4 rows, mais peu importe N, j'ai toujours les mêmes rows retournées

  6. #6
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut RESOLU
    Pour essayer de comprendre j'ai fait un print de la requete généré
    J'ai donc vu sa manière de faire un limite basé sur des top de requete dont le tri est inversé

    J'ai donc changé le champ de tri et ca fonctionne désormais

  7. #7
    Rédacteur
    Avatar de imikado
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    5 239
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 239
    Points : 19 100
    Points
    19 100
    Billets dans le blog
    17
    Par défaut
    J'ai remarqué une chose qui va pas: pour la dernière page on récupère trop de rows

    Je m'explique:
    Pour 5 rows en tout, une limite de 4
    Premiere page: 4 rows 1,2,3,4
    Deuxieme page : 4 rows: 2,3,4,5 au lieu d'avoir juste 5

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

Discussions similaires

  1. Pagination ASP avec SQL Server 2005
    Par webshop2 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 15/07/2013, 23h56
  2. [SQL-Server] pagination avec sql server
    Par amel_sh dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/12/2010, 09h34
  3. Pagination PHP avec SQL SERVER
    Par Saramar dans le forum Langage
    Réponses: 1
    Dernier message: 10/07/2009, 11h25
  4. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02
  5. Déployer une appli avec SQL SERVER
    Par tiboleo dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 15/10/2003, 14h29

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