Hi I have this code in html
<div class="rating-star-wrap"> <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="star-rating active">
<path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd"></path>
</svg> </span> <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="star-rating active">
<path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd"></path>
</svg> </span> <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="star-rating active">
<path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd"></path>
</svg> </span> <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="star-rating active">
<path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd"></path>
</svg> </span> <span><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="star-rating">
<path fill-rule="evenodd" d="M10.788 3.21c.448-1.077 1.976-1.077 2.424 0l2.082 5.007 5.404.433c1.164.093 1.636 1.545.749 2.305l-4.117 3.527 1.257 5.273c.271 1.136-.964 2.033-1.96 1.425L12 18.354 7.373 21.18c-.996.608-2.231-.29-1.96-1.425l1.257-5.273-4.117-3.527c-.887-.76-.415-2.212.749-2.305l5.404-.433 2.082-5.006z" clip-rule="evenodd"></path>
</svg> </span>
</div>
where the purpose is that i am trying to use the above code basically dynamically based upon the ratings i get by the table data
what could be the best approach for dealing with this kind of code
that is the DB and if the division by 0, is not possible, so it should be 5 stars max, no more than 5, because that is maximum what my code does.
please guide how can i moved head with that code
the unique_content_id
is the productID
i have
You can fetch the rating per record via SQL:
SELECT
IF(
(vote_up + vote_down) > 0, -- prevent division by zero
((vote_up / (vote_up + vote_down)) * 5), -- 5 is the maximum of stars
0 -- no votes yet
)
AS starRating
You can then loop over your query result from this SELECT
and print stars like this:
<cfquery name="ratings" datasource="...">
SELECT
...
</cfquery>
<cfset svgFullStar = '<svg>...</svg>'>
<cfset svgEmptyStar = '<svg>...</svg>'>
<cfloop query="ratings">
<cfset fullStars = round(ratings.starRating)> <!--- or ROUND() in the SQL SELECT --->
<cfset emptyStars = (5 - fullStars)>
<div class="row">
<div class="product">
#encodeForHtml(ratings.unique_content_id)#
</div>
<div class="rating-star-wrap">
#repeatString(svgFullStar, fullStars)#
#repeatString(svgEmptyStar, emptyStars)#
</div>
</div>
</cfloop>
That's the display logic for whole stars like 3/5.