2017-04-25 3 views
0

Ich habe es geschafft, die durchschnittliche Bewertung in einem Zahlenformat auszugeben, aber ich möchte es auch mit der Sternmethode ausgeben.Wie wird die durchschnittliche Bewertung mit Sternen ausgegeben?

Dies ist mein Code bisher, der die durchschnittliche Bewertung unter Verwendung von Zahlen ausgibt;

<?php 

$sql = " 
    SELECT round(avg(`rate`),2) AS `average_rate`, count(`rate`) AS `num_of_rating` 
    FROM tbl_rating 
    WHERE hotel_id = '$id' "; 
$query = mysqli_query($con,$sql); 
$rating = mysqli_fetch_assoc($query); 
?> 

<div> 
    <h4 style="color: #1478FF; font-size:30px; font-family: " > <?php echo $rating['average_rate']; ?> Avergae rating </h4> 
</div> 

Zum Beispiel; Stars

+0

Ihr Code ist anfällig für [** SQL-Injection-Angriffe **] (https://en.wikipedia.org/wiki/SQL_injection). Sie sollten [** mysqli **] (https://secure.php.net/manual/en/mysqli.prepare.php) oder [** PDO **] (https://secure.php.net/) verwenden. manual/de/pdo.prepared-statements.php) vorbereitete Anweisungen mit gebundenen Parametern wie in [** dieser Beitrag **] beschrieben (https://stackoverflow.com/questions/60174/how-cani-i-prevent-sql -injektion-in-php). –

+0

Hast du ein Star Sprite oder Icon? Die einfachste Möglichkeit, die Sterne anzuzeigen, besteht darin, eine Schleife hinzuzufügen, nachdem Sie die Durchschnittsbewertung von 1 bis Floor (avg_rate) ausgegeben haben, und dann einen halben Stern anzuzeigen, wenn der Bruchteil der Bewertung größer als 0,49 ist. Ich bin ein alter ColdFusion-Typ, also frag mich nicht, ob ich den PHP-Code schreiben soll :) –

+0

@RusselMadere Ich habe dich nicht verstanden – amir

Antwort

0

Bitte geben diesem einen Versuch:

<?php 

$sql = " 
    SELECT round(avg(`rate`),2) AS `average_rate`, count(`rate`) AS `num_of_rating` 
    FROM tbl_rating 
    WHERE hotel_id = '$id' "; 
$query = mysqli_query($con,$sql); 
$rating = mysqli_fetch_assoc($query); 
?> 

<div> 
    <h4 style="color: #1478FF; font-size:30px; font-family: " > <?php echo $rating['average_rate']; ?> Average rating </h4> 
<?php 
    $limit = floor($rating['average_rate']); 
    $remainder = $rating['average_rate'] % 1.0; 

    for($i = 0; $i<$limit; $i++) { 
     echo ("<img src=\"\\images\\fullstar.jpg\" />"); 
    } 

    if ($remainder >= 0.5) echo ("<img src=\"\\images\\halfstar.jpg\" />"); 
?> 
</div> 

Ich bin nicht sicher, das wird funktionieren. Ich habe keine Möglichkeit, den Code zu testen, ich bin ein C# - und ColdFusion-Entwickler. Das haben mir ein paar Minuten auf Google gegeben.

Um dies zu erreichen, benötigen Sie Bilder von einem vollen Stern namens fullstar.jpg und von einem halben Start namens halfstar.jpg. Sie müssen beide in einem Ordner Namen Bilder in Ihrem Projekt root sein.

+0

Der Stern wird 4 Mal ausgegeben ... – amir

+0

Was ist die Bewertung, die angezeigt werden sollte? Überprüfen Sie den Wert von $ limit. Wenn es nicht die richtige Nummer ist, lass es mich wissen. –

+0

Es funktioniert, aber es zeigt nicht den halben Stern. WENN seine 4 Sterne funktioniert, aber wenn es wie 3,52 ist, zeigt es nur 3 Sterne ... – amir

Verwandte Themen