手から出たゴミ

食って、寝て、糞をする合間で作り出されたゴミ

POSTする情報の追加

やったこと

javascriptでsubmitでページ遷移前に inputを作成してPOSTの値を追加する

コード

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="utf-8">
    <title></title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript">
        function count() {
            var count = document.getElementsByClassName("count");
            let sum = 0;
            for (let i = 0; i < count.length; i++) {
                sum += parseInt(count[i].value);
            }

            var send_count = document.createElement('input');
            // データを設定
            send_count.setAttribute('type', 'hidden');
            send_count.setAttribute('name', 'count');
            send_count.setAttribute('value', sum);
            // 要素を追加
            document.insert.appendChild(send_count);
        }
    </script>
</head>

<body>
    <form method="POST" name="insert" action="insert.php" onsubmit="count()" id="insert_form">
        <table id="insert">
            <thead>
                <tr>
                    <th>科目情報</th>
                    <th>成績評価</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>データベース</td>
                    <td>
                        <input type="radio" id="zero_database" name="database" value="0">
                        <label for="zero_database">不可</label>
                        <input type="radio" id="one_database" name="database" value="1">
                        <label for="one_database">可</label>
                        <input type="radio" id="two_database" name="database" value="2">
                        <label for="two_database">良</label>
                        <input type="radio" id="three_database" name="database" value="3">
                        <label for="three_database">優</label>
                        <input type="radio" id="four_database" name="database" value="4">
                        <label for="four_database">秀</label>
                        <input type="radio" id="none_database" name="database">
                        <label for="none_database">取得していない</label>

                        <input type="hidden" class="count" value="2">
                    </td>
                </tr>
                <tr>
                    <td>微積分</td>
                    <td>
                        <input type="radio" id="zero_Calculus" name="Calculus" value="0">
                        <label for="zero_Calculus">不可</label>
                        <input type="radio" id="one_Calculus" name="Calculus" value="1">
                        <label for="one_Calculus">可</label>
                        <input type="radio" id="two_Calculus" name="Calculus" value="2">
                        <label for="two_Calculus">良</label>
                        <input type="radio" id="three_Calculus" name="Calculus" value="3">
                        <label for="three_Calculus">優</label>
                        <input type="radio" id="four_Calculus" name="Calculus" value="4">
                        <label for="four_Calculus">秀</label>
                        <input type="radio" id="none_Calculus" name="Calculus">
                        <label for="none_Calculus">取得していない</label>

                        <input type="hidden" class="count" value="1">
                    </td>
                </tr>
            </tbody>
        </table>
        <input type="submit" value="送信">
    </form>
</body>

</html>
<?php
    $sum = $_POST["count"]; // 総単位数
    echo "総単位数 : " . $sum . "<br>";
  ?>

終わりに

inputのvalueを取得した時 文字列となっていた parseInt()で整数値にして計算することができる

要素追加時 document.insert.appendChildの insertはフォームのnameから取ってきていることに 気が付くのに時間がかかった

参考サイト