数据库中的php更新单选按钮状态

时间:2014-12-23 06:24:06

标签: php mysql database pdo insert-update

我是php新手,我刚开始学习php并遇到一些问题。 在管理面板中,我有一些用于添加信息的表单,之后在输出中我有单选按钮,用于选择哪一行显示到网站中。问题在于更新功能,查询没问题,但它不起作用,我需要你的帮助。

感谢。

提交if。

 if(isset($_POST['update_info'])){
        $selected_info=$_POST['selected'];
        $selected_id = $_POST['id'];
        updateHomeInfo($selected_info, $selected_id);
    }

输出添加的行。

<div class="home-output">
        <form action="/admin/" method="post">
            <table class="table table-hover">
                <thead>
                    <tr>
                        <td>#</td>
                        <td>slected</td>
                        <td>title</td>
                        <td>descriptiom</td>
                        <td></td>
                        <td></td>
                    </tr>
                </thead>
                <tbody>
                    <?php foreach($homeInfo as $row) { ?>
                    <tr>
                        <td><?php echo $row['id']; ?><input type="hidden" name="id" value="<?php echo $row['id']; ?>"></td>
                        <td><input type="radio" name="selected" value="home-info" <?php if($row['selected'] == 1) echo "checked"; ?> /></td>
                        <td><?php echo $row['title']; ?></td>
                        <td><?php echo $row['description']; ?></td>
                        <td></td>
                        <td></td>
                    </tr>
                    <?php } ?>
                    <tr>
                        <td>
                            <input type="submit" class="btn btn-default" name="clear_info" value="delete all">
                        </td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td></td>
                        <td>
                            <input type="submit" class="btn btn-default" name="update_info" value="update">
                        </td>
                    </tr>
                </tbody>
            </table>
        </form>
    </div>

并更新功能。

function updateHomeInfo($selected_info, $selected_id) {
    global $db;
    $db->exec("UPDATE home SET selected = '$selected_info' where id = '$selected_id'");
}

enter image description here

1 个答案:

答案 0 :(得分:1)

所有隐藏的输入都具有相同的名称;他们都将被提交,$_POST['id']的值将只是最后一个,而不是所选单选按钮旁边的值。并且所有单选按钮也具有相同的值。

您应该将ID放入单选按钮的值中。您只需要隐藏输入的一个副本,它可以包含所选信息。

<form action="/admin/" method="post">
    <input type="hidden" name="selected" value="home-info">
    <table class="table table-hover">
        ...
        <td><?php echo $row['id']; ?>
        <td><input type="radio" name="id" value="<?php echo $row['id']; ?>" <?php if($row['selected'] == 1) echo "checked"; ?> /></td>
        ...

实际上,如果selected是布尔值,您似乎根本不需要selected输入。它应该只是:

function updateHomeInfo($selected_id) {
    $db->exec("UPDATE home SET selected = (id = '$selected_id')");
}

这会为所选ID设置selected1,并为所有其他ID设置0