Bonjour à tous
Mon problème est le suivant :
Je crée des graphiques png en php à partir d'une bdd, pour afficher des visites de sites par mois.
Mon index appele mon fichier image php en question, et 2 liens permettent la naviguation entre les mois suivant et précédent.
index.php :
visites_agences.php :
Quand mon image n'etait pas encore dynamique (pas de liens avec la base), et que du coup je n'appelai pas mon image en GET, ça fonctionnait.
Maintenant mon index n'affiche plus l'image, mais si je tappe l'url de mon fichier image, elle apparait...
Est-ce que quelqu'un sait ce que j'ai fait de travers ?
Merci
Modifié par Nuun (25 May 2007 - 12:16)
Mon problème est le suivant :
Je crée des graphiques png en php à partir d'une bdd, pour afficher des visites de sites par mois.
Mon index appele mon fichier image php en question, et 2 liens permettent la naviguation entre les mois suivant et précédent.
index.php :
<?php
//Connexion BDD
include('includes/connexion.php');
include('includes/fonctions.php');
//On récupère le mois et l'année en cours
$mois = (isset($_GET['mois']))?de_gpc_public($_GET['mois']):substr(date("m_d_Y"), 0, 2);
$annee = (isset($_GET['annee']))?de_gpc_public($_GET['annee']):substr(date("m_d_Y"), 6, 4);
//On définit le titre du graphique en fonction du mois recherché
if($mois==1) $mois_texte = "Visites pour Janvier ".$annee;
elseif($mois==2) $mois_texte = "Visites pour Février ".$annee;
elseif($mois==3) $mois_texte = "Visites pour Mars ".$annee;
elseif($mois==4) $mois_texte = "Visites pour Avril ".$annee;
elseif($mois==5) $mois_texte = "Visites pour Mai ".$annee;
elseif($mois==6) $mois_texte = "Visites pour Juin ".$annee;
elseif($mois==7) $mois_texte = "Visites pour Juillet ".$annee;
elseif($mois==8) $mois_texte = "Visites pour Août ".$annee;
elseif($mois==9) $mois_texte = "Visites pour Septembre ".$annee;
elseif($mois==10) $mois_texte = "Visites pour Octobre ".$annee;
elseif($mois==11) $mois_texte = "Visites pour Novembre ".$annee;
elseif($mois==12) $mois_texte = "Visites pour Décembre ".$annee;
echo "<h1>".$mois_texte."</h1>";
echo "<img src=\"visites_agences_mois.php?mois=".$mois."annee=".$annee."\">";
//Ces 2 variables sont envoyés en GET et sont utiles uniquement si on change d'année
//Donc par défaut, elles valent l'année "courante"
$annee_suiv = $annee;
$annee_prec = $annee;
//Si on est en Décembre XXXX, le mois suivant sera Janvier XXXX + 1
$mois_suiv = $mois + 1;
if($mois_suiv==13)
{
$mois_suiv = 1;
$annee_suiv = $annee + 1;
$annee_prec = $annee;
}
//Si on est en Janvier XXXX, le mois précédent sera Décembre XXXX - 1
$mois_prec = $mois - 1 ;
if($mois_prec==0)
{
$mois_prec = 12;
$annee_suiv = $annee;
$annee_prec = $annee - 1;
}
//Liens pour recharger la page en appellant le mois désiré
echo "<p><a href=\"".$_SERVER['PHP_SELF']."?mois=".$mois_suiv."&annee=".$annee_suiv."\">Mois suivant</a></p>";
echo "<p><a href=\"".$_SERVER['PHP_SELF']."?mois=".$mois_prec."&annee=".$annee_prec."\">Mois précédent</a></p>";
?>
visites_agences.php :
<?php
//Connexion BDD
include('includes/connexion.php');
//Requête de récupération des données utiles au graphique
$req_visites = "SELECT id_agence, COUNT(date) AS nb_visites, nom
FROM visites_site
LEFT JOIN agences
ON agences.id=visites_site.id_agence
GROUP BY id_agence";
$result_visites = mysql_query($req_visites);
$list_visites = mysql_fetch_array($result_visites);
$nb_agences = mysql_num_rows($result_visites);
mysql_data_seek($result_visites, 0);
//Définition et création de l'image et de ses variables associées
$largeurImage = 700;
$hauteurImage = $nb_agences*31;
$im = ImageCreate ($largeurImage, $hauteurImage)
or die ("Erreur lors de la création de l'image");
//Nombre maximum de visites à afficher sur l'axe des visites en abcisse (echelle)
$max_visites = $list_visites['nb_visites']+30;
//Création des couleurs applicables à l'image
$blanc = ImageColorAllocate ($im, 255, 255, 255);
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu = ImageColorAllocate ($im, 0, 0, 255);
//On trace une ligne horizontale pour l'axe des visites (image, x1, y1, x2, y2, couleur)
ImageLine ($im, 100, 10, $largeurImage-10, 10, $noir);
//Boucle affichant les ids des agences sur l'axe et les barres du graphique
$agence=1;
while($list_visites=mysql_fetch_array($result_visites))
{
//Création des labels (image, x1, y1, x2, y2, couleur)
ImageString ($im, 0, 0, $agence*30-4, $list_visites['nom'], $noir);
//Hauteur des barres en pixels, rapport entre valeurs à afficher et $max_visites
//Round() arrondi à l'entier supérieur
$largeurImageRectangle = round(($list_visites['nb_visites']*$largeurImage)/$max_visites);
//Création des barres (image, x1, y1, x2, y2, couleur)
ImageFilledRectangle ($im, 100, $agence*30-7, $largeurImage-($largeurImage-$largeurImageRectangle-90), $agence*30+7, $bleu);
//Texte des barres (image, taille de la police, x, y, texte, couleur de texte)
ImageString ($im, 0, $largeurImage-($largeurImage-$largeurImageRectangle-100), $agence*30-3, $list_visites['nb_visites'], $noir);
//Incrémentation de l'indice $agence
$agence++;
}
//On trace une ligne verticale pour l'axe des agences (image, x1, y1, x2, y2, couleur)
ImageLine ($im, 100, $hauteurImage-10, 100, 10, $noir);
//Header précisant que le fichier php doit être traité comme une image
header ("Content-type: image/png");
//On génère l'image
ImagePng ($im);
?>
Quand mon image n'etait pas encore dynamique (pas de liens avec la base), et que du coup je n'appelai pas mon image en GET, ça fonctionnait.
Maintenant mon index n'affiche plus l'image, mais si je tappe l'url de mon fichier image, elle apparait...
Est-ce que quelqu'un sait ce que j'ai fait de travers ?
Merci
Modifié par Nuun (25 May 2007 - 12:16)