所以,我想这可能是一个简单的问题,但是我现在无法真正解决这个问题……= S

我有一个表单,可以从数据库中获取数据。

它包含一列名称,然后包含两列带有复选框。

提交此表单时,我想使用给定的复选框更新数据库。

因此,将加载并填写表单,例如5个不同的名称/用户。每个用户都有2个复选框选择。 (共3列)。

到目前为止,它仅对两个复选框中的最后一个复选框处于选中状态,适用于所有对象。然后我的代码将其视为仅选中了第一个复选框。(因为未发送未选中的复选框,所以我的最后一个复选框位于我的第一个复选框的数组位置)。

对不起,我的解释很不好。希望您能解决我的问题。

这是一些代码:

<form id="rsvpRegForm" method="post" action="updateRSVP.php">
                    <h2>Kryss av for kirke og/eller middag:</h2>
                    <br>
                    <table id="rsvpRegTable" border="0">
                    <?php while($guest = $guestSQL->fetch_assoc()){ ?>
                        <tr>
                            <td style="text-align:left" width="200px"><?=$guest['guestName']?><input type="hidden" name="guest<?=$guest['guestID']?>[]" value="<?=$guest['guestID']?>"></td>
                            <td><input type="checkbox" <?php if(isset($guest['guestChurch'])){if($guest['guestChurch'] == 1){ echo 'checked';}} ?> value="1" name="guest<?=$guest['guestID']?>[]">Kirke</td>
                            <td><input type="checkbox" <?php if(isset($guest['guestParty'])){if($guest['guestParty'] == 1){ echo 'checked';}} ?> value="1" name="guest<?=$guest['guestID']?>[]">Middag</td>
                        </tr>
                    <?php } ?>

                    </table>
                    <br>
                    <input type="submit" value="Send RSVP">
                </form>


这是负责使用结果更新数据库的代码:

foreach($_POST as $guest){

if(!isset($guest[1])){
    $guest[1] = 0;
}

if(!isset($guest[2])){
    $guest[2] = 0;
}

$stmt = $mysqli->prepare('UPDATE rsvp_guests SET
    guestReplied = ?,
    guestChurch = ?,
    guestParty = ?
    WHERE guestID = ?');


$stmt->bind_param('dddd',
    $rsvpReplied,
    $guest[1],
    $guest[2],
    $guest[0]);

$stmt->execute();
$stmt->close();
}

最佳答案

将其命名为name="guest<?=$guest['guestID']?>[party]"name="guest<?=$guest['guestID']?>[church]"之类的名称,以便您知道哪个是打开还是关闭。

关于php - HTML表单-将每一行作为数组发送,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21033347/

10-13 03:00