英文:
trying to make some code dynamic using some custom coldfuison
问题
你好,以下是代码的翻译部分:
<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">
<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>
希望这对您有所帮助。如果您有其他问题,请随时提出。
英文:
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
答案1
得分: 0
你可以通过SQL获取每个记录的评分:
SELECT
IF(
(vote_up + vote_down) > 0, -- 防止除以零
((vote_up / (vote_up + vote_down)) * 5), -- 5 是最大星级
0 -- 尚无投票
)
AS starRating
然后,你可以循环遍历来自此SELECT
的查询结果,并像这样打印星级:
<cfquery name="ratings" datasource="...">
SELECT
...
</cfquery>
<cfset svgFullStar = '<svg>...</svg>'>
<cfset svgEmptyStar = '<svg>...</svg>'>
<cfloop query="ratings">
<cfset fullStars = round(ratings.starRating)> <!-- 或者在SQL SELECT中使用ROUND() -->
<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>
这是用于显示整星级(例如3/5)的显示逻辑。
英文:
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.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论