L'image ne s'affiche pas...Est-elle vide ??? Est-elle absente ???

jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014 - 4 avril 2011 à 11:54
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014 - 5 avril 2011 à 08:58
Bonjour,

J'ai de gros soucis avec ob_start, ob_end_flush, header et MySQL.
Tout cela est nouveau pour moi...
Apparemment aucun message n'apparaît.
Mais mon image ne s'affiche pas (vide ou absente)...
Pouvez-vous me consacrer un peu de temps ?
Pouvez-vous m'aider ?

<?php
ob_start();
date_default_timezone_set('Europe/Brussels');
require_once("connexionMysql.inc.php");

$lesjours = array("Di","Lu","Ma","Me","Je","Ve","Sa");
$lesmois = array("Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec");
$dateRef = array();
$visites = array();
$dateligne1 = array();
$dateligne2 = array();
$jourVal=date("d");
$moisVal=date("m");
$anneeVal=date("Y");

$nbBatons = 31;
$intBatons = 26;
$largeurImage = 840;
$hauteurImage = 300;
// légende de l'axe horizontal
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$dateRef[$indBaton] =
date("Ymd",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne1[$indBaton] = $lesjours[
date("w",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))].
date("d",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne2[$indBaton] = $lesmois[
date("m",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))-1];
}
// lecture des statistiques
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$annee = substr($dateRef[$indBaton],0,4);
$mois =  substr($dateRef[$indBaton],4,2);
$jour =  substr($dateRef[$indBaton],6,2);
$journee="jour".$jour;
$reqVisite="SELECT * FROM visites".
" WHERE annee= '".$annee."' AND mois= '".$mois."' ";
$resVisite=mysql_query($reqVisite);
$record=mysql_fetch_array($resVisite);
$visites[$indBaton] = $record["$journee"];
}
mysql_close($connexion);

// préparation du graphique
 	header ("Content-type: image/png");
$decalageG = 10;
$decalageD = 10;
$decalageH = 10;
$decalageB = 20;
    $im = ImageCreate ($largeurImage, $hauteurImage)  
            or die ("Erreur lors de la création de l'image");          
    $blanc = ImageColorAllocate ($im, 255, 255, 255);  
    $noir = ImageColorAllocate ($im, 0, 0, 0);
    $bleu_fonce = ImageColorAllocate ($im, 75, 130, 195); 
    $bleu_clair = ImageColorAllocate ($im, 95, 160, 240);          

    // on dessine un trait horizontal pour représenter l'axe du temps     
    ImageLine ($im, $decalageG, $hauteurImage-$decalageB, $largeurImage-$decalageD, $hauteurImage-$decalageB, $noir);
// on affiche les jours 
for ($indBaton=1; $indBaton<=$nbBatons; $indBaton++) { 
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+2, $dateligne1[$indBaton-1], $noir);
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+10, $dateligne2[$indBaton-1], $noir);
}	
// calcul de l'échelle de l'axe vertical
$echelle = array (5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000);
$visitesMax = max($visites);
$echelleMax = max($echelle);
if ($visitesMax > 0) {
for ($ech=0; $ech<=$echelleMax-1; $ech++) { 
if ($visitesMax <= $echelle[$ech]) {
$visitesMax = $echelle[$ech];
$ech=$echelleMax;
}
}
}
     
    // on dessine un trait vertical pour représenter le nombre de visites 
    ImageLine ($im, $decalageG, $decalageH, $decalageG, $hauteurImage - $decalageB, $noir);
    
// on affiche les 5 ou 10 divisions des maxima de visites
// la dernière est l'extrémité haute de l'axe vertical
if (($visitesMax 5) || ($visitesMax 25)) {
$nbTraits=5;
} else {
$nbTraits=10;
}
$fraction = round(($hauteurImage - $decalageB - $decalageH) / $nbTraits);
for ($barre=1; $barre<=($nbTraits-1); $barre++) { 
ImageLine ($im, $decalageG - 3, $decalageH + $barre * $fraction, $decalageG + 3, $decalageH + $barre * $fraction, $noir);
}

