2014-03-24 77 views
0

裏面$變量,我認爲我有一個相當不錯的問題。我在每個循環內部產生了一個帶有2個輸入單選按鈕的循環。當您按下其中一個單選按鈕時,我的函數ChangeIt會更改數據庫中的值。這就是我被卡住的地方:每行都有一個ID列,我想找到該ID並將其放入我的ChangeIt函數中,放入我的語句中(最後,我必須放入一個動態ID)。 My Loop顯示分隔div內的每行。我在我的while循環中放置了一個變量$ id,所以我在想,也許在我的函數Admin()中放入我的函數ChangeIt?這可能嗎?謝謝!動態更新值while循環

任何想法?上的index.php

PHP

if(isset($_POST['confirmation'])){ 
$conf = $_POST['confirmation']; 
    if($conf == 'Accepter'){ 
     $object = new User; 
     $object->ChangeIt($conf,$id); 
    } else if($conf == 'Refuser'){ 
     $object = new User; 
     $object->ChangeIt($conf,$id); 
    } 
} 

PHP

public function Admin(){ 
     $st = $this->db->prepare("SELECT * FROM form"); 
     $st->execute(); 
     while($r = $st->fetch()){ 
      $id = $r['ID']; 
      echo '<hr>'; 
      echo 'Username : ' .$r['username'].' <br>'; 
      echo 'Adresse : ' .$r['Adresse'].' <br>'; 
      echo 'Met : ' .$r['Met'].' <br>'; 
      echo 'Age : ' .$r['Age'].' <br>'; 
      echo 'Statut : ' .$r['Statut'].' <br>'; 
      echo '<form action="compte.php" method="post">'; 
      echo '<input type="radio" name="confirmation" value="Accepter"> Accepter'; 
      echo '<input type="radio" name="confirmation" value="Refuser"> Refuser<br>'; 
      echo '<input type="submit" name="submit" value="Confirmer">'; 
      echo '</form>'; 
      echo '<hr>'; 
     } 
    } 
public function ChangeIt($ans,$id){ 
     $st = $this->db->prepare("UPDATE `test`.`form` SET `Statut` = '$ans' WHERE `form`.`ID` = '$id'"); 
     $st->execute(); 
    } 

回答

1

這很容易在關聯數組格式發送GET/POST數據。改變你輸入名字confirmation[id goes here...]

echo '<input type="radio" name="confirmation['.$id.']" value="Accepter"> Accepter'; 
echo '<input type="radio" name="confirmation['.$id.']" value="Refuser"> Refuser<br>'; 

你可以把表單標籤<form>...</form>,並提交按鈕<input type="submit"...你的循環之外,如果你喜歡。

與內環路表格$_POST看起來就像這樣:

Array('123' => 'Accepter') 

與外循環的$_POST形式看起來就像這樣:

Array('123' => 'Accepter', '124' => 'Refuser', '125' => 'Refuser', ...) 

,所以你需要改變你的更新代碼:

$conf_arr = $_POST['confirmation']; 
foreach($conf_arr as $id => $conf) { 
    if($conf == 'Accepter'){ 
     $object = new User; 
     $object->ChangeIt($conf,$id); 
    } else if($conf == 'Refuser'){ 
     $object = new User; 
     $object->ChangeIt($conf,$id); 
    } 
} 

請介意你需要逃避SQL值PR事件SQL Injection

+0

謝謝你!一切正常。有什麼我不明白,轉義SQL值?我發送的所有值都在單選按鈕內,這對於轉義sql值非常重要嗎? –

+0

@ user3371099有人可以搗亂你的數據庫發送不正確的數據,請閱讀關於sql注入 – Peter