Php 根据评级在前端显示星号
我已经在后端创建了一个字段 当使用单选按钮时,我选择产品评级为1星、2星、3星、4星和5星 在前端显示时相同Php 根据评级在前端显示星号,php,jquery,html,css,Php,Jquery,Html,Css,我已经在后端创建了一个字段 当使用单选按钮时,我选择产品评级为1星、2星、3星、4星和5星 在前端显示时相同 <p class="tool-tip"><a href="#" onMouseover="ddrivetip('Expert Rating')"; onMouseout="hideddrivetip()">Expert Rating</a> - <?php echo $this->prodDet->v_child_safety?>
<p class="tool-tip"><a href="#" onMouseover="ddrivetip('Expert Rating')"; onMouseout="hideddrivetip()">Expert Rating</a> - <?php echo $this->prodDet->v_child_safety?></p>
-
它以数字形式显示评级为-1星、2星、3星、4星和5星
任何一个指南都可以提供最好的方法,让前端显示星形评级,而不是数字值,而不会使页面加载变慢吗
这不是重复的
我只想让用户在前端查看星型评级
他们不能修改评级或添加评级,只是管理员将评级分配为1星到5星,并且其在前端可见
现在,我希望星星显示在屏幕上,而不是以2星或3星的形式显示数值
谢谢此解决方案使用隐藏单选按钮。由于fontAwesome,该品牌被视为明星。可以将星号的值发送到PHP脚本,也可以根据您拥有的任何值设置正确的星号
input[type=“radio”]{
显示:无;
}
标签{
显示:内联块;
}
输入[type=“radio”]:选中+标签{
游标:默认值;
颜色:红色;
}
首先,确保
$this->prodDet->v_child_safety
只返回一个数字。因此,它应该只返回1、2、3等,而不是1星、2星。然后用以下代码替换您的代码:
<?php
$stars = (int)$this->prodDet->v_child_safety;
$count = 1;
$result = "";
for($i = 1; $i <= 5; $i++){
if($stars >= $count){
$result .= "<span>★</span>";
} else {
$result .= "<span>☆</span>";
}
$count++;
}
?>
<p class="tool-tip"><a href="#" onMouseover="ddrivetip('Expert Rating')"; onMouseout="hideddrivetip()">Expert Rating</a> - <?php echo $result?></p>
-
如果要使用星星图像,请使用以下代码:
<?php
$stars = (int)$this->prodDet->v_child_safety;
$result = "";
for($i = 1; $i <= $stars; $i++){
$result .= "<img src='link_to_image_here.png'/>";
}
?>
<p class="tool-tip"><a href="#" onMouseover="ddrivetip('Expert Rating')"; onMouseout="hideddrivetip()">Expert Rating</a> - <?php echo $result?></p>
-
在每个输入中使用以下条件:
checked=“checked”
并使用disabled
禁用所有输入,这样,如果您只想显示评级,就没有人可以更改值
div.stars{
宽度:270px;
显示:内联块;
}
input.star{display:none;}
星号{
浮动:对;
填充:10px;
字体大小:36px;
颜色:#444;
过渡:all.2s;
}
输入。星号:选中~标签。星号:之前{
内容:'\2605';
颜色:#FD4;
过渡:全部为0.25秒;
}
输入。star-5:选中~标签。star:之前{
颜色:#FE7;
文本阴影:0 0 20px#952;
}
input.star-1:选中~label.star:在{color:#F62;}之前
标签.星形:悬停{变换:旋转(-15度)比例(1.3);}
明星:之前{
内容:'\2605';
}
这个问题是关于显示一个值,而不是创建一个输入
有一种非常简单的方法可以支持半星,四舍五入到最接近的一半,使用字体awome(代码中的v4类,注释中的v5类)和一些基本算法
echo $rating;
echo "<span class='stars'>"
for ( $i = 1; $i <= 5; $i++ ) {
if ( round( $rating - .25 ) >= $i ) {
echo "<i class='fa fa-star'></i>"; //fas fa-star for v5
} elseif ( round( $rating + .25 ) >= $i ) {
echo "<i class='fa fa-star-half-o'></i>"; //fas fa-star-half-alt for v5
} else {
echo "<i class='fa fa-star-o'></i>"; //far fa-star for v5
}
}
echo '</span>';
瞧,你得到了一个评级显示
使用此代码,它非常简单和有用。 代码正在成功运行
<?php
$select=4;
$a=5-$select;
$j=1;
for ($i=1; $i<=$select; $i++)
{
echo "★";
if($i==$select){
for ($j=1; $j<=$a; $j++){
echo "☆";
}
}
}
?>
我可以假定$this->prodDet->v_child_safety
可能会重复吗?尼米什我倾向于不同意重复。这不是一个独立的明星评级系统。这只是关于如何显示星图而不是文本。没有办法知道访客是否能够给自己打分。@Ruchika请回答我上面的问题。$this->prodDet->v_child_safety
是否被1星
等替换?您误解了这个问题。他不想得到评级。评级仅限后端。他只是希望根据后端设置的评级在前端显示明星。编辑:那次否决票不是我投的。你的答案很容易变成一个好答案。我的错。我调整了代码,以指示可以在哪里使用PHP来设置正确的星号。不确定是否要调整额定值。如果没有,它可以是只读的。是的-我也没有投反对票,为什么我会投反对票?对于那些想要帮助的人,我只希望在前端显示一个基于值的星星谢谢-但它总是在前端显示5个星星,尽管后端有1、2或3个评级。可能是什么原因issue@Ruchika第一个代码应该显示5颗星<代码>★和☆
是unicode字符。第一颗是黑星,第二颗是黑边白星。例如,如果评级为3,它会显示3颗黑星和2颗白星。如果评级为4,它将显示4颗黑星和1颗白星。
<?php
$select=4;
$a=5-$select;
$j=1;
for ($i=1; $i<=$select; $i++)
{
echo "★";
if($i==$select){
for ($j=1; $j<=$a; $j++){
echo "☆";
}
}
}
?>