Exercices PHP
Chapitre 1. Prise en main
Chapitre 2. Les formulaires
Chapitre 3. Accès au système de fichiers
Chapitre 4. Accès aux bases de données
Chapitre 5. Génération dynamique d'images
5.1. Création d'image
5.2. Couplage Image/BD
Chapitre 6. Variables de sessions
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

5.2. Couplage Image/BD

Sur iparla (nom d'un serveur), il existe une base appelée roose avec comme login roose et comme mot de passe drop64. Cette base contient une table appelée bourse avec deux champs :

ville (chaîne de caractères) et indice (entier).

Le premier champ contient le nom d’une ville (Paris ou New York), le second contient l’indice (ne dépassant pas 20) de la bourse correspondante.

1- Dans un premier temps, on va accéder à cette base et afficher l’ensemble des indices classés par ville.

2- Dans un deuxième temps on va réaliser une page HTML simulant un site de bourse. Dans ce site de bourse, on affichera un histogramme généré en PHP affichant les indices de chaque bourse (une couleur différente/ville). Au dessus de chaque barre d’indice, on affichera la ville concernée avec son indice.

Ne pas oublier que pour générer une image en PHP, il faut mettre header(‘’Content-type : image/jpeg’’) afin de dire que le code va produire un fichier JPEG.
Dans le fichier du site de bourse, on référencera l’histogramme généré de la manière suivante :
<IMG SRC=ficbourse.php>Un commentaire éventuel</IMG>

Solution

.HTML

<html><body>

<IMG SRC=bourse.php> Image de la bourse </IMG>
</body> </html>

.PHP

<?php
header("Content-type: image/jpeg");
$image = imagecreate(250,300);

$couleurRouge=imagecolorallocate($image,255,0,0);
imagefill($image,0,0,$couleurRouge);

$bdd= "baselup"; // Base de données
$host= "iparla"; // Hote (localhost en principe)
$user= "info2"; // Utilisateur
$pass= "iutinfo2"; // mp

$nomtable= "bourse";

// Connection bdd
// --------------
// print "Tentative de connexion sur sitebd<br>";
@mysql_connect($host,$user,$pass) or die( "Impossible de se connecter à la base de données");
// print "Connexion réussie, sélection de base<br>";
@mysql_select_db($bdd);
// print "Sélection de base OK<br>";

// Requêtes
// --------
// $query = "SELECT num, pays, date, circuit FROM $nomtable ";
// $query = "CREATE TABLE bourse (ville VARCHAR(50), indice integer)";
// $query = "INSERT INTO bourse VALUES ('Paris',12)";
$query = "SELECT ville, indice FROM $nomtable ORDER BY ville";

$result= MYSQL_QUERY($query);

if (mysql_error()){ // Erreur base de donnees, surement la table qu'il faut creer
// print "Erreur dans la base de données : ".mysql_error();
exit();
}
else {
// print "Bien connecté....<br>";
}


// Récupération des résultats, affichage sous forme de graphique
// ------------------------------------------------------------
$x=10; //$y=imagesy($image);
$y=imagesy($image);
$coef = 10;
// $police = imageloadfont("helvetica");
$couleurNoir=imagecolorallocate($image,255,255,255);
while($tuple=mysql_fetch_row($result)) {
// print "--> Ville : $tuple[0] - Indice : $tuple[1]<br>";

if ($tuple[0] == "Paris") {
$couleur=imagecolorallocate($image,0,0,255);
$laville="Paris - ".$tuple[1];
}
else {
$couleur=imagecolorallocate($image,0,255,0);
$laville="New York".$tuple[1];
}
$xtmp = $x+10;
$ytmp = $y-($tuple[1] * $coef);


imagefilledrectangle($image,$x,$ytmp,$xtmp,$y,$couleur);
$ytmp2=$ytmp-10;
imagestringup($image,0,$x,$ytmp2,$laville,$couleurNoir);
$x=$x+12;

}

/* Fermeture */
MYSQL_CLOSE();

imagejpeg($image);
imagedestroy($image);


Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante