【问题标题】:PHP - Loop number of selected check boxes on form submitPHP - 表单提交时选定复选框的循环数
【发布时间】:2014-01-08 05:13:04
【问题描述】:

我有一个问题,我需要在表单提交上循环复选框的数量。 Foreach 循环的复选框,然后我需要将数据插入数据库。 我将如何遍历已通过表单提交传递的复选框数量?

我的代码如下:

表格:

<form action="createChallenge.php" method="post" name="chalCreate">
    Challenge Name:<input type="text" name="chalName" />
    <br />
    Challenge Target:<input type="text"  name="chalTarget"/>
    <br />
    End Date:<input type="text" name="chalDate">
    <br />
    <!-- Needs a jquery datepicker -->
    Select Friends: <br />
    <?php
       $selFriend = $conn->prepare("SELECT * FROM Friends WHERE UserID = '$userID' AND Friend = 'y' ORDER BY FriendName ASC");
       $selFriend->execute();
       foreach($selFriend as $row){
    ?>
    <input type="checkbox" name="test" value="<?php echo $row['FriendID'] ?>"><?php echo $row['FriendName'] ?><br>
    <?php
    }
    ?>

<br />
<button type="submit">Create Challenge</button>
</form>

PHP 处理表单:

<?php
        if(isset($_POST['test']))
        {
            $i = 0;
            foreach($_POST['test'] as $checked)
            {
                echo $friend = $checked;
                $i++;
            }


            echo $name = $_POST['chalName'];
            echo $target = $_POST['chalTarget'];
            echo $date = $_POST['chalDate'];
            echo $friend = $_POST['test'];
            echo $setby = $_COOKIE['userID'];

            $create = $conn->prepare("INSERT INTO Challenge ( chalSetBy, chalName, chalTarget, chalDate ) VALUES ('$setby', '$name', '$target', '$date') ");
            $create->execute();

            if($create)
            {
                echo "Challenge made successfully";
            }
            else
            {
                echo "There was a problem";
            }
        }
      ?>

我以为执行以下操作会回显数据,但没有,它只选中了最后一个复选框:

$i = 0;
foreach($_POST['test'] as $checked)
{
    echo $friend = $checked;
    $i++;
}

【问题讨论】:

    标签: php forms


    【解决方案1】:

    在 HTML 页面中创建一个复选框数组,如下所示,

    <form name="frm" method="post">
    <input type="checkbox" value="1" name="test[]">
    <input type="checkbox" value="2" name="test[]">
    <input type="checkbox" value="3" name="test[]">
    <input type="checkbox" value="4" name="test[]">
    <input type="checkbox" value="5" name="test[]">
    <input type="checkbox" value="6" name="test[]">
    <input type="submit">
    </form>
    
    <?php 
    foreach($_POST['test'] as $key=>$value)
    {
    echo $value."<br>";
    
    }
    

    【讨论】:

    • 旁注:使用echo $value . "\n";echo $value . " "; 将在所有条目之间放置一个空格,否则它将最终成为例如:123456 而不是(可能是有意的)1 2 3 4 5 6以及换行符echo $value . "&lt;br&gt;";(只是一个想法)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多