affichage limité de tableau avec Jumi => page blanche

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] affichage limité de tableau avec Jumi => page blanche

    bonjour,

    j'ai un souci sur des tableaux résultants d'une interrogation de la BDD via des requêtes SQL lancée en PHP avec JUMI
    je vais essayer d'être clair en expliquant mon problème :

    j'ai une table T_contact que j'ai créée dans la BDD.
    lorsque j'interroge la table : pas de pb
    (un "SELECT * FROM T_contact" me donne 152 lignes de 28 champs à l'heure actuelle.)

    lorsque j'affiche 5 champs de résultats dans un tableau, le tableau s'affiche bien.
    lorsque j'en affiche 6, la page est blanche : pas de message d'erreur, pas de template, rien que du blanc :s
    petite précision : chaque champ affiché a un lien HTML pour les filtres et tris du tableau (paramètres qui modifient la requête) ...


    j'ai longtemps cherché dans mon code sans succès. (avec une page blanche pour interpréter, .... pas facile !)
    j'ai placé des INSERT 'point de contrôle' dans le code de création du tableau et ai constaté que le code et les requêtes sont lues jusqu'au bout du fichier php.

    j'ai fini par faire le constat qu'en affichant 5 colonnes avec le champ "nom_contact" : ça fonctionne ;
    en insérant une 6ème colonne avec le champ "nom_contact" : page blanche

    il semble qu'avec moins de lignes, le problème n'apparaissait pas ...
    j'ai changé de template : idem.
    j'ai mis au propre toutes mes requêtes en $db->setQuery($query); $result = $db->loadObjectList(); : idem.

    y'aurait il un seuil de mémoire ou un nombre max de liens autorisés ? à Joomla, Jumi, ou OVH mutualisé ?
    ha oui : sur mon serveur local, je n'ai jamais pu reproduire ce souci <= FAUX / rectifié
    y a t'il une formulation que je n'aurai pas vu pour la construction des tableaux ?


    je ne sais plus trop que faire ...
    je suis preneur de toute idée.
    merci à qui pourra m'aider
    Dernière édition par philou3333 à 09/07/2011, 13h06

  • #2
    Re : affichage limité de tableau avec Jumi =&gt; page blanche

    Bonjour,

    Puisque tu es chez OVH, tu peux accéder aux logs de ton site, il sera donc facile de vérifier la cause de l'erreur, à rechercher dans le error.log du système.

    Il y a 9 chances sur 10 pour que le problème soit un dépassement de la mémoire autorisée pour le script, comme sur beaucoup d'environnements mutualisés.
    Pas de demande de support par MP.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

    Commentaire


    • #3
      Re : affichage limité de tableau avec Jumi =&gt; page blanche

      merci pour cette piste.
      je suis allé voir ces logs :

      pas de log 'erreur' pour l'instant, pour le mois de Juillet (j'ai fait pas mal de tests hier où l'erreur dont je parle ci-dessus était présente) / il y a sinon, des logs 'web' avec les appels get des pages ...

      pour le mois précédent, une liste importante le 2 juin avec quelques erreurs de variable dans mes fonctions que j'ai réparées depuis et des PHP depreciated liées à un essai de passage en PHP 5.3.

      autrement dit, aucun log d'erreur OVH depuis le 02/06 ...
      je vais continuer à tester en créant l'erreur et voir si "les logs bruts en temps réel" sont plus bavards

      Commentaire


      • #4
        Re : affichage limité de tableau avec Jumi =&gt; page blanche

        pas d'erreur dans les "logs bruts en temps réel"

        Commentaire


        • #5
          Re : affichage limité de tableau avec Jumi =&gt; page blanche

          rectificatif : je recréé la même erreur sur mon serveur local.
          (en fait, la table T_contact était moins fournie sur le serveur local de test ; maintenant, après quelques exports/imports, on a le même défaut => OVH est hors de cause)

          Commentaire


          • #6
            Re : affichage limité de tableau avec Jumi =&gt; page blanche

            Que raconte (regardes les infos PHP en Aide/Infos système de l'admin Joomla!) concernant:
            memory_limit =
            Certaines distributions wamp ont par défaut seulement 32 mégas, ce qui est trop limité, et certains hébergeurs également.

            Actuellement on conseille 64M minimum (et certains hébergements haut de gamme offrent 128M).
            Pas de demande de support par MP.
            S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

            Commentaire


            • #7
              Re : affichage limité de tableau avec Jumi =&gt; page blanche

              je viens de regarder : j'ai 128M sur OVH.
              je suis sur une piste de débug : en activant le rapport d'erreur sur maximum dans (Paramètres du serveur), j'ai pu afficher les pages qui buggaient et il se trouve que j'ai pas mal de variables mal déclarées. j'en ai modifié quelques unes sur mon serveur local ce qui me permet d'augmenter le nombre de colonnes . Je vais mettre mon code au propre et transférer les fichiers sur OVH.
              Si c'est bien ça, ça voudra dire que quelques variables mal déclarées passent (sans warning) mais trop, non.
              je posterai le résultat et clorai le sujet si OK.
              merci en tout cas pour ton aide ce qui m'a donné quelques pistes supplémentaires de recherches.

              Commentaire


              • #8
                Re : affichage limité de tableau avec Jumi =&gt; page blanche

                Il faut savoir que des variables non déclarées (ou mal déclarées) font grossir la pile d'appel système, et onarrive très vite à avoir des problèmes pour peu qu'une partie du code soit vraiment une collection d'utilisations de varaibles non définies (ou non initialisées).

                Ce n'est pas spécifique à Joomla!, mais à la pile de gestion des scripts de PHP (ce n'est pas un bug non plus, du code propre devant éviter l'utilisation de variables sans s'assurer qu'elles soient au minimum déclarées). Jusqu'à PHP 5.2, l'interpréteur était relativement laxiste, mais comme ce comportement pouvait induire des failles de sécurité, PHP 5.3 est devenu beaucoup plus strict sur ce point
                Dernière édition par jisse03 à 09/07/2011, 18h16
                Pas de demande de support par MP.
                S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                Commentaire


                • #9
                  Re : affichage limité de tableau avec Jumi =&gt; page blanche

                  dac je prend bonne note
                  alors voici le résultat des courses : il ne me reste plus qu'un défaut de définition (par rapport à plusieurs centaines tout à l'heure)
                  et ....
                  lorsque le rapport d'erreur est sur maximum dans Paramètres du serveur Joomla, la page s'affiche (avec le warning) ;
                  lorsque le rapport d'erreur est sur default, la page est blanche ...

                  Commentaire


                  • #10
                    Re : affichage limité de tableau avec Jumi =&gt; page blanche

                    le problème devrait pouvoir se tracer dans ce warning. Sans avoir toutes les cartes en main (accès au site, plus XDebug en service) difficile de te dire exactement ce qui fait bloquer )

                    Mais bienvenue dans le monde des traqueurs de bugs
                    Pas de demande de support par MP.
                    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                    Commentaire


                    • #11
                      Re : affichage limité de tableau avec Jumi =&gt; page blanche

                      je me doutaisque tu allais me demander des précisions vis à vis de l'erreur qu'il reste et que je ne parviens pas à la faire partir, voici un bout de mon code :


                      ...
                      //$N_SELECTION = 1 ;

                      foreach ($contacts as $contact)
                      {
                      echo '<tr>';
                      foreach ($champs_query as $champ_contact)
                      {
                      $$champ_contact = $contact -> $champ_contact;
                      }
                      echo '<td>';
                      $N_SELECTION++;


                      echo '<input type="hidden" name="nom_selection_'.$N_SELECTION.'" value="'.$prenom.' '.$nom.'">';
                      echo '<input type="hidden" name="NUMCONTACT_selection_'.$N_SELECTION.'" value="'.$NUMCONTACT.'">';
                      if (isset($affiche_selection))
                      { echo '<input checked type="checkbox" name="selection_'.$N_SELECTION.'"></td>'; }
                      else
                      { echo '<input type="checkbox" name="selection_'.$N_SELECTION.'"></td>'; }
                      EcritCellulesTableau($adresse_courante,$champs_a_a fficher, $contact, $suffixe_Contact, $F);
                      echo '</tr>';
                      }

                      echo '</table>';

                      echo '<input type="hidden" name="nombre_selections" value="'.$N_SELECTION.'">';
                      le message que j'ai est :
                      Notice: Undefined variable: N_SELECTION in 'l'adresse du fichier'
                      et si je décommente $N_SELECTION = 1 ; alors j'ai une page blanche direct ! ...

                      j'ai changé le nom de la variable N_SELECTION plusieurs fois => idem
                      elle n'existe pas dans mes autres pages.
                      .... et si je commente jusqu'au if inclus => page blanche
                      pfff
                      c'est cool la traque des bugs

                      Commentaire


                      • #12
                        Re : affichage limité de tableau avec Jumi =&gt; page blanche

                        Hum, et avec:
                        Code PHP:
                        $N_SELECTION ;

                        foreach (
                        $contacts as $contact)
                        {
                            
                        $N_SELECTION++;
                            echo 
                        '<tr>';
                            foreach (
                        $champs_query as $champ_contact)    {    
                                $
                        $champ_contact $contact -> $champ_contact;    
                            }
                            echo 
                        '<td>';
                            echo 
                        '<input type="hidden" name="nom_selection_'.$N_SELECTION.'" value="'.$prenom.' '.$nom.'">';
                            echo 
                        '<input type="hidden" name="NUMCONTACT_selection_'.$N_SELECTION.'" value="'.$NUMCONTACT.'">';
                            if (isset(
                        $affiche_selection)) {    
                                echo 
                        '<input checked type="checkbox" name="selection_'.$N_SELECTION.'"></td>';    
                            } else {    
                                echo 
                        '<input type="checkbox" name="selection_'.$N_SELECTION.'"></td>';    
                            }
                            
                        EcritCellulesTableau($adresse_courante,$champs_a_a fficher$contact$suffixe_Contact$F);    
                            echo 
                        '</tr>';
                        }
                        echo 
                        '</table>';
                        echo 
                        '<input type="hidden" name="nombre_selections" value="'.$N_SELECTION.'">'
                        Regardes la légère différence et ses implications sur la définition de la valeur de $N_SELECTION
                        Pas de demande de support par MP.
                        S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                        Commentaire


                        • #13
                          Re : affichage limité de tableau avec Jumi =&gt; page blanche

                          avec $N_SELECTION = 0 ; => page blanche
                          avec //$N_SELECTION = 0 ; => le message d'erreur est hors du tableau ...

                          je vais laisser reposer tout ça pour ce soir et prendre un aspirine
                          en tout cas, merci pour ton aide et tes conseils.

                          Commentaire


                          • #14
                            Re : affichage limité de tableau avec Jumi =&gt; page blanche

                            je reprend le sujet :
                            le code remis au propre, le défaut n'est toujours pas résolu mais est un peu mieux cerné (un tout petit peu seulement) :

                            voici un bout de code :
                            Code:
                            echo $m; // inutilisée
                            $nvaleurs=0;
                            
                            foreach ($contacts as $contact)
                            	{
                            	echo '<tr><td align = "center">';
                            	foreach ($champs_a_afficher as $champ_afficher)    
                            		{    
                            		if (in_array($champ_afficher, $champs_query))
                            			{	
                            			$valeur_afficher = $contact -> $champ_afficher;    	
                            			$nvaleurs++;
                            			}
                            			else
                            			{
                            			$valeur_afficher = '';
                            			}
                            		EcritCellulesTableau($champ_afficher, $valeur_afficher, $contact -> NUMCONTACT);
                            		}
                            	echo '</td></tr>';
                            	}

                            l'affichage d'un tableau filtré (réduit à une dizaine de lignes) passe bien
                            -> exemple d'une page de 8 lignes soit 96 valeurs issues d'une requête s'affichent.

                            l'affichage d'un tableau non filtré ne passe que si :
                            1 - le rapport d'erreur est paramétré sur 'maximum'
                            2 - il y a au moins 1 erreur style "Notice: Undefined variable : m" ($m étant une variable qui ne sert dans le code qu'à déclencher cette notif).
                            -> exemple d'une page de 152 lignes soit 1976 valeurs issues d'une requête qui ne s'affichent pas (page blanche sans même le template) si le rapport d'erreur est paramétré sur 'default' ou si je commente la ligne echo $m

                            j'ai mis un traceur (insert dans une table) dans l'index.php du template, l'index.php du répertoire racine ainsi que dans mon code php : il sont bien lus (et traités) à chaque fois mais affichées que sous les 2 conditions ci-dessus :s

                            quelqu'un saurait-il me dire
                            si je veux avancer dans le débogage, où me faudrait il placer des traceurs dans l'ordre logique d'affichage des pages?
                            Dernière édition par philou3333 à 11/07/2011, 18h49

                            Commentaire


                            • #15
                              Re : affichage limité de tableau avec Jumi =&gt; page blanche

                              tel que décrit le problème est soit un problème de memory_exhaustion (mais là pas le cas si 128M), soit un timeout.
                              en mode debug, le timeout n'arrive pas, puisque des éléments sont injectés, et en mode production, le problème resurvient.

                              Sans toutes les cartes en mains, je te suggère de contrôler très précisément ta fonction EcritCellulesTableau qui a de très fortes chances d'être une des causes possibles.
                              Pas de demande de support par MP.
                              S'il n'y a pas de solution, c'est qu'il n'y a pas de problème (Devise Shadok)

                              Commentaire

                              Annonce

                              Réduire
                              Aucune annonce pour le moment.

                              Partenaire de l'association

                              Réduire

                              Hébergeur Web PlanetHoster
                              Travaille ...
                              X