// tracé des batons
if ($visitesMax > 0) {
for ($ind=1; $ind<=$nbBatons; $ind++) {
$hauteurImageRectangle = round((($visitesMax - $visites[$ind-1]) * ($hauteurImage - $decalageB - $decalageH))/$visitesMax); 
if ($visites[$ind-1] > 0) {
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-9, $hauteurImageRectangle + $decalageH + 0, $decalageG + $ind * $intBatons + 9, $hauteurImage - $decalageB, $noir); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-6, $hauteurImageRectangle + $decalageH + 1, $decalageG + $ind * $intBatons + 6, $hauteurImage - $decalageB, $bleu_fonce); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-3, $hauteurImageRectangle + $decalageH + 2, $decalageG + $ind * $intBatons + 3, $hauteurImage - $decalageB, $bleu_clair);
}
ImageString ($im, 0, $decalageG + $ind*$intBatons-7, $hauteurImageRectangle, $visites[$ind-1], $noir); 
}
}

    // et c'est fini... 
    ImagePng ($im);
ob_end_flush();
?> 


jyd

8 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 avril 2011 à 13:32
bonjour

<?php
ob_start();
date_default_timezone_set('Europe/Brussels');
require_once("connexionMysql.inc.php");

$lesjours = array("Di","Lu","Ma","Me","Je","Ve","Sa");
$lesmois = array("Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec");
$dateRef = array();
$visites = array();
$dateligne1 = array();
$dateligne2 = array();
$jourVal=date("d");
$moisVal=date("m");
$anneeVal=date("Y");

$nbBatons = 31;
$intBatons = 26;
$largeurImage = 840;
$hauteurImage = 300;
// légende de l'axe horizontal
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$dateRef[$indBaton] =
date("Ymd",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne1[$indBaton] = $lesjours[
date("w",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))].
date("d",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne2[$indBaton] = $lesmois[
date("m",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))-1];
}
// lecture des statistiques
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$annee = substr($dateRef[$indBaton],0,4);
$mois =  substr($dateRef[$indBaton],4,2);
$jour =  substr($dateRef[$indBaton],6,2);
$journee="jour".$jour;
$reqVisite="SELECT * FROM visites".
" WHERE annee= '".$annee."' AND mois= '".$mois."' ";
$resVisite=mysql_query($reqVisite);
$record=mysql_fetch_array($resVisite);
$visites[$indBaton] = $record["$journee"];
}
mysql_close($connexion);

// préparation du graphique
 	header ("Content-type: image/png");
$decalageG = 10;
$decalageD = 10;
$decalageH = 10;
$decalageB = 20;
    $im = ImageCreate ($largeurImage, $hauteurImage)  
            or die ("Erreur lors de la création de l'image");          
    $blanc = ImageColorAllocate ($im, 255, 255, 255);  
    $noir = ImageColorAllocate ($im, 0, 0, 0);
    $bleu_fonce = ImageColorAllocate ($im, 75, 130, 195); 
    $bleu_clair = ImageColorAllocate ($im, 95, 160, 240);          

    // on dessine un trait horizontal pour représenter l'axe du temps     
    ImageLine ($im, $decalageG, $hauteurImage-$decalageB, $largeurImage-$decalageD, $hauteurImage-$decalageB, $noir);
// on affiche les jours 
for ($indBaton=1; $indBaton<=$nbBatons; $indBaton++) { 
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+2, $dateligne1[$indBaton-1], $noir);
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+10, $dateligne2[$indBaton-1], $noir);
}	
// calcul de l'échelle de l'axe vertical
$echelle = array (5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000);
$visitesMax = max($visites);
$echelleMax = max($echelle);
if ($visitesMax > 0) {
for ($ech=0; $ech<=$echelleMax-1; $ech++) { 
if ($visitesMax <= $echelle[$ech]) {
$visitesMax = $echelle[$ech];
$ech=$echelleMax;
}
}
}
     
    // on dessine un trait vertical pour représenter le nombre de visites 
    ImageLine ($im, $decalageG, $decalageH, $decalageG, $hauteurImage - $decalageB, $noir);
    
