Score weergave (d.m.v. sterretjes)
Auteur: MindPrison - 19 juli 2005 - 16:16 - Gekeurd door: Maarten - Hits: 5456 - Aantal punten: 4.70 (5 stemmen)
Dit script genereert een balk van sterretjes, waarmee je bv de waardering van iets kunt weergeven. Het werkt volldig onafhankelijk, hiermee bedoel ik dat het alleen dient om de uitslag weer te geven. Het systeem dat de scores bijhoud moet je zelf voorzien.
Je moet het script zo openen: sterren.php?sterren=[1]&punten=[2]&maxpunten=[3]
[1] = Het aantal sterren dat je wilt zien.
[2] = Het aantal behaalde punten.
[3] = Maximum behaalde punten (als er dus 3 keer gestemd is en het hoogste dat je kunt stemmen is 5, dan is dit dus 15).
Op
http://scripts.mvaprojects.be vind je de afbeeldingen die je nodig hebt.
Deze sterretjes komen van de extensie site van Firefox (daarvan had ik ook het idé voor dit script
). Ik heb het uitgebreid getest, maar als je toch ergens een probleem zou krijgen, laat het dan even weten...
Code:
<?php
// Zijn de nodige variabelen opgegeven?
if(is_numeric($_GET["sterren"]) && is_numeric($_GET["punten"]) && is_numeric($_GET["maxpunten"]))
{
$breedte = 13; // Breedte ster
$hoogte = 15; // Hoogte ster
$leeg = imagecreatefromgif("ster_leeg.gif"); // De lege ster
$vol = imagecreatefromgif("ster_vol.gif"); // De volle ster
$sterren = imagecreatetruecolor(($_GET["sterren"] * $breedte), $hoogte); // Afbeelding aanmaken
$per_ster = $_GET["maxpunten"] / $_GET["sterren"]; // Punten per ster berekenen
$volle_sterren = floor($_GET["punten"] / $per_ster); // Aantal volle sterren (altijd afronden naar beneden)
$overschot = round((($_GET["punten"] - ($volle_sterren * $per_ster)) / $per_ster) * $breedte); // Wat nog vol moet zijn bij deels volle ster
// Sterren invoegen
for($i = 0; $i < $_GET["sterren"]; $i++)
{
$x = $i * $breedte; // Startpunt X berekenen
if($volle_sterren > 0) // Volle sterren invoegen
{
imagecopy($sterren, $vol, $x, 0, 0, 0, $breedte, $hoogte);
$volle_sterren = $volle_sterren - 1;
}
elseif($overschot > 0) // Deels volle sterren
{
imagecopymerge($sterren, $vol, $x, 0, 0, 0, $overschot, $hoogte, 100); // Vol deel
imagecopymerge($sterren, $leeg, ($x + $overschot), 0, $overschot, 0, ($breedte - $overschot), $hoogte, 100); // Leeg deel
$overschot = 0;
}
else // Lege sterren invoegen
imagecopy($sterren, $leeg, $x, 0, 0, 0, $breedte, $hoogte);
}
// Afbeelding volledig transparant maken
imagecolortransparent($sterren, imagecolorallocate($sterren, 255, 255, 255));
// Afbeelding sturen
header("Content-type: image/gif");
imagegif($sterren);
imagedestroy($sterren);
}
?>
<?php
// Zijn de nodige variabelen opgegeven?
{
$breedte = 13 ; // Breedte ster
$hoogte = 15 ; // Hoogte ster
$leeg = imagecreatefromgif( "ster_leeg.gif" ) ; // De lege ster
$vol = imagecreatefromgif( "ster_vol.gif" ) ; // De volle ster
$sterren = imagecreatetruecolor( ( $_GET [ "sterren" ] * $breedte ) , $hoogte ) ; // Afbeelding aanmaken
$per_ster = $_GET [ "maxpunten" ] / $_GET [ "sterren" ] ; // Punten per ster berekenen
$volle_sterren = floor ( $_GET [ "punten" ] / $per_ster ) ; // Aantal volle sterren (altijd afronden naar beneden) $overschot = round ( ( ( $_GET [ "punten" ] - ( $volle_sterren * $per_ster ) ) / $per_ster ) * $breedte ) ; // Wat nog vol moet zijn bij deels volle ster
// Sterren invoegen
for ( $i = 0 ; $i < $_GET [ "sterren" ] ; $i ++ )
{
$x = $i * $breedte ; // Startpunt X berekenen
if ( $volle_sterren > 0 ) // Volle sterren invoegen
{
imagecopy( $sterren , $vol , $x , 0 , 0 , 0 , $breedte , $hoogte ) ;
$volle_sterren = $volle_sterren - 1 ;
}
elseif ( $overschot > 0 ) // Deels volle sterren
{
imagecopymerge( $sterren , $vol , $x , 0 , 0 , 0 , $overschot , $hoogte , 100 ) ; // Vol deel
imagecopymerge( $sterren , $leeg , ( $x + $overschot ) , 0 , $overschot , 0 , ( $breedte - $overschot ) , $hoogte , 100 ) ; // Leeg deel
$overschot = 0 ;
}
else // Lege sterren invoegen
imagecopy( $sterren , $leeg , $x , 0 , 0 , 0 , $breedte , $hoogte ) ;
}
// Afbeelding volledig transparant maken
imagecolortransparent( $sterren , imagecolorallocate( $sterren , 255 , 255 , 255 ) ) ;
// Afbeelding sturen
header ( "Content-type: image/gif" ) ; imagegif( $sterren ) ;
imagedestroy( $sterren ) ;
}
?>
Download code (.txt)
Stemmen
Niet ingelogd.