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

问题描述:

早上好,更改单个复选框的多行复选框属性

我正在一个较大的项目工作,但我试图做一个简单的页面,以检查我的工作。 php/mysql newb在这里。抱歉! :)

即时通讯工具试图完成的是最终有一个用户页面显示与表中的任务行和单个复选标记,以便说出用户是否已完成任务或没有通过检查或取消选中框。

为了测试的目的,我建立了一个带有testid,testdata和testcheck行的表格。 testid INT(2)AutoIncrement和Primary和Unique,testdata是VARCHAR(30),testcheck是TINYINT(1)。自动增量并不重要,因为我手动填充所有行。我有5行(为了数组的缘故)由1-5个testid组成,“testdata1-5”用于测试数据,以及用于testcheck的0或1。该表运行正常,可以查询数据库。

下面是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> 

我一直来回试图使用输入名称的数组(名称=“一些[]”)或“isset”参数,但这是我的知识失败的地方。我在这里和其他网站上阅读了无数的文章,我似乎找不到合适的代码来使用。大多数网站的行具有多个复选框或表格的不同布局。

我在这里发布,希望能指出一些方向,以便如何使用这些复选标记的值更新数据库。

+0

您缺少'

'标签。提交按钮需要一个表单才能工作,并将数据发送到您想要的页面或刷新并使用该数据。即使它只是一个简单的复选框。之后,您可以使用'if(isset())'部分,因为您的提交按钮不知道要提交什么。 – Dorvalla 2014-09-04 16:04:23
+0

我编辑它,让他们更容易看到,但他们在原来的。 – DJR 2014-09-04 17:34:38

我想弄清楚你想要的代码的意义,如果我理解正确的话,你想让这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

我有一段时间以前同样的问题你。我需要通过复选框循环发布。请检查这个主题的相关信息。

+0

5行输出正确。他们从表格中显示包含复选标记的testid,testdata和testcheck列。我希望提交过程更新表格中相应行中复选标记的更改。 – DJR 2014-09-04 17:46:38

+0

没问题,就像我在回答中说的那样,它需要在一个'form'中,所以当你按下提交按钮时,它就知道它必须在表单中发布数据。在'form'的'action'属性中,您可以指定脚本的位置(空白位于同一页面上)。然后添加一个isset,正如我在上述调用更新时所述。 – Dorvalla 2014-09-04 18:06:56

+0

我用你的代码(必须从PHP中取出输入行; netbeans根本不喜欢它),但我可能搞乱了更新行。我也不知道如何在这里添加代码评论...呃 – DJR 2014-09-04 18:10:52

这是我的新代码。我知道我在正确的轨道上。在编写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>