// on affiche les 5 ou 10 divisions des maxima de visites
// la dernière est l'extrémité haute de l'axe vertical
if (($visitesMax 5) || ($visitesMax 25)) {
$nbTraits=5;
} else {
$nbTraits=10;
}
$fraction = round(($hauteurImage - $decalageB - $decalageH) / $nbTraits);
for ($barre=1; $barre<=($nbTraits-1); $barre++) { 
ImageLine ($im, $decalageG - 3, $decalageH + $barre * $fraction, $decalageG + 3, $decalageH + $barre * $fraction, $noir);
}

// tracé des batons
if ($visitesMax > 0) {
for ($ind=1; $ind<=$nbBatons; $ind++) {
$hauteurImageRectangle = round((($visitesMax - $visites[$ind-1]) * ($hauteurImage - $decalageB - $decalageH))/$visitesMax); 
if ($visites[$ind-1] > 0) {
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-9, $hauteurImageRectangle + $decalageH + 0, $decalageG + $ind * $intBatons + 9, $hauteurImage - $decalageB, $noir); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-6, $hauteurImageRectangle + $decalageH + 1, $decalageG + $ind * $intBatons + 6, $hauteurImage - $decalageB, $bleu_fonce); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-3, $hauteurImageRectangle + $decalageH + 2, $decalageG + $ind * $intBatons + 3, $hauteurImage - $decalageB, $bleu_clair);
}
ImageString ($im, 0, $decalageG + $ind*$intBatons-7, $hauteurImageRectangle, $visites[$ind-1], $noir); 
}
}

    // et c'est fini... 
    ImagePng ($im);
ob_end_flush();
?> 


comme ça marche mais je crois ...

a++
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 avril 2011 à 13:35
si tu as des erreurs ou des variables pas definies le script ne se termine pas donc pas d'image ...
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
4 avril 2011 à 13:38
Où as-tu vu des erreurs dans le code ?
J'ai bien vérifié tout ce qui est au-dessus de header.
Le reste est une récup d'un ancien code.
Donc à ma connaissance je ne vois pas d'erreur.
Peux-tu m'aider stp ?

jyd
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
4 avril 2011 à 13:39
excuse je crois que j'ai pas posté ma correction
comme ça j'ai le graphique
<?php
ob_start();
date_default_timezone_set('Europe/Brussels');
//require_once("connexionMysql.inc.php");

$lesjours = array("Di","Lu","Ma","Me","Je","Ve","Sa");
$lesmois = array("Jan", "Fev", "Mar", "Avr", "Mai", "Jun", "Jui", "Aou", "Sep", "Oct", "Nov", "Dec");
$dateRef = array();
$visites = array();
$dateligne1 = array();
$dateligne2 = array();
$jourVal=date("d");
$moisVal=date("m");
$anneeVal=date("Y");

$nbBatons = 31;
$intBatons = 26;
$largeurImage = 840;
$hauteurImage = 300;
// légende de l'axe horizontal
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$dateRef[$indBaton] =
date("Ymd",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne1[$indBaton] = $lesjours[
date("w",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))].
date("d",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal));
$dateligne2[$indBaton] = $lesmois[
date("m",mktime(0,0,0,$moisVal,$jourVal-$nbBatons+1+$indBaton,$anneeVal))-1];
}
// lecture des statistiques
for ($indBaton=0 ; $indBaton<$nbBatons ; $indBaton++) {
$annee = substr($dateRef[$indBaton],0,4);
$mois =  substr($dateRef[$indBaton],4,2);
$jour =  substr($dateRef[$indBaton],6,2);
$journee="jour".$jour;
$reqVisite="SELECT * FROM visites".
" WHERE annee= '".$annee."' AND mois= '".$mois."' ";
//$resVisite=mysql_query($reqVisite);
//$record=mysql_fetch_array($resVisite);
//$visites[$indBaton] = $record["$journee"];
}
//mysql_close($connexion);

// préparation du graphique
 	header ("Content-type: image/png");
$decalageG = 10;
$decalageD = 10;
$decalageH = 10;
$decalageB = 20;
    $im = ImageCreate ($largeurImage, $hauteurImage)  
            or die ("Erreur lors de la création de l'image");          
    $blanc = ImageColorAllocate ($im, 255, 255, 255);  
    $noir = ImageColorAllocate ($im, 0, 0, 0);
    $bleu_fonce = ImageColorAllocate ($im, 75, 130, 195); 
    $bleu_clair = ImageColorAllocate ($im, 95, 160, 240);          

    // on dessine un trait horizontal pour représenter l'axe du temps     
    ImageLine ($im, $decalageG, $hauteurImage-$decalageB, $largeurImage-$decalageD, $hauteurImage-$decalageB, $noir);
