Message D'erreur PHP!!!

[Fermé]
Signaler
Messages postés
104
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
20 mars 2011
-
 Alain -
Bonjour,

J'essai de créer un graphiphe en baton en php, j'ai copié texto un cours de BTS, j'ai fait le plus simple possible, je souhaite simplement afficher le nombre de visiteurs d'un site par mois...
Voila mon code :

<html>
<head>
<title></title>
</head>
<body>
<?php
$visites=array(138,254,381,652,896,720,140,556,663,331,407,768);
header("Content-type: image/png");
$largeurImage=400;
$hauteurImage=300;
$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=ImageColorAllocate($im,0,0,255);
ImageLine($im, 10,$hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir);
for ($mois=1;$mois<=12;$mois++)
{
ImageString($im,0,$mois*30,$hauteurImage-10,$mois,$noir);
}
ImageLine($im,10,10,10, $hauteurImage-10, $noir);
$visitesMax=1000;
for($mois=1;$mois<=12;$mois++)
{
$hauteurImageRectangle=round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
ImageFilledRectangle($im,$mois*30-7, $hauteurImage-$hauteurImageRectangle, $mois*30+7, $hauteurImage-10, $bleu);
ImageString($im,0,$mois*30-7,$hauteurImage-$hauteurImageRectangle-10,$visites[$mois-1],$noir);
}
ImagePng($im);
?>
</body>
</html>


Et voila le message d'erreur:

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Stats\graph1.php:6) in C:\wamp\www\Stats\graph1.php on line 8

Fatal error: Call to undefined function ImageCreate() in C:\wamp\www\Stats\graph1.php on line 11

Et la franchement je vois plus....
Merci de m'apporter vos lumières...

3 réponses

Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
111
Bonjour,

Tu as deux erreurs, commençons par la plus simple qiu est la seconde : les fonctions que tu veux appeler ne sont pas ImageCreate, ImageString... mais imagecreate, imagestring...

Une simple consultation de la doc php t'aurais permis de trouver cela

Pour la première erreur : les balises html depuis <html> jusque <body> doivent être déplacées parès l'appel de la fonction header.

Cherche par essais successifs la solution à ton pb.

Bon courage

PS : dans ce cas, j'aurais tendance à n'utiliser que de simples balises html (+ des styles par CSS) pour afficher ce que tu veux afficher.
Messages postés
104
Date d'inscription
dimanche 13 janvier 2008
Statut
Membre
Dernière intervention
20 mars 2011
7
Merci de m'éclaircir mais j'ai toujours un soucis, j'ai reussi à éviter le message d'erreur:
<?php
header("Content-type: image/png");
?>
<html>
<head>
<title></title>
</head>
<body>
<?php
$visites=array(138,254,381,652,896,720,140,556,663,331,407,768);
$largeurImage=400;
$hauteurImage=300;
$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=imagecolorallocate($im,0,0,255);
imageline($im,10,$hauteurImage-10,$largeurImage-10,$hauteurImage-10,$noir);
for ($mois=1;$mois<=12;$mois++)
{
imagestring($im,0,$mois*30,$hauteurImage-10,$mois,$noir);
}
imageline($im,10,10,10,$hauteurImage-10,$noir);
$visitesMax=1000;
for($mois=1;$mois<=12;$mois++)
{
$hauteurImageRectangle=round(($visites[$mois-1]*$hauteurImage)/$visitesMax);
imagefilledrectangle($im,$mois*30-7,$hauteurImage-$hauteurImageRectangle,$mois*30+7,$hauteurImage-10,$bleu);
imagestring($im,0,$mois*30-7,$hauteurImage-$hauteurImageRectangle-10,$visites[$mois-1],$noir);
}
imagepng($im);
?>
</body>
</html>


mais il m'affiche :

L'image “http://localhost/Stats/graph1.php” ne peut être affichée car elle contient des erreurs.

Ai je un problème mental?
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
111
Problème mental ? non mais sans doute pas assez d'attention ni de méthode.

Ton script ci-dessus contient une erreur : examine bien le dernier argument de image string

Deplus imagepng ne s'utilise pas comme ça. Tu dois avoir deux scripts php :

1. temp.php avec une balise img qui appelle le second script

<html><header><title>azerty</title></header>
<body>
<img src="temp2.php">
</body>
</html>

2. temp2.php qui génère l'image

<?php
header("Content-type: image/png");
$visites=array(138,254,381,652,896,720,140,556,663,331,407,768);
$largeurImage=400;
$hauteurImage=300;
$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=imagecolorallocate($im,0,0,255);
imageline($im,10,$hauteurImage-10,$largeurImage-10,$hauteurImage-10,$noir);
for ($mois=0; $mois<12; $mois++)
imagestring( $im, 0, ($mois+1)*30, $hauteurImage-10, $mois+1, $noir);

imageline( $im, 10, 10, 10, $hauteurImage-10, $noir );
$visitesMax=1000;
for( $mois=0; $mois < 12; $mois++)
{
$hauteurImageRectangle = round( ($visites[$mois]*$hauteurImage) / $visitesMax);
imagefilledrectangle( $im, $mois*30-7, $hauteurImage-$hauteurImageRectangle,
($mois+1)*30+7, $hauteurImage-10, $bleu);
imagestring( $im, 0, ($mois+1)*30-7, $hauteurImage-$hauteurImageRectangle-10,
$visites[$mois], $noir);
}
imagepng($im);
?>

Lit la documentation php qui explique ce mécanisme.

Cordialment.
Un peu tard, mais, ça peut toujours servir à quelqu'un...
En fait, il ne faut rien mettre avant <?php, ni après ?>. Le fichier est l'image elle-même. Donc pas besoin de HTML, ni commentaires, ni rien d'autre que le script de l'image.
Après l'avoir testé sans rien changer, ce script fonctionne à merveille !