12-12-2007, 09:16 PM
Si le karma est borné c'est à dire qu'il ya des valeur minimum est maximum du karma, il est possible de faire ceci:
Code PHP :
<?
//Donnée
$taille_barre=160;
$karma_max=5;
$karma_min=-4;
$karma=-2;
//Taille de l'intervalle
$intervale_karma=$karma_max-$karma_min;
//Clacul des proportions des 3 parties de la barre
$largeur=abs($karma/$intervale_karma);
$arriere=abs($karma_min/$intervale_karma)-($karma<0)*$largeur;
$avant=$karma_max/$intervale_karma-($karma>0)*$largeur;
//Mise à l'echelle
$largeur=round($largeur*$taille_barre);
$arriere=round($arriere*$taille_barre);
$avant=round($avant*$taille_barre);
//Affichage
echo '<table class="barre" cellspacing="0" cellpadding="0">';
echo '<td bgcolor="#999999" width="'.$arriere .'" height="10" ></td>';
if (karma>0) echo '<td background="image/bleu.gif" width="'.$largeur.'" height="10" ></td>';
else echo '<td background="image/rouge.gif" width="'.$largeur.'" height="10" ></td>';
echo '<td bgcolor="#999999" width="'.$avant .'" height="10" ></td>';
echo'</table>';
?>
Bon a noter que c'est pas très jolie...
Mais là ce code te permer de faire ta barre de karma et aussi tes autres barre qui sont en fait des cas simplifié($karma_min=0) de la barre de karma
Comme tu as plusieurs barre à afficher tu devrais faire une fonction qui fasse çà tout seul, du genre:
Code PHP :
<?
//Fonction qui calcul les proportions unitaires de la barre
function proportion_barre($carac,$carac_min,$carac_max) {
$intervalle=$carac_max-$carac_min;
$prop_carac=abs($carac/$intervale)
return array(
abs($carac_min/$intervale)-($carac<0)*$prop_carac,
$prop_carac,
$avant=$carac_max/$intervale-($carac>0)*$prop_carac
);
}
/*
Fonction qui creer une barre de taille fixe
J'ai fait en 2 fonction au cas ou il y aurais plusieurs style de barre à faire
*/
function creation_barre($carac,$carac_min,$carac_max,$taille) {
$proportion=proportion_barre($carac,$carac_min,$carac_max);
$barre=($proportion[0]!=0)?'<div class="barre_neg" width="'.round($taille*$largeur).'" ></div>':'';
$barre.=($proportion[1]>0)?'<div class="barre_carac_pos" width="'.round($taille*$largeur).'" ></div>':'<div class="barre_carac_neg" width="'.round($taille*$largeur).'" ></div>';
$barre.=($proportion[1]!=0)?'<div class="barre_pos" width="'.round($taille*$largeur).'" ></div>':'';
return $barre;
}
/*
De cette façon il devient trés simpled 'afficher une barre
*/?>