首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP SQL:选中复选框时更新多行的值

PHP SQL:选中复选框时更新多行的值
EN

Stack Overflow用户
提问于 2018-05-17 18:58:49
回答 2查看 446关注 0票数 0

我正在尝试使用提交按钮,同时在选中复选框的每一行中更新状态列,从'Ikke Betalt‘到'Betalt’。基本上,这是一个活动的参与者名单,我希望能够‘检查’他们一旦他们支付。

请参见表:

我的代码

代码语言:javascript
复制
<form method="post">
<table>
    <thead>
        <tr>
            <td>Betalt?</td>
            <td>Id</td>
            <td>Navn</td>
            <td>Nummer</td>
            <td>Email</td>
            <td>Antal Gæster</td>
            <td>Dato</td>
            <td>Status</td>
        </tr>
    </thead>
    <tbody>
        <?php include 'deltagere.php'; ?>
    </tbody>
</table>
<p><button name="submit" type="submit" value="submit">Opdater</button></p>
</form>

Php

代码语言:javascript
复制
$sql = "SELECT * FROM t_launch ORDER BY launch_date ASC";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {

// Output data of each row
while($row = mysqli_fetch_assoc($result)) {
    
    echo '<tr>' . PHP_EOL;
    echo '<td><input type="checkbox" name="betaling[]" value="' .$row["launch_id"]. '"></td>' . PHP_EOL;
    echo '<td>' . $row["launch_id"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_firstname"] . ' ' . $row["launch_lastname"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_number"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_email"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_guests"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_date"] . '</td>' . PHP_EOL;
    echo '<td>' . $row["launch_status"] . '</td>' . PHP_EOL;
    echo '</tr>' . PHP_EOL;
    }
}

else {
echo "0 results";
}

foreach ($_POST['betaling'] as $launch_id) {
mysql_query("UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` = '$betaling'");
}

php的第一部分列出了一个很好的表,但在搜索了几个小时之后,我还没能破解第二个更新部分。

我已经使用静态ID在我的数据库中测试了SQL UPDATE调用,并确认它可以工作,但目前页面只是更新而不更新任何内容。

已解决

在与一位有一定php经验的朋友交谈后,我们找到了一个解决方案:

代码语言:javascript
复制
if(isset($_POST['checkednames'])) {
    $ids = join(', ', $_POST['checkednames']);
    mysqli_query($conn, "UPDATE `t_launch` SET `launch_status` = 'Betalt' WHERE `launch_id` IN ($ids)") or die(mysql_error());
    }

我们必须重新格式化数组以满足sql的要求。

注意-我们还修复了一些关于mysql和mysqli的语法错误(我把它们弄混了)

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50389782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档