PHP下拉菜单将来自MySQL数据表的2行连接在一起

问题描述 投票:1回答:2

没有用PHP创建表单的经验。

我可以让我的表单产生一个下拉列表,其中列出了我的行之一作为选项,但是一旦我尝试将2行(来自同一张表)连接在一起以输出选项,就可以了...

a)它不起作用,并且出现错误

b)我将第一行作为一个选项,然后将我的下一行作为一个单独的选项。

我知道有一个简单的解决方案,但是我是一名正在学习的在线学生,我似乎找不到找到编写该代码的好例子。我很确定这是报价放置不正确的问题。

MySQLTable数据:

表名:课程表行: course_id,course_name,max_enrolment示例数据: LO-COMP-8001,HTML简介,20

function select_course(){
        global $open;
        $select = "SELECT * FROM courses";
        $result = mysqli_query($open, $select);
        return $result;
    }
    <form action="insert.php" method="post">
    <dl>
        <dt>Select Course</dt>
        <dd><select name="course_id">
           <?php   // CREATE dropdown menu
                 $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {
                    foreach ($row as $selection) {
                       echo "<option value=\"$selection\">$selection</option>";
                    }}
              ?>
        </select>
        </dd>
    </dl>

然后还有更多表单字段,例如学生姓名和学生ID ...

目标输出:

  • course_id课程名称
  • “ LO-COMP-8001 HTML简介” ...作为单个连接的下拉选项,下拉菜单中还有其他剩余课程

当前输出:

  • LO-COMP-8001(可选)
  • HTML简介(作为另一个选择!...不好)
  • 20(必须隐藏,我需要检查课程是否在其他功能中已满,并且允许或拒绝学生注册等。)

我尝试过:

// output is the one mentioned above..
echo "<option value=\"$selection\">$selection</option>";
// or alternatively...
echo '<option value="'.$row['course_id'].'">'.$row['course_id'].'</option>';

但是第二个选项会产生各种奇怪的结果。

这是我现在正在尝试的内容...

echo '<option value="'.$row['course_id'] $row['course_name']'">'.$row['course_id'] $row['course_name'].'</option>';

但是在引号和方括号中存在很多问题,我只是不知道如何正确格式化输出格式。

感谢您的协助。

php html
2个回答
1
投票

$ row将整个行作为关联数组保存,因此不需要'foreach'循环。

function select_course(){
        global $open;
        $select = "SELECT * FROM courses";
        $result = mysqli_query($open, $select);
        return $result;
    }
    <form action="insert.php" method="post">
    <dl>
        <dt>Select Course</dt>
        <dd><select name="course_id">
           <?php   // CREATE dropdown menu
                 $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {?>
                       <option value="<?php echo $row["course_id"]; ?>"><?php echo $row["course_name"]; ?></option>
                    <?php }
              ?>
        </select>
        </dd>
    </dl>
    </form>

0
投票

我也能够提出另一种解决方案:

一旦删除了foreach循环,我就尝试清理一些代码...我不确定这是不常见还是'坏'的样式,但是它确实起作用。

  $result = select_course();  
                    while ($row = mysqli_fetch_assoc($result)) {
                       $course_id     = $row['course_id'];
                       $course_name   = $row['course_name'];
                       echo  "<option value=\"$course_id\">$course_id $course_name</option>";

结果:LO-COMP-8001 HTML简介作为一个选项,另外还有数据库中的所有其他课程。

© www.soinside.com 2019 - 2024. All rights reserved.