Représentation Graphique

Eléphant du PHP | 330 Messages

05 oct. 2006, 17:08

Bonjour,

Comment intégrer mon graphe dans un tableau


Merci d'avance
<?php  
    $visites = array(138, 254, 381, 652, 896, 720, 140, 556, 663, 331, 407, 768); 

    header ("Content-type: image/png");  
    $largeurImage = 600; 
    $hauteurImage = 450; 
    
    $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);         
 
     // on dessine un trait vertical pour représenter l'axe du temps     
    ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir); 
    // on affiche le numéro des 12 mois 
    for ($mois=1; $mois<=12; $mois++) { 
        ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir); 
    } 
     
    // on dessine un trait vertical pour représenter le nombre de visites 
    ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir); 
      




    // le nombre maximum de visites 
    $visitesMax = 1000; 
     
    // tracé des batons 
    for ($mois=1; $mois<=12; $mois++) { 
        $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax); 
        ImageFilledRectangle ($im, $mois*45-7, $hauteurImage-$hauteurImageRectangle, $mois*45+7, $hauteurImage-10, $bleu); 
        ImageString ($im, 0, $mois*45-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir); 
    } 
         			(ImagePng($im);
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Mammouth du PHP | 19672 Messages

05 oct. 2006, 20:39

Comment ça "dans un tableau" ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 330 Messages

05 oct. 2006, 20:45

Bonsoir,

Je n'arrive pas à centrer mon graphe au centre de la page donc je pensais l'intégrer dans une table mais je n'y arrive pas.

De plus lorsque je rajoute du html cela me provoque des choses bizarres.

Serait ce dû au header ?
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Mammouth du PHP | 19672 Messages

05 oct. 2006, 20:57

Dans ta page, insère ton image avec une balise <img /> en indiquant comme source ton fichier.php . utilise éventuellement un style CSS pour positionner ton image.

À partir de ton code, j'ai juste enregistré ça sout visites.php et j,ai ensuite créé cette page pour l'afficher :

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr"> <!-- Date de création: 05/10/2006 --> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" /> <title></title> <meta http-equiv="imagetoolbar" content="no" /> <meta http-equiv="Pragma" content="no-cache" /> <meta http-equiv="Content-language" content="FR-fr" xml:lang="fr" dir="ltr" /> <style type="text/css"> /* <![CDATA[ */ #graphique { width: 600px; height: 450px; position: relative; top: 0; left: 50%; margin-left: -300px; } /* ]]> */ </style> </head> <body> <div id="graphique"><img src="./visites.php" alt="" /></div> </body> </html>
C'est tout et tu verras que l'image est bien centrée sans utiliser de tableau.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 330 Messages

05 oct. 2006, 21:47

Encore une fois merci pour ton aide.

N'est il pas possible de ne pas passer par les header et n'avoir qu'une seule page ?
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Mammouth du PHP | 19672 Messages

06 oct. 2006, 06:54

Tu veux dire le code HTML et le code PHP de génération d'image dans le même fichier ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 330 Messages

06 oct. 2006, 11:07

Oui ou ne pas avoir le graphique en image (c'est sans doute idiot comme question)
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Eléphant du PHP | 330 Messages

06 oct. 2006, 18:36

Bonsoir,

J'ai une autre question.

Au lieu de définir le tableau visites sur la même page que le graphe (stats_C.php), il est créé sur la page qui appelle cette page de graphe(visites.php).
par :
<div id="graphique"><img src="stats_C.php" alt="" /></div>

Comment puis je transférer mon tableau sur cette page stats_C

Merci
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Mammouth du PHP | 19672 Messages

07 oct. 2006, 14:25

Suppose qu'au lieu de la forme actuelle ton script de génération soit une fonction gen_Stat() par exemple : tu pourrais lui envoyer des paramètres.

Dans ce cas, dans ta page, tu commences par définir la valeur de ta variable en faisant quelque chose du genre :
<?php
//...
$stats = gen_Stat($param1, param2,... param2);
?>
....<img src="<?php echo($stats); ?>" alt="" />...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 330 Messages

07 oct. 2006, 17:56

J'ai essayé de mettre en pratique ton raisonnement en regroupant tout dans une page mais sans grande conviction.

Est ce à quoi tu pensais

Merci
<html> 

<style type="text/css"> 


#graphique { 
    width: 600px; 
    height: 450px; 
    position: relative; 
    top: 0; 
    left: 50%; 
    margin-left: -300px; 
} 

</style> 

<body> 

<h1 align="center">Graphique</h1>

<?php

include("connection.php");
	
function gen_Stat($annee,$mois,$jour)
	
{
	
	$jour_test=0;
	
	$visites  = array();
	
	$max_days = date('t', mktime(0, 0, 0, $month, 15, $year));

	for( $day = 1, $i = 1; $day <= $max_days; $day++, $i++ )
		{
		$jour_test= $jour_test +1;
				
		//$date_arrivee = $annee."-".$mois."-".$jour_test; 
		
		$timestamp=mktime(0,0,0,$mois,$jour_test,$annee);
		
		$date_arrivee=date("Y-m-d",$timestamp);
				
		$sql = "SELECT COUNT(commandeId) FROM tblcommande WHERE date(commandeO_timestamp)= '$date_arrivee' ";
		
		//$result = mysql_query($sql or die( "ERREUR MYSQL numéro: ".mysql_errno()."<br>Type de cette erreur: ".mysql_error()."<br>\n" ) ; 

		$result = mysql_query($sql)or exit ('Erreur SQL !'.$result.'<br>'.mysql_error());
		
		$nb_commande =  mysql_result($result,0);
		//echo "$nb_commande"; 
		
		$visites[i]=$nb_commande;
				
		}	
	
		return($visites);
}	
	
	
	$date_depart= date("2006-10-01");
	
	$a_date = explode("-", $date_depart); 
	$annee = $a_date[0]; 
	$mois = $a_date[1]; 
	$jour = $a_date[2]; 
	
	$stats=gen_Stat($annee,$mois,$jour);
	
	

?>

<img src="<?php echo($stats); ?>" alt="" />

<!--<div id="graphique"><img src="stats_C.php" alt="" /></div> -->


<?php



$largeurImage = 600; 
    $hauteurImage = 450; 
    $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);         
 
        // on dessine un trait vertical pour représenter l'axe du temps     
    ImageLine ($im, 10, $hauteurImage-10, $largeurImage-10, $hauteurImage-10, $noir); 
    // on affiche le numéro des 12 mois 
    for ($mois=1; $mois<=12; $mois++) { 
        ImageString ($im, 0, $mois*30, $hauteurImage-10, $mois, $noir); 
    } 
     
    // on dessine un trait vertical pour représenter le nombre de visites 
    ImageLine ($im, 10, 10, 10, $hauteurImage-10, $noir); 
 
    // le nombre maximum de visites 
    $visitesMax = 1000; 
     
    // tracé des batons 
    for ($mois=1; $mois<=12; $mois++) { 
        $hauteurImageRectangle = round(($visites[$mois-1]*$hauteurImage)/$visitesMax); 
        ImageFilledRectangle ($im, $mois*45-7, $hauteurImage-$hauteurImageRectangle, $mois*45+7, $hauteurImage-10, $bleu); 
        ImageString ($im, 0, $mois*45-7, $hauteurImage-$hauteurImageRectangle-10, $visites[$mois-1], $noir); 
    } 
     
    // et c'est fini... 
    ImagePng ($im);  
    
?>    
    
    
</body> 

 </html>
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent

Mammouth du PHP | 19672 Messages

07 oct. 2006, 20:47

pas exactement, je songeais à mettre la génération de l'image dans une fonction.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 330 Messages

12 oct. 2006, 12:28

Finallement, je me suis lancé avec Archichow et àprès quelques soucis, cela marche.

Merci encore pour ton aide
-------------------------------------------------------
Il n'y a que les cons et les moules qui adhèrent