2011-12-21 105 views
0

我更新通过复选框选择特定条目一些MySQL的数据,我的代码如下所示:伯爵号的MySQL

<?php 
    if($_POST['code_approve']){ 
     for($i=0;$i<count($_POST['checkbox']);$i++){ 
      $approval_id = $checkbox[$i]; 
      $sql = "UPDATE table SET status='approved', used='processed' WHERE id='$approval_id'"; 
      $result = mysql_query($sql); 
     } 
     if($result){ 
      echo "<meta http-equiv=\"refresh\" content=\"0;URL=table.php\">"; 
     } 
    } 
?> 

现在我想知道有多少复选框被选中,并为每个选中的复选框添加25到表“成员”行“余额”。

我想是这样的:

<?php 
    if($_POST['code_approve']){ 
     for($i=0;$i<count($_POST['checkbox']);$i++){ 
      $approval_id = $checkbox[$i]; 
      $approvedamount = count($_POST['checkbox']) 
      $approvedx25 = $approvedamount * 25; 
      $sql = "UPDATE table SET status='approved', used='processed' WHERE id='$approval_id'"; 
      $sql2 = "UPDATE members SET balance = + '$approvedx25'"; 
      $result = mysql_query($sql); 
     } 
     if($result){ 
      echo "<meta http-equiv=\"refresh\" content=\"0;URL=table.php\">"; 
     } 
    } 
?> 

但是,这并没有在所有的工作,什么是做到这一点的正确方法?

//编辑

请忽略这个问题,它的工作,我只是忘了添加的mysql_query。

+0

我认为你应该删除在where子句中的引号,并使其像这样,对于开始:WHERE id = $ approval_id ..此复选框数组来自何处?!?$ checkbox [$ i] ..我认为你的代码太多缺失 – 2011-12-21 16:37:59

+0

你不应该在循环中运行SQL查询,它不是非常有效。在循环中收集ID,然后使用IN编写一个UPDATE查询。 – kapa 2011-12-21 16:43:08

+0

查看'复选框组'部分:http://www.html-form-guide.com/php-form/php-form-checkbox.html – Minras 2011-12-21 16:45:07

回答

0

你的更新查询应该是这样的:

$sql2 = "UPDATE members SET balance = balance + ".$approvedx25; 

你写它的方式,在withing的for条款的更新,从而为每一个复选框执行一次。我不确定你是否想要,因为你已经乘以复选框的数量。

此外,介意,您的第二个查询($sql2)不会在您的代码中执行。