PHP не может опубликовать значения поля выбора

#php #jquery #html #post #mysqli

#php #jquery #HTML #Публикация #mysqli

Вопрос:

Я пытаюсь получить некоторые значения от пользователей, и после этого я вставляю эти значения в свою базу данных, но я не могу получить некоторые значения моих полей выбора с помощью $_POST .

Пользователи сначала выбирают тип взаимодействия через selectbox, и в зависимости от значения этого поля выбора нижнее меню изменяется через jQuery (вот почему эти IENG349ReqCourses и IENG449ReqCourses div скрыты).

Но я не могу получить значения полей выбора grade внутри этих скрытых div полей. Остальные поля ввода в порядке, я могу получить их значения и сохранить в своей базе данных.

HTML:

 <form id="intershipStage1Form" method="POST" action="form1.php">
    <div id="generalInfo">
        <center>
            <table>
                <tr>
                    <td colspan="2" valign="middle" align="center">
                        <label id="stuNameLabel">Student Full Name: <?php echo $_SESSION['username']; ?></label>
                    </td>
                </tr>
                <tr>
                    <td title="Your student number contains only numbers and should be 11 digits " valign="middle"><label id="stuNumberLabel">Student Number:</label></td>
                    <td><input id="stuNumberText" class="form1Text" type="text" name="stuNumberText" /></td>
                </tr>
                <tr>
                    <td title="A sample format: 3.16 and do not use comma(,)" valign="middle"><label id="stuGPALabel">Student GPA:</label></td>
                    <td><input id="stuGPAText" class="form1Text" type="text" name="stuGPAText" /></td>
                </tr>
                <tr>
                    <td title="Choose your academic advisor" valign="middle"><label id="stuAdvisorLabel">Student Advisor:</label></td>
                    <td align="center">
                        <select id="advisorSelectionBox" name="advisorSelectionBox">
                            <option value="">--select--</option>
                            <?php
                                $userType = "A";
                                $stmt = $db->prepare("SELECT * FROM users WHERE UserType = ?");
                                if($stmt == "false"){
                                    die('Query error !'.$db->error);  
                                }
                                $stmt->bind_param('s', $userType);
                                $stmt->execute();
                                $result = $stmt -> get_result();

                                while($advisor = $result ->fetch_array(MYSQLI_BOTH)){
                                    echo '<option value="'.$advisor["UserID"].'">'.$advisor['FirstName']." ".$advisor['LastName'].'</option>';
                                }
                            ?>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td title="Choose your current study year" valign="middle">
                        <label>Study Year:</label>
                    </td>
                    <td align="center">
                        <select id="studyYearBox" name="studyYearBox">
                            <option value="">--select--</option>
                            <option value="SOPHOMORE">SOPHOMORE</option>
                            <option value="JUNIOR">JUNIOR</option>
                            <option value="SENIOR">SENIOR</option>
                        </select>
                    </td>
                </tr>
                <tr>
                    <td title="Choose your internship type before try to sent this form to your advisor" valign="middle">
                        <label>Internship Type:</label>
                    </td>
                    <td align="center">
                        <select id="intershipTypeBox" name="intershipTypeBox">
                            <option value="">--select--</option>
                            <option value="IENG349">IENG 349</option>
                            <option value="IENG449">IENG 449</option>
                        </select>
                    </td>
                </tr>
            </table>
        </center>
    </div>
    <div id="litleSpacer"></div>
    <div id="IENG349ReqCourses" class="reqCourses" hidden="true">
        <center>
            <table>
                <caption style="color:#f00;">Please select your grades</caption>
                <tr>
                    <td valign="middle">
                        <label>IENG 102 - Intro to IE:</label>
                    </td>
                    <td>
                        <select name="IENG102Grade">
                            <option value="">--select--</option>
                            <option value="A">A</option>
                            <option value="A-">A-</option>
                            <option value="B ">B </option>
                            <option value="B">B</option>
                            <option value="B-">B-</option>
                        </select>
                    </td>
                </tr>
            </table>
        </center>
    </div>
    <div id="IENG449ReqCourses" class="reqCourses" hidden="true">
        <center>
            <table>
                <caption style="color:#f00;">Please select your grades</caption>
                    <tr>
                        <td valign="middle">
                            <label>IENG 312 - System Simulation:</label>
                        </td>
                        <td>
                            <select name="IENG312Grade">
                                <option value="">--select--</option>
                                <option value="A">A</option>
                                <option value="A-">A-</option>
                                <option value="B ">B </option>
                                <option value="B">B</option>
                                <option value="B-">B-</option>
                            </select>
                        </td>
                    </tr>
            </table>
        </center>
    </div>
    <div id="litleSpacer"></div>
    <input id="sendButton" type="submit" name="sendButton" value="SEND FOR APPROVEMENT"/>
