Ihre Webseite ist toll. Das sagt sogar Ihre Familie – die muss es ja wissen. Aber was denken die Besucher? Anhand von bis zu fünf Sternen zeigen Ihnen die Besucher mit diesem PHP-Skript, was sie wirklich von Ihrer Seite halten.
Zugegeben, das Ergebnis kann schmerzlich sein. Immerhin: Bei einer vernichtenden Kritik weiß man wenigstens, wo man noch etwas zu verbessern hat. Und wenn Ihre Seiten gut sind, dann wird Sie das Lob Ihrer Besucher erfreuen. Das fertige Ergebnis (Gestaltungsvorschlag) könnte dann so aussehen:
Die Besucher dürfen abstimmen.
Zur Sache: Die Seite, die bewertet werden soll – vornehmlich die Startseite, wenn es sich auf die gesamte Präsenz bezieht, oder sämtliche Artikelseiten – benötigt dieses PHP Skript:
<?php
$source = "bewertung/".basename($PHP_SELF)."_vote.php";
if (!file_exists($source)) {
@touch($source);
@chmod($source,0777);
$bewertung = 0; $anzahl = 0; $durchschnitt = 0;
$schreiben = $REQUEST_URI."§§§".$bewertung."§§§".$anzahl;
$fp = @fopen($source,"w+"); @flock($fp,2); @fwrite($fp,$schreiben);
@flock($fp,3); @fclose($fp);
} else {
$fd = fopen ($source, "r");
$sourcetext = fread ($fd, filesize ($source));
fclose ($fd);
$werte =
explode("§§§",$sourcetext);
$bewertung = $werte[1];
$anzahl = $werte[2];
if($anzahl==0) {$durchschnitt=0;} else {$durchschnitt
= sprintf("%01.2f", ($bewertung / $anzahl));}
}
$stern = substr($durchschnitt,0,1);
$komma = substr($durchschnitt,2,1);
for ($i=1; $i <= $stern;
$i++) {
$sternstring = $sternstring."<img src=\"/images/stern_ganz.gif\">";
}
if($komma >= 5) { $sternstring .= "<img src=\"/images/stern_halb.gif\">";
}
if($HTTP_POST_VARS[dovote] == "vote") {
$anzahl
= $werte[2] + 1;
$bewertung = $werte[1] + $HTTP_POST_VARS[bewertung];
$schreiben = $REQUEST_URI."§§§".$bewertung."§§§".$anzahl;
$fp = @fopen($source,"w+"); @flock($fp,2);
@fwrite($fp,$schreiben);
@flock($fp,3); @fclose($fp);
}
?>
Im selben Verzeichnis wie der zu bewertende Artikel muss sich der Ordner „bewertung“ befinden, in dem unser Skript eine Textdatei anlegt, in die die Daten gespeichert werden. Im Vergleich zu einer Datenbank ist dies natürlich langsamer, allerdings steht nicht jedem Leser auch eine MySQL-Datenbank zur Verfügung. Die neu erzeugte Textdatei trägt den Namen der ursprünglichen Datei mit dem Zusatz „_vote.php“. Wird die Seite mit einem bis fünf Sternen bewertet, werden die aus der Datei ausgelesenen Werte für Bewertung und Anzahl der Bewertungen jeweils erhöht und erneut geschrieben.
Jetzt beginnt für den Server die Kopfrechenarbeit: Wenn die Anzahl nicht Null ist (das würde einen Division by zero Error verursachen), wird der Variablen $durchschnitt das Ergebnis von der Punkte ($bewertung) durch die Anzahl der Bewertungen ($anzahl) zugeteilt. Die Formatierung mit sprintf sorgt gleich dafür, dass nicht mehr als zwei Nachkommastellen entstehen.
if($anzahl==0) {$durchschnitt=0;}
else {$durchschnitt = sprintf("%01.2f", ($bewertung / $anzahl));}
Um jetzt die Anzahl Sterne zu berechnen, nehmen wir für $stern die Werte von $durchschnitt vor dem Komma und für $komma die beiden Nachkommastellen.
$stern
= substr($durchschnitt,0,1);
$komma = substr($durchschnitt,2,1);
In die Variable $sternstring schreiben wir für jeden Stern einmal den HTML Code, das spart Tipparbeit. Wenn die Variable $komma größer als fünf ist, wird noch das Bild eines halben Sterns hinzugefügt.
for
($i=1; $i <= $stern; $i++) {
$sternstring = $sternstring."<img
src=\"/images/stern_ganz.gif\">";
}
if($komma >=
5) { $sternstring .= "<img src=\"/images/stern_halb.gif\">";
}
Fehlt nur noch der HTML Code um das Bewertungsformular anzuzeigen:
<table
width='100%' cellspacing='0' cellpadding='4'>
<tr><td><b>Bewertung
für diesen Artikel:</b></td></tr>
<tr><td>
<table width="100%" cellpadding=3><tr><td>
<?php
echo "Bisherige Bewertungen: $anzahl Durchschnittliche
Punktzahl: $durchschnitt $sternstring<br>";?>
<form
action="<?php echo basename($PHP_SELF); ?>" method="post">
<input type="hidden" name="dovote" value="vote">
Diesen Artikel bewerten: <br>
<input type="radio" name="bewertung"
value="1"><img src="/images/stern_ganz.gif">
<input type="radio" name="bewertung" value="2"><img
src="/images/stern_ganz.gif"><img src="/images/stern_ganz.gif">
<input type="radio" name="bewertung" value="3"><img
src="/images/stern_ganz.gif"><img src="/images/stern_ganz.gif"><img
src="/images/stern_ganz.gif">
<input type="radio"
name="bewertung" value="4"><img src="/images/stern_ganz.gif"><img
src="/images/stern_ganz.gif"><img src="/images/stern_ganz.gif"><img
src="/images/stern_ganz.gif">
<input type="radio"
name="bewertung" value="5"><img src="/images/stern_ganz.gif"><img
src="/images/stern_ganz.gif"><img src="/images/stern_ganz.gif"><img
src="/images/stern_ganz.gif"><img src="/images/stern_ganz.gif">
<input type="submit" value=" Bewerten ">
</td></tr></table></td></tr>
</table></form>
Wie hilfreich war dieser Beitrag?
Klicke auf die Sterne um zu bewerten!
Durchschnittliche Bewertung 0 / 5. Anzahl Bewertungen: 0