Попытка распечатать выбранный элемент из ассоциативного массива из списка данных

#php #html #forms

Вопрос:

У меня есть форма, и я пытаюсь распечатать выбранный элемент из массива, чтобы распечатать описание курса. Это часть моего кода. Остальная часть кода работает нормально. У меня проблема только с массивом. Я использую метод и действие. Я чувствую, что мое утверждение foreach неверно, однако я не мог этого понять. Есть идеи, что вызывает печать всех элементов массива?

     <label for="course">Choose a course:</label>
    <input list="courseOptions" id="course" name="course">
    <datalist id="courseOptions">
        <option value="COMP1230">
        <option value="COMP2129">
        <option value="COMP2147">
        <option value="COMP2130">
        <option value="COMP2138">
        <option value="GSSC1054">    
    </datalist>
<?php
    $course = array("COMP1230"=>"Advanced Web Development",
    "COMP2129"=>"Advanced Object-Oriented Programming",
    "COMP2147"=>"System Analysis, Design amp; Testing",
    "COMP2130"=>"Application Development Using Java",
    "COMP2138"=>"Advanced Database Development",
    "GSSC1054"=>"Forensic Psychology"
    );
    
    foreach($course as $courseCode => $courseName){
        echo("<div> Course Name:   $courseName </div>");
    } 
?>
 

Я хочу, чтобы был напечатан только выбранный вариант

Я хочу, чтобы был напечатан только выбранный вариант

Комментарии:

1. Ну, сначала вам нужно будет отправить выбор (через форму или AJAX), прежде чем PHP сможет что-либо с ним сделать

2. Да. Я сделал это

3. Хорошо, в вопросе не было никаких доказательств этого — ни <form> тега, ни попытки проверить $_POST данные, чтобы найти то, что было отправлено. Вы вообще изучали учебник по формам HTML/PHP? Потому что вы бы увидели в этом пользу $_POST .

4. «Есть идеи, что вызывает печать всех элементов массива?» — хм, тот факт, что вы написали код именно для этого …?

Ответ №1:

Когда форма будет отправлена, используйте $_POST['course'] ее, чтобы получить выбранный курс.

 if (isset($_POST['course']) {
    echo "<div>Course Name: {$course[$_POST['course']]}</div>";
} else {
    foreach($course as $courseCode => $courseName){
        echo("<div> Course Name:   $courseName </div>");
    }
}
 

Комментарии:

1. это сработало, большое вам спасибо.