</form>
  

PHP:

 <?php
    $stuID = $_SESSION['user_id'];
    $stuFullName = $_SESSION['username'];
    $stuNumber = $_POST['stuNumberText'];
    $stuGPA = $_POST['stuGPAText'];
    $stuAdvisor = $_POST['advisorSelectionBox'];
    $studyYear = $_POST['studyYearBox'];
    $internshipType = $_POST['intershipTypeBox'];
    $coordinatorAppr = "SENT";
    $advisorAppr = "SENT";

    $IENG102 = $_POST['IENG102Grade'];
    $IENG312 = $_POST['IENG312Grade'];

    $insert_stmt = $db->prepare("INSERT INTO internship_form_info VALUES(NULL,?,?,?,?,?,?,?,?,?)");
    if($insert_stmt === false){
        die('Query Error: '.$db->error);
    }
    $insert_stmt ->bind_param("sssssssii",$stuFullName,$stuNumber,$stuGPA,$studyYear,$internshipType,$advisorAppr,$coordinatorAppr,$stuID,$stuAdvisor);
    $insert_stmt ->execute();

    $formID = $db->insert_id;

    if($internshipType=="IENG349"){
        $insert_stmt2 = $db->prepare("INSERT INTO ieng349_req_courses_grades VALUES(NULL,?,?,?)");
        if($insert_stmt2 === false){
            die('Query Error: '.$db->error);
        }
        $insert_stmt2 ->bind_param("iisssssss",$stuID,$formID,$IENG102);
        $insert_stmt2 ->execute();
    }
    else if($internshipType=="IENG449"){
        $insert_stmt3 = $db->prepare("INSERT INTO ieng449_req_courses_grades VALUES(NULL,?,?,?)");
        if($insert_stmt3 === false){
            die('Query Error: '.$db->error);
        }
        $insert_stmt3 ->bind_param("iisssssssssssss",$stuID,$formID,$IENG312);
        $insert_stmt3 ->execute();
    }

    $db->close();
  

Итак, в чем может быть проблема? Любая помощь была бы оценена!

Ответ №1:

Вы должны указать один вариант как выбранный, чтобы отправить его на сервер. Если поле скрыто и ни один параметр не отмечен как выбранный, вы не получите значения на сервере.

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

1. 1 Если значение параметра равно «, то ваша переменная _POST будет равна »

2. @Ali я удалил атрибут hidden = «true» и попробовал еще раз, прежде чем задать этот вопрос, но ничего не изменилось. Все еще отправляет null в базу данных

3. вы пробовали print_r ($ _POST), чтобы действительно увидеть, что вы получаете на стороне сервера?

4. @Ali Да, у меня есть, я решил проблему. Некоторые теги выбора имеют одинаковое название attirubute. Это вызывает мою проблему, спасибо.

Ответ №2:

Я предлагаю вам проверить, например, в заголовках Http в реальном времени, какую дату $ _POST вы отправляете. Также в самом верху вашего скрипта поместите var_dump($_POST);