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 :

Affichage des résultats


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Par défaut Affichage des résultats
    Bonjour,

    J'ai un soucis d'affichage des résultats.

    En local, pas de soucis, j'ai un requête qui me permet d’afficher plus de 4000 enregistrements.

    Par contre sur mon serveur, impossible d'afficher la totalité de mes enregistrements. Je ne peux en afficher que 3900 au delà ça plante.

    Je ne comprend pas parce que justement en local, je n'ai pas le problème.

    Merci d'avance pour votre réponse.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Par contre sur mon serveur, impossible d'afficher la totalité de mes enregistrements. Je ne peux en afficher que 3900 au delà ça plante.
    D'accord, mais il peu avoir 1000 raisons pour que ça "plante".
    Donc le minimum c'est de savoir pourquoi, et les retours d'erreurs en Php sont là pour aider à le comprendre.

    Donc as tu un message d'erreur ? (post le, un copier/coller)
    Si tu n'as rien d'affiché, alors il faut activer l'affichage des erreurs (directive display_errors à On).

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Par défaut
    Je n'ai pas de message d'erreur une fois ça s'affiche une non...

    Voici l'url en question: http://site.com/index/recherche?cr=p...0&exp=&dp=&ne=

    A chaque rafraichissement ça change (ça s'affiche, ça s'affiche pas).

    Je pense pas que le problème vienne de mon code.

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 50
    Par défaut
    Elle répond pas à la question de Run' ta réponse.
    Encore pire, en suivant le lien on s'pose encore plus de questions.


    Code incriminé ?
    Message d'erreur php (s'il y'en a un) ?
    As-tu activé l'affichage des erreurs dans ta config php chez ton hebergeur ?
    Ca pourrait peut être t'aider...


    Piste:
    - Si tu décortique ta requête en 2 de 2000 résultats chacune à l'aide de la fonction LIMIT de mysql est-c'que cela fonctionne ?
    - S'il n'y'a vraiment pas de messages d'erreur c'est peut être qu'il n'y'en a pas.
    Juste après ta requête, essaye de faire un PRINT_R ($tavariablearrayresultatrequete), histoire de voir si les résultats sont biens là.
    1. --> les résultats ne sont pas là: c'est ta requête ou mysql le problème.
    2. --> les résultats sont là: vérifie toutes les opérations qui incriminent ta variable ($tavariablearrayresultatrequete) jusqu'à l'affiche des résultats.

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je n'ai pas de message d'erreur une fois ça s'affiche une non...
    Qu'il n'y ait aucun retour d'erreur, d'accord, mais si tu ne fais rien pour les obtenir forcément il y aura rien.

    Est-ce que tu as essayé de savoir si l'affichage des erreurs est activé ou pas ?
    Si ça ne l'est pas est-ce que tu as essayé de l'activer ?


    Php ne s'arrête pas comme ça sans prévenir, ou alors on aurait fait la bêtise de mettre des @ à tord et de travers là où il ne faudrait pas.
    J'imagine que non.
    Mise à part ça il doit avoir moyen de savoir pourquoi.

    Au pire récupère les logs d'erreurs sur le serveur si tu ne dispose pas d'autres moyens.


    Est-ce que c'est toi qui e créé ce site ?
    Au feeling comme ça je dirais que ce n'est pas un simple site, il devrait s'appuyer sur quelque chose (un Framework, un CSM, etc ... maison ou Open Source ou propriétaire), faut voir.
    Si tel est le cas ça risque d'être un peu compliqué, mais d'un autre coté si le Soft est bien conçu et assez avancé, il devrait permettre de faire du débogage.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Par défaut
    Je viens de vérifier ma requête:

    Voici le code qui pose problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Résultats (avec critères) de la requête
    		$tPostes = new Postes();
    		$postes = $tPostes->getPostes($criteria,null,$sort);
    		/*print_r ($postes);
    		exit;*/
    		// J'affiche que les 3900 premières annonces : problème de recherche sans critères : 15/02/2012
    		$tmpPostes = array_chunk($postes,3900);
    		$postes = $tmpPostes[0];
    Si j'ai moins 4000 enregistrement mon print_r fonctionne bien sinon il ne m'affiche rien.

    Voici ma requête: (sous phpMyAdmin je vois bien les résultats)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT `P`. * , `C`. * , `Cl`. * , `Ag`. * , `V`. * , `Dpt`. * , `R`. * , `pa`. * , `F`. * , `E`. * , `Exp`. * , `S`. *
    FROM `postes` AS `P`
    LEFT JOIN `contrats` AS `C` ON P.poste_contrat = C.contrat_id
    LEFT JOIN `clients` AS `Cl` ON P.cli_id = Cl.cli_id
    LEFT JOIN `agences` AS `Ag` ON P.agence_id = Ag.agence_id
    LEFT JOIN `villes` AS `V` ON ( P.ville_id = V.ville_id )
    LEFT JOIN `departements` AS `Dpt` ON ( P.poste_dpt = Dpt.dpt_id )
    LEFT JOIN `regions` AS `R` ON ( P.poste_region = R.region_id )
    LEFT JOIN `pays` AS `pa` ON ( P.poste_pays = pa.pays_iso_number )
    LEFT JOIN `fonctions` AS `F` ON P.poste_fonction = F.fonction_id
    LEFT JOIN `etude` AS `E` ON P.poste_etude = E.etude_id
    LEFT JOIN `postes_exp` AS `Exp` ON P.poste_experience = Exp.postes_exp_id
    LEFT JOIN `secteurs` AS `S` ON P.poste_secteur = S.secteur_id
    ORDER BY `poste_date_update` DESC
    Et oui les erreurs sont bien activées et j'utilise le Framework Zend pour info.

  7. #7
    Membre éclairé
    Inscrit en
    Octobre 2011
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 50
    Par défaut
    Le problème viens pas de ta requête mais surement de ta config mysql.
    On a localisé le problème mais je n'en sais pas plus que toi.


    De toutes manières, je suppose que tu vas pas afficher 4000 résultats sur une page.
    Il faut tronquer ta requête avec LIMIT pour faire une pagination, quand tu l'auras faite, cela devrait fonctionner normalement.

  8. #8
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 496
    Par défaut
    woah ! tellement de "d'etoiles"...
    => t'as vraiment besoin de tous les champs des tables de ta requete ?
    meme si c'est chiant d'ecrire la liste des champs dont tu as besoin, ca pourrait ameliorer la chose...
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 488
    Par défaut
    J'utilise Zend_Paginator pour afficher mes résultats.
    Vous pensez que le problème se situe au niveau du ficher mysql.conf?

  10. #10
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Et oui les erreurs sont bien activées et j'utilise le Framework Zend pour info.

    Voici le code qui pose problème:
    Je ne parviens pas à comprendre cette façon de procéder.
    On commence d'abord à bidouiller le code sans même avoir l'ombre d'un retour d'erreur de Php, MySQL ou autre

    Tu utilises Zend, et bien Zend offre (normalement) tout ce qu'il faut pour déboguer, et c'est au niveau du fichier de config que ça se gère, du moins au départ.

    Part exemple pour la version Zend 1.11 c'est dans application.ini et : (à voir de ton coté selon la version)
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

    Sur un site en production il est normal de ne pas afficher les erreurs et Exceptions, donc à tous les coups ces config là sont désactivées.
    Vu que l'erreur est obtenue uniquement sur le serveur et non en local, alors faut activer tout ça coté serveur.
    (je connais très peu Zend, autant dire pas du tout vu que je commence à peine de l'essayer).

    Ceci dit, si le comportement de l'application est différent de celui en local, ça sous entend qu'il y a des différences entre les 2 environnements.
    Faudrait peut être voir au moins du coté du php.ini pour comparer et voir s'il y a moyen d'être plus proche et espérer reproduire la même erreur en local, ce qui devrait faciliter le débogage.


    J'utilise Zend_Paginator pour afficher mes résultats.
    Pourquoi alors mettre "en dur" 3900 lignes ? (ça me semble beaucoup)
    Ne faudrait-il pas indiquer à Zend_Paginator un nombre de lignes raisonnable par page pour étaler toutes ces lignes sur plusieurs pages ?
    (principe de la pagination normalement)
    Vu ne nombre je ne serait pas étonné que par moment ça atteint une certaine limite (genre timeout).


    Mise à part ça, sans avoir l'ombre d'un retour d'erreur ou d'Exception (gérer par Zend ou Php peu importe la manière) c'est faire les choses quelque peu au pif.
    Mais qui sait, quand on a de la chance ça peu marcher.

Discussions similaires

  1. [MySQL] affichage des résultats d'une recherche dans la base
    Par dolf13 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 21/11/2006, 17h18
  2. [MySQL] Affichage des résultats d'une requête sur plusieurs pages
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/10/2006, 13h24
  3. Aide pour affichage des résultats
    Par vanou dans le forum ASP
    Réponses: 7
    Dernier message: 08/06/2006, 20h53
  4. [MySQL] Affichage des résultats d'un requête
    Par wiwi dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 07/02/2006, 11h25
  5. Affichage des résultats d'un moteur de recherche
    Par poah dans le forum Langage
    Réponses: 1
    Dernier message: 24/11/2005, 14h31

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