21
août

AmCharts - Création de graphique PhP

La génération de graphique en PhP peut vite s’avérer un  vrai calvaire mais heureusement pour nous il existe AmCharts.

AmCharts va nous permettre de générer facilement un graphique en Flash avec des données issues d’une base de donnée, l’avantage d’AmCharts reside dans sa configuration entièrement réalisée en XML, il suffira donc de générer un fichier XML via PhP afin de réaliser notre graphique.

La première étape consiste à uploder les fichiers (amcolumn_settings.xml, amcolumn_data.xml, swfobject.js et amcolumn.swf) dans un dossier à la racine de votre site web (dans notre exemple ce sera le dossier graphiques ).

Ensuite il faut éditer le fichier amcolumn_settings.xml  afin de paramétrer l’animation Flash, je vous invite à lire la documentation afin de connaître les différentes modifications possibles.

Voici le code à insérer dans votre page HTML afin d’afficher le graphique

<script type=”text/javascript” src=”statistiques/swfobject.js”></script>
<div id=”flashcontent”>
<strong>Flash Player est nécessaire pour afficher les statistiques</strong>
</div>

<script type=”text/javascript”>
// <![CDATA[
var so = new SWFObject("statistiques/amcolumn.swf", "amcolumn", "500", "380", "8", "#ffffff");
so.addVariable("path", "statistiques/");
so.addVariable("settings_file", escape("statistiques/amcolumn_settings.xml"));
so.addVariable("data_file", escape("statistiques/amcolumn_data.xml"));
so.addVariable("preloader_color", "#999999");
so.write("flashcontent");
// ]]>
</script>

et enfin voici le code PhP qui génère le fichier XML

//on va créer le fichier XML qui contient les statistiques dans cet exemple nous allons créer un graphique qui affiche le nombre de visites d’un profil utilisateur en fonction du sexe des personnes qui l’on consulté.

//selection des champs souhaités dans la table statistiques
$sqlstat = “SELECT * FROM statistiques WHERE id=’$id’”;
$reqstat = mysql_query($sqlstat) or die(’Erreur SQL !’.mysql_error());

//création de la structure xml

$fichier = ‘<?xml version=”1.0″ encoding=”UTF-8″?>’;
$fichier .= ‘<chart>’;

while ($datastat = mysql_fetch_array($reqstat) )

{

$nbr_visites_h = $datastat['nbr_visites_h'];
$nbr_visites_f = $datastat['nbr_visites_f'];
$nbr_visites_c = $datastat['nbr_visites_c'];

}

$fichier .= “<series>”;
$fichier .= “    <value xid=’profil’>Nombre de visites de votre profil</value>”;
$fichier .= “</series>”;
$fichier .= “<graphs>”;
$fichier .= “<graph gid=’Homme’ title=’Hommes’>”;
$fichier .= “    <value xid=’profil’>$nbr_visites_h</value>”;
$fichier .= “    </graph>”;
$fichier .= “    <graph gid=’Femme’ title=’Femmes’>”;
$fichier .= “    <value xid=’profil’>$nbr_visites_f</value>”;
$fichier .= “    </graph>”;
$fichier .= “    <graph gid=’Couple’ title=’Couples’>”;
$fichier .= “        <value xid=’profil’>$nbr_visites_c</value>”;
$fichier .= “    </graph>”;
$fichier .= “</graphs>”;

$fichier .= ‘</chart>’;

//on ouvre le fichier amcolumn_data.xml  en lecture et écriture. Le fichier est créé s’il n’existait //pas. S’il existait déjà, sa longueur est ramenée à 0. Le pointeur de flux est placé au début du //fichier. Ensuite l’on écrit $fichier dans le fichier XML et bien entendu on le ferme.

$fp = fopen(”statistiques/amcolumn_data.xml”, ‘w+’);
fputs($fp, $fichier);
fclose($fp);

et voila le résultat –> ici

Ce code est à modifier selon vos bessoin, et il existe plusieures varations de graphiques (colonnes, lignes etc..) à découvrir sur le site AmCharts (site en anglais).

19
août

Fonctions PhP - Diverses et variées

Un Listing de fonctions PhP

Fonctions de date

//focntion qui formate une date sous la forme : jour/mois/annee
function reformer_date($date)
{
    if ($date == NULL) {
        return (NULL) ;
    } else {
        $i = 0 ;
        $annee = "" ;
        $mois = "" ;
        $jour = "" ;
        while ($i < 4) {
            $annee .= $date[$i] ;
            $i++;
        }
        $i++;
        while ($i < 7) {
            $mois .= $date[$i] ;
            $i++;
        }
        $i++;
        while ($i < 10) {
            $jour .= $date[$i] ;
            $i++;
        }
        $string = "$jour/$mois/$annee";
        return $string;
    }
}
//fonction qui formate une date sous la forme : jour-mois-annee
function former_date($date){
    if ($date == NULL) {
        return (NULL) ;
    } else {
        $i = 0 ;
        $jour = "";
        while ($i < 2) {
            $jour .= $date[$i] ;
            $i++;
        }
        $i++;
        $mois = "" ;
        while ($i < 5) {
            $mois .= $date[$i] ;
            $i++;
        }
        $i++;
        $annee = "";
        while ($i < 10) {
            $annee .= $date[$i] ;
            $i++;
        }
        $string = "$annee-$mois-$jour";
        return $string;
    }
}

//fonction qui renvoie la date du jour
function today()
{
    $today = date('Y-m-d');
    return($today);
}
19
août

URL file-access is disabled in the server configuration

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration

Cette erreur est dû à une désactivation de la directive allow_url_fopen contenue dans le fichier de configuration php.ini. La désactivation de cette directive est généralement réalisée par mesure de sécurité. Plusieures solutions s’offrent à vous :

  1. Utiliser la librairie Curl
  2. Contacter votre hébergeur
  3. Essayer avec les fonctions Fopen(), Fread(), Fgets(), Fclose()

Voici un exemple de code utilisant file_get_contents

if (!function_exists('file_get_contents'))
{
  function file_get_contents($url)
  {
    $temp = "";
    $fp = @fopen ($url, "r");
    if ($fp)
    {
      while ($data=fgets($fp, 1024))
        $temp .= $data;
      fclose ($fp);
    }
    return $temp;
  }
}

Voici une fonction utilisant file_get_contents()

function fetchURL($url) {

return file_get_contents($url);

}

Et voici son équivalent sans file_get_contents() avec la librairie Curl (à condition qu’elle soit active)

function fetchURL($url) {

//Initialisation session curl
$ch = curl_init();

//Set curl to return the data instead of printing it to the browser.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//Set the URL
curl_setopt($ch, CURLOPT_URL, $url);

//Execute the fetch
$data = curl_exec($ch);

return $data;

//Close the connection
curl_close($ch);

//$data now contains the contents of $URL

}