使用单个复选框更改多行的复选框属性

时间:2014-09-04 16:00:16

标签: php mysql checkbox

早上好,

我正在开展一个更大的项目,但我试图做一个简单的页面来检查我的工作。 php / mysql newb here。抱歉! :)

我想要完成的是最终只有一个用户页面,其中显示了来自表格和单个复选标记的任务行,以便通过选中或取消选中该框来说明用户是否已完成任务。

出于测试目的,我已经设置了一个包含testid,testdata和testcheck的行的表。 testid是INT(2)AutoIncrement和Primary和Unique,testdata是VARCHAR(30),testcheck是TINYINT(1)。自动增量并不重要,因为我手动填充了所有行。我有5行(为数组的缘故)由1-5 testid组成," testdata1-5"对于testdata和0或1进行testcheck。该表运行正常,可以查询数据库。

以下是php开始页面的代码:

<html>

<?php

include_once('init.php');

$query = mysql_query("SELECT testid, testdata, testcheck FROM testtable");

?>
<h1>Test form for checkmarks</h1>
<form method="POST" action="testover.php">
<table border="1">
    <tr>
        <td>
            Test ID
        </td>
        <td>
            Test Data
        </td>
        <td>
            Checked
        </td>
        <td>
            Test Check
        </td>
    </tr>
<?php
    while ( $row = mysql_fetch_assoc($query)) {
?>            
    <tr>
        <td>
            <?php echo $row['testid']; ?>
        </td>
        <td>
            <?php echo $row['testdata']; ?>
        </td>
        <td>
            <center><input type="checkbox" name="<?php $row['testid'] ?>" value="<?php $row['testcheck']; ?>" <?php if($row['testcheck']=='1'){echo 'checked';} ?>></center>
        </td>
        <td>
            <center><?php echo $row['testcheck']; ?></center>
        </td>
    </tr>
<?php } ?>

</table>
           <input type="submit" name="confirm" value="Confirm Details">
           <a href="testcheck.php"><input type="button" value="Home"></a>
</form>
</html>

我一直在来回尝试使用数组作为输入名称(name =&#34; something []&#34;)或者#34; isset&#34;参数,但这是我的知识失败的地方。我在这里和其他网站上阅读了无数文章,我似乎无法找到合适的代码。大多数网站都有包含多个复选框的行或其表格的不同布局。

我发布在这里,希望能够指出如何使用这些复选标记值来更新数据库。

2 个答案:

答案 0 :(得分:0)

我试图理解你想要的代码,如果我理解正确,你想要输出那5行吗?

<?php 
echo '<form action=''>;
while ( $row = mysql_fetch_array($query)) {
echo "<tr>";
echo "<td>".$row['testid']."</td>";
echo "<td>".$row['testdata']."</td>";
echo "<td><input='checkbox' name='".$row['testid']."' value='".$row['testcheck']."'  ".if($row['testcheck']=='1'){echo 'checked';}."></td>";
echo "<td>".$row['testcheck']."</td>";
echo "</tr>";
}
echo "<input type='submit' name='confirm'>";
echo "</form>";
?>

然后更新。由于表单没有动作,它返回自身。因此,现在您可以在页面顶部添加新的PHP和更新代码。

<?php
if(isset($_POST['confirm'])){ // the name of your submit button
    // your update code here.
?>

- 编辑 -

Checkbox looping in php while posting to database

我前一段时间遇到了和你一样的问题。我需要循环复选框才能发布。请查看此主题以获取相关信息。

答案 1 :(得分:0)

这是我的新代码。我知道我在正确的轨道上。在撰写isset语句等时需要一些指导。

<?php

include_once('init.php');

$query = mysql_query("SELECT testid, testdata, testcheck FROM testtable");

$checkedarray = $_POST['isChecked'];

if(isset($_POST['confirm'])) {
if(isset($checkedarray)){ // the name of your submit button
   foreach ($checkedarray as $value)
mysql_query("UPDATE testtable SET testcheck = '{$value}' WHERE testid = {$_POST['testid']}"); } }
?>

<h1>Test form for checkmarks</h1>
<table border="1">
    <tr>
 <td>
            Test ID
        </td>
        <td>
            Test Data
        </td>
        <td>
            Checked
        </td>
        <td>
            Test Check
        </td>
    </tr>
<?php 
echo '<form action="">';
while ( $row = mysql_fetch_array($query)) {
echo "<tr>";
echo "<td>".$row['testid']."</td>";
echo "<td>".$row['testdata']."</td>"; ?>
<td><input type="checkbox" name="isChecked[]" value="<?php $row['testcheck']; ?>" <?php if($row['testcheck']=='1'){echo 'checked';} ?>></td>
<?php
echo "<td>".$row['testcheck']."</td>";
echo "</tr>";
}
echo "<input type='submit' name='confirm'>";
echo "</form>";
?>
           <a href="testcheck.php"><input type="button" value="Home"></a>
</form>
</html>