php - 隐藏输入仅从循环数据中获取最后一个值-php

标签 php mysql post

我正在尝试制作一个小型图像/测验应用程序,允许用户上传问题,而其他用户则回答这些问题。其他用户最多可以选择三个复选框作为答案。一旦选择,这些数据将被发布到一个脚本,该脚本根据具有正确答案的数据库检查猜测。许多问题都在同一页面上,当用户上传数据时,更多问题会通过 php 脚本回显到页面上。为了确保每个问题都有唯一的标识符,我为测验表单设置了一个隐藏输入,该输入采用循环给出的值。第一个问题效果很好!然而,其他问题是无法回答的,因为隐藏的输入似乎只采用循环中最后一个元素的值(降序)。此外,POST 机制似乎也只关心最近的项目。

以下是将图像和问题循环到页面的代码:

$sql = "SELECT * FROM gallery1 ORDER BY idGallery DESC";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "SQL Statment Failed";
}else {
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

while ($row = mysqli_fetch_assoc($result)){

echo '<div class="maincontainer">

    <div class="thecard">

        <div class="thefront" style="background-image:url(gallery/'.$row["imageFullNameGallery"].'); background-size:100% 100%;">
        </div>

        <div class="theback">
            <p class="heading"> The Story</p>
            <p class="desc">
              '.$row["descriptionGallery"].'
              '.$row["imageFullNameGallery"].'
            </p>


        <form action="includes/survey.php" id="form1" method="POST">

        <label> <img src="img/IMAGE1.png" class="radio">
        <input type="checkbox" name="food" value="1">
        </label>

        <label> <img src="img/IMAGE2.png" class="radio">
        <input type="checkbox" name="water" value="1">
        </label>

        <label> <img src="img/IMAGE3.png" class="radio">
        <input type="checkbox" name="shelter" value="1">
        </label>

        <input type="hidden" name="image" value='.$row["imageFullNameGallery"].'> 


        </form>
    <button type="submit" form="form1" name="submit">Submit </button>

        </div>

    </div>

</div>';

}
}

?>

请注意 '.$row["imageFullNameGallery"].'位于<p class="desc">下上面代码中的标签。这正确地给了我每个图像的全名。我这样做只是为了测试这里是否有错误。但没有。

这是在收到隐藏输入后处理隐藏输入的代码(survey.php):

<?php
if (isset ($_POST['submit'])) {

include_once "dbh.php";

$food=$_POST['food'];
$water=$_POST['water'];
$shelter=$_POST['shelter'];
$image=$_POST['image'];

$survey = array("foodGallery"=>$food, "waterGallery"=>$water, "shelterGallery"=>$shelter);

$sql= "SELECT foodGallery, waterGallery, shelterGallery FROM gallery1 WHERE imageFullNameGallery = '$image';";

$stmt = mysqli_stmt_init($conn);
mysqli_stmt_prepare($stmt, $sql);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

$row = mysqli_fetch_assoc($result);

print_r($row);

if ($survey !== $row){
    echo "These are not the same";

} else{
    echo "These have the same values!";

}


?>

我做了一些研究,有些人认为这可能是因为隐藏输入的所有名称都是相同的,因此它只与从循环传递的最终值一致。如果是这种情况,如何解决这个问题,以便每个项目都具有其隐藏输入的正确值?另外,对于为什么只发布第一个表单的输入有什么想法吗? (请记住,顺序是降序的,因此它是隐藏输入中正确的真实值的形式;循环给出的最后一个值)。我感谢您花时间阅读(并希望帮助我寻找真相)我的冗长问题。谢谢!

最佳答案

所以我解决了这个问题!所有表单都有一个 id="form1" 。每个提交按钮还具有元素 form="form1"。通过将这两个字段更改为 id='.$row["imageFullNameGallery"].'form='.$row["imageFullNameGallery"].'分别找到了解决方案!每张表格都与数据库中的正确信息匹配,并且所有表格都是可行的!我希望这对将来的人有帮助!

关于php - 隐藏输入仅从循环数据中获取最后一个值-php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450563/

相关文章:

php - WooCommerce 隐藏特定的自定义属性

php - 通过 Zend Framework Update Query 传递 Mysql 函数

mysql - MySQL 远程时缓存如何工作?

java - 如何使用 hibernate 查询语言在 hibernate 中使用左外连接

带有文件错误的 Django REST Framework POST 数据(使用 ModelResource)

javascript - javascript ajax 帖子中出现错误

php - 将 phpMyAdmin 中的表回显到 html 表中

php - 在一台机器上升级mysql服务器会影响到另一台机器的连接吗?

PHP MySQL,基于日期时间行的行总和

php mysql ajax 注册表单与图像上传