Как правильно разместить переменную в выпадающем меню - PullRequest
1 голос
/ 18 ноября 2011

В моем выпадающем меню есть переменная, известная как $ moduleHTML, $ moduleHTML выводит все модули из курса. Например. Курс: ИКТ, Модули: Веб-программирование, Современные приложения для баз данных, Электронная коммерция.

Теперь, когда я вывожу $ moduleHTML, он отлично работает, поскольку выводит все модули из курса. Но если я попытаюсь поместить $ moduleHTML в раскрывающееся меню, в раскрывающемся меню он выводит только один модуль (это веб-программирование). Как мне реализовать его, чтобы в раскрывающемся меню отображалось несколько модулей в виде нескольких параметров?

Ниже приведен код:

<?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 ]

1 голос
/ 18 ноября 2011

Каждый модуль должен иметь свой собственный option. Вы помещаете полный HTML в один option сейчас.

С помощью простого цикла вы можете пройти через все модули и поместить их между опциями, поместите это в теги select.

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

Таким образом, вы получите option за каждый пройденный модуль.

0 голосов
/ 18 ноября 2011

Вы должны сделать это таким же образом:

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

Должен показать выпадающий список:)

0 голосов
/ 18 ноября 2011

Запустите foreach, чтобы создать элемент option для каждого модуля:

foreach ($dataArray as $courseId => $courseData) 
{
    foreach ($courseData['Modules'] as $moduleId => $moduleData) 
    {
        echo '<option value="' . $moduleId . '">' . $moduleData['ModuleName'] . '</option>';
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...