Barre de pourcentage adaptable (librairie gd utilisée)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 737 fois - Téléchargée 29 fois

Contenu du snippet

Ce code sert a faire une barre de pourcentage ! Cela peut être utile dans beaucoup de cas.. A vous de l'adapter pour votre usage !

On peut choisir la longueur et la largeur, et on peut aussi augmenter la clarté selon le pourcentage.

Utilisation : percent.php?p=30

Verifications effectuées :
  • p est défini
  • 0 =< p =< 100
  • p est entier
  • longueur multiple de cent

Source / Exemple :


<?
//A parametrer :
$longeur = 400;
$hauteur = 100;
$degrade = 0;
//Fin

header ("Content-type: image/png");
$image = imagecreate($longeur,$hauteur); //Création de l'image

//On creer les couleurs

$blanc = imagecolorallocate($image, 255, 255, 255);
$orange = imagecolorallocate($image, 255, 128, 0);
$bleu = imagecolorallocate($image, 0, 0, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$onep = $longeur / 100;

if(!isset($_GET['p']))
{
$msg = "Il faut une variable p ! ex : percent.php?p=50";
imagestring($image, 4, 5, 5, "$msg", $bleu);
imagepng($image);
}
elseif(($_GET['p'] > 100) or ($_GET['p'] < 0))
{
$msg = "La valeur de P doit être comprise entre 0 et 100";
imagestring($image, 4, 5, 5, "$msg", $bleu);
imagepng($image);
}
elseif(!is_numeric($_GET['p']))
{
$msg = "P doit être un chiffre entier !";
imagestring($image, 4, 5, 5, "$msg", $bleu);
imagepng($image);
}
elseif($onep != intval($onep))
{
$msg = "Pour une bonne précision, la longueur doit être un multiple de 100 !!";
imagestring($image, 4, 5, 5, "$msg", $bleu);
imagepng($image);
}
else
{
$p = $_GET['p'];
$p = intval($p);
$totalp = $onep * $p;
$msg = "$p% demandés >> $onep pixels / % >> $totalp pixels";
ImageFilledRectangle($image,0,0,$totalp,$hauteur,$orange);
if($degrade) //Si on choisit le deuxieme mode..
{
$vert = $p * 255 / 100; //Calculer le ton
$vert = intval($vert);
$rec = imagecolorallocate($image, 0, $vert, 0);
ImageFilledRectangle($image,0,0,$totalp,$hauteur,$rec);
$fmsg = "Longeur : $longeur, Hauteur : $hauteur. V : $vert";
}
else
{
ImageFilledRectangle($image,0,0,$totalp,$hauteur,$orange);
$fmsg = "Longeur : $longeur, Hauteur : $hauteur.";
}
imagestring($image, 4, 5, 5, $fmsg, $bleu);
imagestring($image, 4, 5, 35, $msg, $bleu);
ImageRectangle($image,0,0,$longeur-1,$hauteur-1,$noir);
ImageRectangle($image,0,0,$totalp,$hauteur-1,$noir);
imagepng($image); //Afficher l'image
}
?>

Conclusion :


Variables :

$_GET['p'] : Pourcentage demandé
$longeur : longueur du document
$hauteur : hauteur du document
$degrade : Augmenter la clarté selon le pourcentage ?
$image : contient l'image
$blanc,$orange,$bleu,$noir : Couleurs
$onep : Taille en pixel d'un pourcent
$msg : Message a afficher
$fmsg : Message a afficher
$totalp = Pixels totaux a coloriés (onep * p)

Pas de bugs connus (Peut etre des inconnus ? :o :p)
Ce code peut être optimisé par exemple creer un pourcentage vertical, un dégradé, etc...
Toute suggestions et questions acceptés !!

A voir également

Ajouter un commentaire Commentaires
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
pour les nombre hexadécimal, tu peux les passer en nombre... tu prends 2 par 2 et tu fais intval($valeur, 16)...
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Je confirme...

On dit pas que la source est inutile, on dit que tu pourrais utiliser trois fois moins de fonctionnalités et de ressources serveur pour faire la même chose ou presque...
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
23
=> Larr
bah non...ce n'est pas un bon exemple d'utilisation de la GD justement. Quand on peut eviter d'utiliser la GD, autant le faire : c'est tres gourmand! Cela devrait etre reserve a des utilisations complexes de graphiques. La effectivement, ca n'a aucun interet, a moins de compliquer largement la barre, comme le suggere Antho.
Je ne pige pas non plus pour le is_numeric().
Messages postés
38
Date d'inscription
mercredi 18 juin 2003
Statut
Membre
Dernière intervention
3 février 2010

Avant de dire que c'est pas obligé d'utiliser la gd vous pouvez dire que c'est un bon exemple d'utilisation de gd
mis a part qui manque un peus de commentaire pour moi
en gros pour moi c'est une bonne source
Messages postés
388
Date d'inscription
lundi 7 juillet 2003
Statut
Webmaster
Dernière intervention
10 février 2009

pourquoi fait tu la vérification sur le type apres la vérification sur le contenu $_GET['p'] ?

Voila, sinon Anthomicro a totalement raison sur ce qu'il dit
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.