如何从 php 中的列表中获取值?

Posted

技术标签:

【中文标题】如何从 php 中的列表中获取值?【英文标题】:how to get a value from list in php? 【发布时间】:2019-12-24 23:20:44 【问题描述】:

我想在按下提交按钮后从代表星级的列表中获取值。

用户评分后如何最终获得最大值(在 php 中)?

这是星级代码:

<form class="rating" method="post">
  <input id="star_rating" name="star_rating" type="hidden" />
  <ul>
    <li><i class="fa fa-star fa-fw" value="1"></i></li>
    <li><i class="fa fa-star fa-fw" value="2"></i></li>
    <li><i class="fa fa-star fa-fw" value="3"></i></li>
    <li><i class="fa fa-star fa-fw" value="4"></i></li>
    <li><i class="fa fa-star fa-fw" value="5"></i></li>
  </ul>
</form>

这是我的函数(我尝试使用 $_POST 将其命名为“star_rating”)。

<?php
if (isset($_POST["submitRate"])) 
    $pid=$_REQUEST['pid'];
    $uid = $_POST["rateid"];
    $rating = $_POST['star_rating'];
    $rate_re = $_POST['txt_reason'];
    die("Error " . mysqli_error($con));
    $sql = "update userstotasks set reason ='$rate_re' where post_id='$pid' and usr_id='$uid'";
    mysqli_query($con, $sql);           

那么我如何将星率中选择的值放入我的 php 函数中的变量中? 我想也许我必须连接这些值并使用 foreach 取最高值?..

【问题讨论】:

看起来你需要一个 JS 函数,用从 ul 中选择的值更新隐藏的输入。 列表不会作为表单的一部分提交,您将需要一些 javascript 来检测点击并将值复制到隐藏输入。你有吗? 使用单选按钮会容易得多...使用列表的原因是什么? 【参考方案1】:

您可以使其与单选框一起使用,以限制用户选择一种评级。另一种方法是在用户点击评分时使用 javascript 更新隐藏的输入。

html 的解决方案:

<form class="rating" method="post">
    <ul>
        <li><input type="radio" name="star_rating" value="1" checked/>1 <i class="fa fa-star fa-fw rating_value"></i></li>
        <li><input type="radio" name="star_rating" value="2"/>2 <i class="fa fa-star fa-fw rating_value"></i></li>
        <li><input type="radio" name="star_rating" value="3"/>3 <i class="fa fa-star fa-fw rating_value"></i></li>
        <li><input type="radio" name="star_rating" value="4"/>4 <i class="fa fa-star fa-fw rating_value"></i></li>
        <li><input type="radio" name="star_rating" value="5"/>5 <i class="fa fa-star fa-fw rating_value"></i></li>
    </ul>

    <input type="submit" value="Submit"/>
</form>

使用 javascript 的替代解决方案

<form class="rating" method="post">
    <input id="star_rating" name="star_rating" type="hidden" />
    <ul>
        <li><i class="fa fa-star fa-fw rating_value" data-value="1"></i></li>
        <li><i class="fa fa-star fa-fw rating_value" data-value="2"></i></li>
        <li><i class="fa fa-star fa-fw rating_value" data-value="3"></i></li>
        <li><i class="fa fa-star fa-fw rating_value" data-value="4"></i></li>
        <li><i class="fa fa-star fa-fw rating_value" data-value="5"></i></li>
    </ul>
</form>

<script>
    var ratingValues = document.querySelectorAll('.rating_value');
    var startRatingInput = document.querySelector('#star_rating');

    ratingValues.forEach(function(ratingValue)
        ratingValue.addEventListener('click', function(e)
            startRatingInput.value = parseInt(e.currentTarget.dataset.value);
        )
    )
</script>

阅读有关单选框的更多信息:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio

【讨论】:

以上是关于如何从 php 中的列表中获取值?的主要内容,如果未能解决你的问题,请参考以下文章

如何从下拉列表中获取值并插入 MySQL Workbench?

从使用 PHP 的 MySQL 数据库到 iPhone 的分数列表中获取排名

如何从python中的字典列表中获取值?

php函数将目录中的文件名列表拉入php数组

如何使用java从firebase数据库中的列表中获取所有值?

列表视图中的页脚按钮,如何从自定义列表适配器中获取值