0

当我在数据库中提交选中的复选框时,我想保留选中的复选框..请帮我在这里做什么..这只是我的片段..

<?php
if (isset($_POST['submit'])) {
    $radha        = $_POST['radha'];
    $radha_values = '';
    foreach ($radha as $val) {
        $radha_values .= $val . ",";
    }
    $sql = "INSERT INTO tbl_check (names) VALUES ('$radha_values')";
    $res = mysql_query($sql) or die("error:" . mysql_error());
    if ($res) {
        echo "added";
    }
    mysql_close();
}
$sql = "select names from tbl_check where id=2";
$res = mysql_query($sql) or die("error:" . mysql_error());
$row = mysql_fetch_array($res);
$names = $row['names'];
echo $names;
?>
<form method="post" action="checkbox.php">
    <input name="radha[]" type="checkbox" value="krishna"/> krishna
    <input name="radha[]" type="checkbox" value="gopala"/>gopala
    <input name="radha[]" type="checkbox" value="govinda"/>govinda
    <input name="radha[]" type="checkbox" value="haribol"/>haribol<br/>
    <input name="submit" type="submit" value="add"/>
</form>
4

3 回答 3

1

尝试

<?
if (isset($_POST['submit'])) {
    $radha        = $_POST['radha'];
    $radha_values = '';
    foreach ($radha as $val) {
        $radha_values .= $val . ",";
    }
    $sql = "INSERT INTO tbl_check (names) VALUES ('$radha_values')";
    $res = mysql_query($sql) or die("error:" . mysql_error());
    if ($res)
        echo "added";
    mysql_close();
}

$sql = "select names from tbl_check where id=2";
$res = mysql_query($sql) or die("error:" . mysql_error());
$row   = mysql_fetch_array($res);
$names = $row['names'];
$name  = explode(',', $names);
foreach ($name as $checked) {

    if (strpos($checked, 'krishna') !== false) {
        $krishna = 'checked';
    }
    if (strpos($checked, 'gopala') !== false) {
        $gopala = 'checked';
    }
    if (strpos($checked, 'govinda') !== false) {
        $govinda = 'checked';
    }
    if (strpos($checked, 'haribol') !== false) {
        $haribol = 'checked';
    }

}
?>

<form method="post" action="checkbox.php">
    <input name="radha[]" type="checkbox" value="krishna" <?php echo $krishna;?>/> krishna
    <input name="radha[]" type="checkbox" value="gopala"  <?php echo $gopalaa;?>/>gopala
    <input name="radha[]" type="checkbox" value="govinda" <?php echo $govinda;?>/>govinda
    <input name="radha[]" type="checkbox" value="haribol"  <?php echo $haribol;?>/>haribol<br />
    <input name="submit" type="submit" value="add"  />
</form>
于 2013-09-06T02:30:20.500 回答
0

您可以指定是否在 HTML 中默认选中复选框:

<input type="checkbox" name="vehicle" value="Car" checked>

对比

<input type="checkbox" name="vehicle" value="Car">

您可以在页面加载时使用 PHP 动态修改 HTML 以选中或取消选中该框:

echo '<input type="checkbox" name="vehicle" value="Car"';
if ($checkedStatus == True) echo ' checked';
echo '>'

用于跟踪复选框状态的标志可以是 (1) 由 PHP 中的 SQL 查询确定,(2) 通过PHP 会话传递,或 (3) 作为 POST 数据等。

于 2013-09-06T02:26:06.390 回答
0

这里有一些关于如何使用存储的值数组来实现这一点的想法;它还使用PDO和准备好的语句。

看看,让我知道是否有任何不清楚的地方。

function showRadhaCheckboxes(array $values, array $checked = array())
{
    $checked = array_flip($checked);

    foreach ($values as $value => $title) {
        echo sprintf('<input name="radha[%s]" type="checkbox" value="1"%s /><span>%s</span>',
            htmlspecialchars($value, ENT_QUOTES, 'UTF-8'),
            array_key_exists($value, $checked) ? ' checked="checked"' : '',
            htmlspecialchars($title, ENT_QUOTES, 'UTF-8')
        );
    }
}

storeRadhaValues(PDO $db, array $post)
{
    $stmt = $db->prepare('INSERT INTO tbl_check (names) VALUES (:values)');
    $stmt->execute(array(
        ':values' => join(',', array_keys($post))
    ));
}

loadRadhaValues(PDO $db, $id)
{
    $stmt = $db->prepare('SELECT names FROM tbl_check WHERE id = :id');
    $stmt->execute(array(
        ':id' => $id
    ));

    $names =current($stmt->fetchAll(PDO::FETCH_COLUMN));

    return explode(',', $names);
}

$db new PDO(...);

showRadhaCheckboxes(array(
        'krishna' => 'krishna',
        'gopala' => 'gopala',
        'govinda' => 'govinda',
        'haribol' => 'haribol',
), loadRadhaValues($db, 2));
于 2013-09-06T03:04:53.990 回答