0

「セッション」テーブルにデータを挿入すると思われる mysqli/php コードを以下に示します。

  ...

if (isset($_POST['textWeight'])) {

$_SESSION['textWeight'] = $_POST['textWeight'];

}

...

        if($_SERVER['REQUEST_METHOD'] == 'POST')

        {

            $time = str_replace(array(' Hrs ', ' Mins ', ' Secs'), array(':', ':', ''), $_SESSION['durationChosen']);

            for ($i = 1, $n = $_SESSION['sessionNum']; $i <= $n; ++$i) {

                    $insertsql = "
              INSERT INTO Session
                (SessionId, SessionTime, SessionDate, SessionWeight, SessionDuration, TotalMarks, ModuleId, TeacherId, Room)
              VALUES
                (?, ?, ?, ?, ?, ?, ?, ?, ?)
            ";
            if (!$insert = $mysqli->prepare($insertsql)) {
              // Handle errors with prepare operation here
            }

                $sessid = $_SESSION['id'] . ($n == 1 ? '' : $i);
                $sessdate = date("Y-m-d", strtotime($_SESSION['dateChosen']));

                $insert->bind_param("sssisisis", $sessid, $_SESSION['timeChosen'], $sessdate,
                             $_SESSION['textWeight'], $time, $_SESSION['textMarks'],
                             $_SESSION['module'], $teacherid, $_SESSION['rooms']);

                $insert->execute();

                if ($insert->errno) {
                  // Handle query error here
                }

                $insert->close();

            }

私が得ている問題は、データベースにデータを挿入していないことです。その理由は、以下にこのエラーが表示されているためです。

Warning: mysqli_stmt::execute(): (23000/1048): Column 'SessionWeight' cannot be null in /web/stud/..../.... on line 182

「SessionWeight」列に投稿された値は $_SESSION['textWeight']、ユーザーが下のラジオ ボタンで「いいえ」をクリックした場合、テキスト ボックスの値が 0 であると述べているため、このエラーは表示されません。 「はい」を選択すると、ユーザーは独自の数字を入力する必要があります (空白のテキスト ボックスは許可されません)。

//HTML
        <th>Provide a Total Weight Assessment is worth to Module?</th>
        <td><input type="radio" name="weightChoice" value="Yes" onClick="getWeight()" class="radioBtn"/> Yes</td>
            <td><input type="radio" name="weightChoice" value="No" onClick="getWeight()" class="radioBtn"/> No</td>
            </tr>
            </table>
            <div id="radioAlert"></div>
            <p></p>
        <table id="tblWeight">
        <tr>
        <th>Weight:</th>
            <td><input type="text" id="txtWeight" name="totalWeight" onkeypress="return isNumberKey(event)" maxlength="5" />%</td>
            </tr>
            </table>

....

//Javascript

        function getWeight() {
            var weightChoice = document.getElementsByName("weightChoice");               
            var textWeight = document.getElementById("txtWeight");
            var tblWeight = document.getElementById("tblWeight");

            if(weightChoice[0].checked == true){
                tblWeight.style.display = "block";
                textWeight.value = "";
            }else{
                tblWeight.style.display = "none";
                textWeight.value = 0;

        }

    }

データベースの SessionWeight 列は、データ型が int(3) の非キー フィールドです。

4

1 に答える 1

0

あなたの入力フィールドにはname="totalWeight"がありますが、読み込もうとしています$_POST['textWeight']

それが問題のようです

于 2012-09-29T20:39:51.443 に答える