如何正确地将变量放入下拉菜单中

时间:2011-11-18 13:31:05

标签: php forms drop-down-menu project

我的dropdownmenu中有一个名为$ moduleHTML的变量,$ moduleHTML输出课程中的所有模块。例如。课程:ICT,模块:网络编程,现代数据库应用,电子商务。

现在当我输出$ moduleHTML时,它完美地运行,因为它输出了课程中的所有模块。但是如果我尝试将$ moduleHTML放在下拉菜单中,它只会在下拉菜单(即Web编程)中输出一个模块作为选项。我怎么想实现它,以便在下拉菜单中将多个模块显示为多个选项?

以下是代码:

<?php
$query = "SELECT cm.CourseId, cm.ModuleId, 
                     c.CourseName,
                     m.ModuleName
                     FROM Course c
                     INNER JOIN Course_Module cm ON c.CourseId = cm.CourseId
                     JOIN Module m ON cm.ModuleId = m.ModuleId
                     WHERE
                     (c.CourseId = '".mysql_real_escape_string($courseid)."')
                     ORDER BY c.CourseName, m.ModuleId";

$num = mysql_num_rows($result = mysql_query($query));
$dataArray = array();

while ($row = mysql_fetch_array($result)) { 
    $dataArray[$row['CourseId']]['CourseName'] = $row['CourseName']; 
    $dataArray[$row['CourseId']]['Modules'][$row['ModuleId']]['ModuleName'] = $row['ModuleName']; 
}

foreach ($dataArray as $courseId => $courseData) {
    $output = ""; 
    $output .= "<p><strong>Course:</strong> " . $courseId .  " - "  . $courseData['CourseName'] . "</p>";

    foreach ($courseData['Modules'] as $moduleId => $moduleData) { 
        // elaborate module data 
        $moduleHTML = "";
        $moduleHTML .= "<p>" . $moduleId . " - " . $moduleData['ModuleName'] ."</p>"; 
         $output .= $moduleHTML;
    }
}

echo $output;
?>


<form action="create_session.php" method="post" name="sessionform">
   <table>
     <tr>
        <th>7: Module:</th>
        <td><select name="module" class="modulesDrop">
             <option value=""><?php echo $moduleHTML; ?></option>
     </tr>
   </table>
</form>

3 个答案:

答案 0 :(得分:1)

每个模块都应该有自己的option。 您现在将完整的HTML放入一个option

使用简单的循环,您可以浏览所有模块并将它们放在选项之间,将其放在select标记内。

foreach ($courseData['Modules'] as $moduleId => $moduleData) { 
  echo '<option value="">'.$moduleId.' - '.$moduleData['ModuleName'].'</option>'; 
}

通过这种方式,您将获得循环的每个模块的option

答案 1 :(得分:0)

运行foreach为每个模块创建一个option元素:

foreach ($dataArray as $courseId => $courseData) 
{
    foreach ($courseData['Modules'] as $moduleId => $moduleData) 
    {
        echo '<option value="' . $moduleId . '">' . $moduleData['ModuleName'] . '</option>';
    }
}

答案 2 :(得分:0)

你必须以同样的方式做到这一点:

$output = '<select name="module" class="modulesDrop">'.PHP_EOL;
foreach ($courseData['Modules'] as $moduleId => $moduleData) { 
             $output .= "<option value=".$moduleId.">".$moduleData."</option>".PHP_EOL;
         }
     }
$output .= '</select>';

应显示下拉列表:)