2011-12-21 182 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)不會在您的代碼中執行。