我将构建一个表,让用户输入他们的SPM结果,然后我的系统将过滤并显示给他们哪些课程适用。

我试图在一个表中制作10行,每行包含2个<select>,一个是SPM主题,另一个是他们获得的等级。从我的数据库中获取“主题”和“成绩”选项。

php - 通过使用相同的数据库表数据在每个表行中显示&lt;select&gt;-LMLPHP
php - 通过使用相同的数据库表数据在每个表行中显示&lt;select&gt;-LMLPHP

这是我的表代码:

<?php
$result = mysql_query("SELECT * FROM spm_subject");
$result2 = mysql_query("SELECT * FROM spm_grade");
?>

<table class="p1" bgcolor="#FFFFCC" bordercolor="#000000" align="center" width="771" border="2">
    <tr>
        <td><div align="center"><strong>No.</strong></div></td>
        <td><div align="center"><strong>Subject Name</strong></div></td>
        <td><div align="center"><strong>Grade</strong></div></td>
    </tr>
<form action="checkresult2.php">
<?php
    for($i=1; $i<=10; $i++)
    {?>
    <tr>
        <td width="44"><div align="center"><?php echo $i; ?></div></td>
        <td width="601">
            <select>
                <option value="">--- Please choose a subject ---</option>
                <?php
                    while($s = mysql_fetch_assoc($result))
                    {?>
                        <option name="subj"><?php echo $s["name"]; ?></option>
                <?php } ?>
            </select>
        </td>
        <td width="104"><div align="center">
            <select>
                <option value="">&nbsp;</option>
                <?php
                    while($g = mysql_fetch_assoc($result2))
                    {?>
                        <option name="grad"><?php echo $g["grade"]; ?></option>
                <?php } ?>
            </select>
        </div>
        </td>
    </tr>
<?php } ?>
    <tr>
        <td colspan="3">
            <div align="center">
                <input type="submit" value="Submit">
            </div>
        </td>
    </tr>
</form>
</table>


该表已构建,但只有FIRST ROW能够显示两个<select>中两个数据库表中的数据。

有解决此问题的解决方案吗?

最佳答案

1)移除<form>内的<table>。因为,不允许将表单作为表,tbody或tr的子元素。您可以在表单中包含整个表格。您可以在表格单元格中有一个表单。您不能在表单中包含表的一部分。有关更多信息,请单击this

2)<option>没有name属性。检查here

3)将name赋予<select></select>。检查here

4)由于要向checkresult2.php页面提交多个值,因此必须将名称定义为name="subj[]",将name="grad[]"定义为array类型。

5)在其余9行中显示数据的另一种方法是:在while loop之前将query放在那里,如下所示。

更新的代码。

<form action="checkresult2.php">
    <table class="p1" bgcolor="#FFFFCC" bordercolor="#000000" align="center" width="771" border="2">
          <tr>
              <td><div align="center"><strong>No.</strong></div></td>
              <td><div align="center"><strong>Subject Name</strong></div></td>
              <td><div align="center"><strong>Grade</strong></div></td>
          </tr>

            <?php
          for($i=1; $i<=10; $i++)
          {?>
          <tr>
              <td width="44"><div align="center"><?php echo $i; ?></div></td>
              <td width="601">
                  <select name="subj[]">
                      <option value="">--- Please choose a subject ---</option>
                          <?php
                          $result = mysql_query("SELECT * FROM spm_subject");
                          while($s = mysql_fetch_assoc($result))
                          {?>
                              <option value="<?php echo $s['name']; ?>"><?php echo $s["name"]; ?></option>
                      <?php } ?>
                  </select>
              </td>
              <td width="104"><div align="center">
                  <select name="grad[]">
                      <option value="">&nbsp;</option>
                          <?php
                          $result2 = mysql_query("SELECT * FROM spm_grade");
                          while($g = mysql_fetch_assoc($result2))
                          {?>
                              <option value="<?php echo $g['grade']; ?>"><?php echo $g["grade"]; ?></option>
                      <?php } ?>
                  </select>
              </div>
              </td>
          </tr>
            <?php }?>
          <tr>
              <td colspan="3">
                  <div align="center">
                      <input type="submit" value="Submit">
                  </div>
              </td>
          </tr>
    </table>
</form>


[注意:在PHP 5.5.0中不建议使用mysql_,并在PHP 7.0.0中将其删除。使用MySQLi或应该使用PDO_MySQL扩展名。]

关于php - 通过使用相同的数据库表数据在每个表行中显示<select>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35176392/

10-11 03:07
查看更多