我的所有问卷都有两个MySql表,如下所示:
表1:
id, quiz_name, quiz_no.
表2:
id, quiz_no, question, ans1, ans2, ans3, ans4, ans5.
关于这些表,我想在单独的div中输出数据,其中测验的名称位于顶部,而所有属于特定quiz_no
(表示特定测验标题)的问题和答案行。但是我所得到的是所有标题和答案都位于每个标题下quiz_name
下的所有行。
我的代码是:
quiz.php
$table1 = "SELECT * FROM table1";
if (!empty($_POST['num'])) {
$no = $_POST['num'];
$table2 = "SELECT * FROM table2 WHERE quiz_no = '".$no."'"; //Notice: Undefined variable: table2 in C:\... quiz.html
}
// So
$table2 = "SELECT * FROM table2";
quiz.html
<?php
if($mysqli->multi_query($table1)){do{$result = $mysqli->store_result();
while($row = $result->fetch_assoc()){
?>
<div id="head_view_pers" class="modal-header" style="cursor:pointer;background-color:#7F4532;border:1px solid #7F4532;">
<h4 style="font-weight:bold;color:#fff;margin-left:10px;" class="modal-title"><?php echo $row2['nume_chestionar'];?></h4>
<i class="fas fa-expand" style="position:relative;top:6px;float:right;padding:0 10px 10px 10px;font-size:30px;font-weight:bold;color:#fff;"></i>
</div>
<article id="view_quiz_pers" class="view_quiz_pers" style="">
<div style="padding: 0;" class="view_chestionare_pers">
<div class="div_title" style="border-bottom: 1px solid #000000;margin:10px 24px 15px 24px;padding-bottom:4px;font-size:28px;text-align:center;font-weight:bold;"><?php echo $row['quiz_name']; ?></div>
<form action="quiz.php" method="post">
<input type="hidden" id="num" class="num" value="" name="num[]"></input>
<div class="view_pers_wrapper" style="clear:both;text-align:justify;margin:0 40px;">
<?php
if($mysqli->multi_query($table2)){do{$result2 = $mysqli->store_result();
while($row2 = $result2->fetch_assoc()) {
?>
<div class="view_questions" style="clear:both;padding:0 0 10px 0;font-weight:bold;list-style-type:none;margin:0 24px;"><?php echo $row2['id']; ?>. <?php echo $row2['question'];?></div>
<ul class="view_answers" style="clear:both;margin: 0 24px;list-style-type:none;">
<li class="li_ans1" ><?php if($row['ans1']) {echo '<b>a. </b>'.$row['ans1'];} ?></li>
<li class="li_ans2" ><?php if($row['ans2']) {echo '<b>b. </b>'.$row['ans2'];} ?></li>
<li class="li_ans3" ><?php if($row['ans3']) {echo '<b>c. </b>'.$row['ans3'];} ?></li>
<li class="li_ans4" ><?php if($row['ans4']) {echo '<b>d. </b>'.$row['ans4'];} ?></li>
<li class="li_ans5" style="padding-bottom:24px;"><?php if($row['ans5']) {echo '<b>e. </b>'.$row['ans5'];} ?></li>
</ul>
<?php
}mysqli_free_result($result);}while($mysqli->more_results() && $mysqli->next_result());}
?>
</div>
</div>
</form>
</article>
<?php
}mysqli_free_result($result2);}while($mysqli->more_results() && $mysqli->next_result());}
?>
编辑:
<?php
include 'db.php';
$table1 = "SELECT * FROM table1";
if (!empty($_POST['num'])) {
$no = $_POST['num'];
$table2 = "SELECT * FROM table2 WHERE quiz_no = '".$no."'"; //Notice: Undefined variable: table2 in C:\... quiz.html
}
*测验以所需顺序插入。在插入页面中,您一次只能添加一份问卷。
这是带有两个表的MySql数据库:https://ibb.co/k624S82
答案 0 :(得分:1)
我认为线索在代码注释中。此查询
$table2 = "SELECT * FROM table2 WHERE quiz_no = '".$no."'";
似乎是您想要的,因为它“将” table2与table1“连接”。不幸的是,正如您所指出的,它给出了此错误
//Notice: Undefined variable: table2 in C:\... quiz.html
。
已将其替换为$table2 = "SELECT * FROM table2";
,以减轻错误。它做了什么,即不再给出错误,而是导致了下一个问题:没有给出正确的结果。这是一个范围问题:由于$table2
在if
块的内部 中声明,因此仅在该块中可用。将table2
选择移到if
之外是一个好的开始,但是现在它不能“联接”表。
这应该为您提供在问题上取得进展所需的信息。
答案 1 :(得分:0)
您正在以表单let query = collection
.where(...)
.where('zzLastUpdateOn', '>=', firebase_admin_1.firestore.Timestamp.fromDate(startDate))
.where('zzLastUpdateOn', '<=', firebase_admin_1.firestore.Timestamp.fromDate(endDate))
.where(...);
的形式在数组中发送值,因此我怀疑您的查询无效,并且您未定义的变量完全来自于未设置的查询,
name="num[]"
,然后如@DinoCodeSaurus所述被覆盖
您需要做的是从帖子数组$no = $_POST['num'];
$table2 = "SELECT * FROM table2 WHERE quiz_no = '".$no."'";<-- you are trying to concatenate an array as a string
中获取值,或者您可能要做的就是将其设置为单个值,然后将($_POST[num][0])
更改为{{1 }}
除非我想念什么