2012-04-12 6 views
-2

Also meine Frage ist sehr direkt, ich habe eine einzige Variable, sagen wir 4, und ich muss es in eine Art von Bewertung übersetzen, sehr einfach (es geht von 1 bis 5) ohne halbe Sterne oder so.Bewertungssystem | Zeigen Sie die Bewertungen von einer einzigen Variablen

Ich muss eine Bewertung aus einer Zahl anzeigen, die von eins bis fünf geht, also wenn ich 1 habe, werde ich einen Stern haben, wenn ich 5 habe, werde ich fünf Sterne haben. Ich kann eine For-Schleife machen und die Bilder anzeigen, aber ich muss auch den leeren (nicht bewerteten) Stern zeigen. Ich brauche keine Funktionalität, also kann man nicht bewerten, nur die Bewertungen anzeigen.

Also, weil jemand fragt, was ich versucht habe, habe ich nichts versucht, weil ich nicht weiß, wo ich anfangen soll.

ich dies tun könnte eine Reihe von Sternen auf der Variable basiert zeigen, dass ich (was von einer Reihe 1 -> 5):

<?php 

$ratings = 3; 

for($i = 1; $i <= $ratings; $i++) 
echo '<img src="some_image.png" />'; 

?> 

Dieses es sein würde, aber was soll ich tun für die nicht bewerteten beginnen, wie zeige ich den Rest der leeren Sterne bis fünf an?

+0

Sie meinen, Sie müssen den Wert der Variablen auf die nächste Ganzzahl runden? – ppp

+2

Ja, können Sie eine spezifischere Frage stellen. Was hast du versucht? Können Sie uns etwas von Ihrem Code zeigen? –

+0

Ich brauche nicht zu runden. Und ich habe nichts versucht, weil ich nur ein Bewertungssystem finden konnte, mit dem man MySQL und PHP bewerten kann. Aber ich muss nur die Bewertung anzeigen und nicht bewerten, und ich brauche kein MySQL, weil ich nur die Variable habe, die eine Zahl zwischen 1 und 5 ist, die mir sagt, mit wie vielen Sternen der Gegenstand bewertet wurde. – Roland

Antwort

3

können Sie eine verschachtelte for-Schleife tun, wie so:

$tranStars; 

for($i=0;$i<5;$i++){ 
    if($i==0){ 
    for($j=0;$j<$rating;$j++){ 
     echo "<img src='yourFullStars.png'/>"; 
     $tranStars=$j; 
    } 
    $i=$tranStars; 
    } 
    echo "<img src='yourEmptyStars.png'/>"; 
} 

oder Sie zwei separate for-Schleifen tun könnte:

for($i=0;$i<$rating;$i++){ 
    echo "<img src='yourFullStars.png'/>"; 
} 
for($i=0;$i<5-$rating;$i++){ 
    echo "<img src='yourEmptyStars.png'/>"; 
} 

... oder eine beliebige Anzahl von Dingen, wirklich.

+0

hallo danke sein auch hepl mich. Aber was, wenn ich $ ratings = 3.5 habe? –

2

Sie zeigen bereits 3 gefüllte Sterne, Sie müssen also nur den Rest anzeigen. Wenn Sie:

$ratings = 3;        // 3 filled stars 
for ($i = 1; $i <= $ratings; $i++) {  // go through each star 
    echo '<img src="filled.png" />';  // show it filled 
} 

dann würden Sie brauchen, wenn Sie mehr übrig haben, um herauszufinden:

$starsLeft = 5 - $ratings;     // 2 stars left 

und, wenn ja, zeigen den Rest als leer Sterne:

if ($starsLeft > 0) {      // if there are any more stars left 
    for ($i = 1; $i <= $starsLeft; $i++) { // go through each remaining star 
     echo '<img src="empty.png" />';  // show it empty 
    } 
} 
+0

+ 1 | Ich habe bereits die Methode von Thomas Wright verwendet, aber das funktioniert auch. Ich denke, ich habe mich nicht gefragt, wie ich den Rest der Sterne darstellen soll, ich habe mir überlegt, wie man das mit Formularen und einem tatsächlichen Bewertungssystem macht. – Roland