我正在尝试制作一个小型图像/测验应用程序,以允许用户上传问题,而其他用户回答这些问题。其他用户最多可以选择三个复选框作为答案。选择后,此数据将发布到脚本中,该脚本根据具有正确答案的数据库检查猜测。许多问题在同一页面上,随着用户上传数据,更多问题通过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!";
}
?>
我已经做过一些研究,有人认为这可能是因为所有隐藏输入的名称都是相同的,因此仅与从循环传递的最终值一起使用。如果是这种情况,如何解决,以便每个项目的隐藏输入都具有适当的值?另外,对于为什么只发布第一个表单的输入有任何想法吗? (请记住顺序是降序的,因此它是从隐藏输入中正确值的正确形式;从循环中获得的最后一个值)。感谢您抽出宝贵的时间阅读(并希望能帮助我寻求真理)我的罗question问题。谢谢!
答案 0 :(得分:0)
所以我解决了这个问题!所有的表格都有一个<abc>:
BoxLayout:
orientation: "vertical"
size_hint_y: .5
BoxLayout:
orientation: "horizontal"
spacing: 10, 10
size_hint_x: .6
Label:
text: "TEXT"
text_size: self.size
valign: 'middle'
size_hint_x: .2
MyTextInput:
size_hint_x: .4
。每个提交按钮还具有元素id="form1"
。通过将这两个字段分别更改为form="form1"
和id='.$row["imageFullNameGallery"].'
,找到了解决方案!每个表格都与数据库中的正确信息匹配,并且所有表格都是可行的!我希望这对以后的人有所帮助!