// on affiche les jours 
for ($indBaton=1; $indBaton<=$nbBatons; $indBaton++) { 
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+2, $dateligne1[$indBaton-1], $noir);
ImageString ($im, 0, $decalageG + $indBaton*$intBatons-7, $hauteurImage-$decalageB+10, $dateligne2[$indBaton-1], $noir);
}	
// calcul de l'échelle de l'axe vertical
$echelle = array (5, 10, 25, 50, 100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000);
//$visitesMax = max($visites);
$echelleMax = max($echelle);
if (isset($visitesMax) > 0) {
for ($ech=0; $ech<=$echelleMax-1; $ech++) { 
if ($visitesMax <= $echelle[$ech]) {
$visitesMax = $echelle[$ech];
$ech=$echelleMax;
}
}
}
     
    // on dessine un trait vertical pour représenter le nombre de visites 
    ImageLine ($im, $decalageG, $decalageH, $decalageG, $hauteurImage - $decalageB, $noir);
    
// on affiche les 5 ou 10 divisions des maxima de visites
// la dernière est l'extrémité haute de l'axe vertical
if ((isset($visitesMax) 5) || (isset($visitesMax) 25)) {
$nbTraits=5;
} else {
$nbTraits=10;
}
$fraction = round(($hauteurImage - $decalageB - $decalageH) / $nbTraits);
for ($barre=1; $barre<=($nbTraits-1); $barre++) { 
ImageLine ($im, $decalageG - 3, $decalageH + $barre * $fraction, $decalageG + 3, $decalageH + $barre * $fraction, $noir);
}

// tracé des batons
if (isset($visitesMax) > 0) {
for ($ind=1; $ind<=$nbBatons; $ind++) {
$hauteurImageRectangle = round((($visitesMax - $visites[$ind-1]) * ($hauteurImage - $decalageB - $decalageH))/$visitesMax); 
if ($visites[$ind-1] > 0) {
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-9, $hauteurImageRectangle + $decalageH + 0, $decalageG + $ind * $intBatons + 9, $hauteurImage - $decalageB, $noir); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-6, $hauteurImageRectangle + $decalageH + 1, $decalageG + $ind * $intBatons + 6, $hauteurImage - $decalageB, $bleu_fonce); 
ImageFilledRectangle ($im, $decalageG + $ind*$intBatons-3, $hauteurImageRectangle + $decalageH + 2, $decalageG + $ind * $intBatons + 3, $hauteurImage - $decalageB, $bleu_clair);
}
ImageString ($im, 0, $decalageG + $ind*$intBatons-7, $hauteurImageRectangle, $visites[$ind-1], $noir); 
}
}

    // et c'est fini... 
    ImagePng ($im);
ob_end_flush();
?> 



0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
4 avril 2011 à 16:55
Merci d'avance.
Mais peux-tu me dire où est(sont) le(s) bug(s) ?

jyd
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
5 avril 2011 à 04:16
Mon code marche nickel
quand je remplace
require_once("connexionMysql.inc.php");

qui contient
<?php
   $connexion=  mysql_connect("xxx.be.mysql","yyy_be","12345678");
   mysql_select_db("yyy_be");
?>


directement par
$connexion  =mysql_connect("xxx.be.mysql","yyy_be","12345678");
mysql_select_db("yyy_be");


Bizarre !!!
Pourriez-vous m'expliquer pourquoi ???

jyd
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
5 avril 2011 à 08:46
bonjour
as tu essayé
a++

<?php

require_once("connexionMysql.inc.php");

ob_start();
date_default_timezone_set('Europe/Brussels');

...


ob_end_clean();
0
jytest Messages postés 314 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 22 décembre 2014
5 avril 2011 à 08:58
Oui...
Et cela ne fonctionne pas mieux !!!

Pourquoi ?
jyd
0
Rejoignez-nous