Page 1 sur 1

Arret d'interpretation du code

Posté : 05 sept. 2006, 16:42
par Jeqla
Salut à tous,

Un petit mois que je n'avais pas posté, normal, tout allait très bien, jusque là... mais aujourd'hui... une bizzarerie...

J'ai deux à trois page de mon site qui s'arretent au milieu. Je m'explique. C'est une page qui affiche des resultats de requetes SQL à l'aide d'une table.

On a donc par exemple :
Repartition des garcons dans les groupe en fonction de leur age
(petit lien vers un graphique)
Repartition des filles dans les groupes en fonction de leur age
(petit lien vers un graphique)

Bon, tout marchait depuis le 20/08 environs. Mais aujourdh'ui en allant controler que tout va bien, je tombe sur une page tronquée avec l'affichage uniquement du tableau des garcons qui s'arrete au milieu d'une ligne... comme si l'interpretation du code s'etait arretee, ou qu'il y avait eu un problème dans l'envoi de la page.

J'ai ete voir sur le serveur, c'est toujours une version du 20/08 qui est en ligne, et qui est identique à celle que j'ai sur mon disque (en gros, y'a pas un petit malin qui est allé s'amuser).

... est ce que je dois contacter l'assistance de mon hebergeur ou est ce un probleme de naviagteur (I.E.) ?

Merci de vos lumières sur ce problème obscur ...

Posté : 05 sept. 2006, 16:55
par Ryle
Si tu regardes le code source de la page, est ce qu'il y a un message d'erreur qui apparait à la fin de celle-ci ? ou bien s'interrompt elle brutalement ? ou bien est-il complet ?
Les graphiques dont tu parles sont ils dans la page ? ou est ce un lien vers une nouvelle page ?

Dans le premier cas, bah c'est un bug à corriger :) (un problème avec le passage au mois de septembre ?)
Dans le second cas, le traitement est il volumineux ? met-il plus de 30 secondes à s'exécuter ? tu as peut être un timeout au niveau du serveur ?

Posté : 05 sept. 2006, 17:10
par Jeqla
Au niveau du code source, pas de problème, je veux dire pas de message d'erreur... sauf qu'il est incomplet bien sur. Il y a bien les instructions JavaScipt au debut et a la fin de la page comme sur toutes les autres pages.

Au niveau du traitement, c'est un lien vers une autre page qui doit s'afficher, donc pas de souci de ce coté là, mais en revanche, la page s'affiche instantanément non complète, sans "chercher" comm quand il y a trop d'instcution PHP. (au niveau des données, c'est 59 lignes sur une dixaine de colonnes environ).

Posté : 06 sept. 2006, 10:39
par Jeqla
Bon, des news sur ce problème...

Je me suis demandé si çà n'était pas du à une histoire de die() planqué dans un coin, qui empecherait au code de fonctionner comme il faut... en fait non. La page fait d'abord une requete PHP qu'elle mets dans un tableau et c'est lui qui sert de référence tout au long de la page avec des boucles for.

Je j'ai aussi essayé de regardé ce qu'il y a à l'endroit de l'arret... rien de particulier : du code que les autres pages ont aussi (ces pages de statistiques forment en fait des tableau et appelle des programmes externes pour les mettre en forme). La le code s'arrete brutalement entre deux tableaux.

Il y a aussi des moment ou çà marche (rare) c'est à dire ou l'affichage est complet et d'autre ou çà bidouille. Et la question est cruciale car je n'ai pas envie que ca bidouille comme çà pour d'autres pages du site sur la partie publique par exemple... là, cà serait ultra naze :afraid:

Si quelqu'un a une idée... à vot' bon coeur m'sieur dames...

Posté : 06 sept. 2006, 11:48
par zizou59
slt!

ouep en effet bizare cette affaire!!

dis moi juste un pti truc tous con défois...

taversion de php et ton phpadmin/sql sur ton serveur est toujours le même pas de changement de version si tu es heberger car défois les instruction ne passe plus çà m'es déjà arrivé ...

donc il faut revoir un peu le codage mais bon c'est vraiment rare ce genre de bug !!!

:arrow: et aussi n'as tu pas fais un LIMIT sur ta boucle ????

Posté : 06 sept. 2006, 13:18
par Jeqla
La version n'a pas changé et il n'y a pas de LIMIT dans ma boucle.

J'ai trouvé d'ou vient le problème en faisait des tests. Cà vient d'un fichier inclu dans le code qui gère l'affichage des graphique, quand on l'exclu du code avec des /* , le probleme disparait et tout est comme avant, sauf qu'on ne peut pas voir les graphiques... mais bon.

Je vais donc me concentrer sur ce fichier. Y a il des fonctions de creation d'image qui peuvent avoir l'effet de la fonction die() si il y a une erreur d'execution ?

Posté : 06 sept. 2006, 15:18
par zizou59
oui effectivement çà c possible... 8)

