我想我有一个非常好的问题。我在每个循环内部产生了一个带有2个输入单选按钮的循环。当您按下其中一个单选按钮时,我的函数ChangeIt会更改数据库中的值。这就是我被困住的地方:我为每一行都有一个ID列,我希望找到该ID并将其放入我的ChangeIt函数中,放入我的语句中(最后,我必须放置一个动态ID)。 My Loop显示分隔div中的每一行。我在我的while循环中放了一个变量$ id,所以我想,也许,把我的函数ChangeIt放在我的函数Admin()中?这可能吗? THX!
有什么想法吗?
PHP on index.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();
}
答案 0 :(得分: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值以防止SQL Injection