Posté : 07 sept. 2006, 11:39
par Jeqla
Bon, on va dire que mon problème est résolu car je sais de ou çà coince mais je ne sais toujours pas pourquoi... Voici le code que j'utilise pour créér ces camemberts. 9à bidouille de dedans mais de où ? Quelle est la fonction qui pourrait donner une erreur et faire l'effet d'un die() ?
/* Renseignements transmis avant l'execution de ce code :
* $ChartData : tableau des données à afficher
* $ChartDiameter : diametre du camembert
* $graph_coord : pour enregistrer le camembert
* $typederesul : pour enregistrer le camembert
*/

//Paramètres du graphique 
$ChartFont = 5;
$ChartFontHeight = imagefontheight($ChartFont);

//Calcul de la taille du graphique 
    $ChartWidth = $ChartDiameter + 20;
    $ChartHeight = $ChartDiameter + 20 +
        (($ChartFontHeight + 2) * count($ChartData));

//Calcul du total de toutes les valeurs 
    $ChartTotal = array_sum($ChartData);

//Calcul du centre du camembert 
    $ChartCenterX = $ChartDiameter/2 + 10;
    $ChartCenterY = $ChartDiameter/2 + 10;
    
//Création de l'image 
    $image = imagecreate($ChartWidth, $ChartHeight);
    //imageantialias($image, TRUE);

//Création d'un pinceau arrondi pour le tracé des bordures
    $dot = imagecreate(3,3);
    $dotColorBlack = imagecolorallocate($dot, 0, 0, 0);
    $dotColorTransparent = imagecolorallocate($dot, 255, 0, 255);
    imagecolortransparent($dot, $dotColorTransparent);
    imagefill($dot, 0, 0, $dotColorTransparent);
    imagefilledellipse($dot, 4, 4, 5, 5, $dotColorBlack);
    imagesetbrush($image, $dot);


//Allocation des couleurs 
    $colorBody = imagecolorallocate($image, 0xFF, 0xFF, 0xFF);
    $colorBorder = imagecolorallocate($image, 0x00, 0x00, 0x00);
    $colorText = imagecolorallocate($image, 0x00, 0x00, 0x00);
    $colorSlice = array(

        imagecolorallocate($image, 0x28, 0xD8, 0xA6),
        imagecolorallocate($image, 0x8B, 0xD6, 0xDF),
        imagecolorallocate($image, 0x79, 0x7A, 0xAC),
        imagecolorallocate($image, 0xFF, 0xFF, 0x00),
        imagecolorallocate($image, 0xFF, 0x00, 0xFF),
        imagecolorallocate($image, 0x00, 0xFF, 0xFF),
        imagecolorallocate($image, 0x99, 0x00, 0x00),
        imagecolorallocate($image, 0x00, 0x99, 0x00),
        imagecolorallocate($image, 0x00, 0x00, 0x99),
        imagecolorallocate($image, 0x99, 0x99, 0x00),
        imagecolorallocate($image, 0x99, 0x00, 0x99),
        imagecolorallocate($image, 0x00, 0x99, 0x99));

//Remplissage de l'arrière-plan 
    imagefill($image, 0, 0, $colorBody);


//Tracé de chaque tranche
    $Degrees = 90;
    $slice=0;
    foreach($ChartData as $label=>$value)
    {
        $StartDegrees = round($Degrees);
        $Degrees += (($value/$ChartTotal)*360);
        $EndDegrees = round($Degrees);

        $CurrentColor = $colorSlice[$slice%(count($colorSlice))];

//Tracé des tranches du camembert 
        imagefilledarc(
            $image, 
            $ChartCenterX, $ChartCenterY, 
            $ChartDiameter,$ChartDiameter,
            $StartDegrees, $EndDegrees,
            $CurrentColor, IMG_ARC_PIE);


//Tracé de la légende de cette tranche 
        $LineY = $ChartDiameter + 20 + 
            ($slice*($ChartFontHeight+2));
    
        imagerectangle($image, 
            10, 
            $LineY, 
            10 + $ChartFontHeight, 
            $LineY+$ChartFontHeight, 
            $colorBorder);

        imagefilltoborder($image, 
            12,
            $LineY + 2, 
            $colorBorder,
            $CurrentColor);

        imagestring($image,
            $ChartFont,
            20 + $ChartFontHeight,
            $LineY, 
            "$label: $value",
            $colorText);
        
        $slice++;
    }
    

//Tracé de la bordure 
    imageellipse($image, 
        $ChartCenterX, $ChartCenterY,
        $ChartDiameter,$ChartDiameter,
        IMG_COLOR_BRUSHED);
    
//Envoi de l'image 
$nomduchemin="../graph/".$graph_coord.$typederesul.".png";
imagepng($image,$nomduchemin);
imagedestroy($image);

Posté : 07 sept. 2006, 13:58
par zizou59
l'ecriture en rouge ci dessus me parais suspect !!!
//Tracé de la légende de cette tranche
$LineY = $ChartDiameter + 20 +
($slice*($ChartFontHeight+2));

imagerectangle($image,
10,
$LineY,
10 + $ChartFontHeight,
$LineY+$ChartFontHeight,
$colorBorder);

imagefilltoborder($image,
12,
$LineY + 2,
$colorBorder,
$CurrentColor);

imagestring($image,
$ChartFont,
20 + $ChartFontHeight,
$LineY,
"$label: $value",
$colorText);

$slice++;
}