我正在设计一个管理界面,管理员可以同时修改网站的成员(批量修改)。我们已经有一个编辑,但他们希望能够一次编辑所有用户,我想这样做,所以只有一个“提交”按钮。然后,PHP代码应遍历每条记录,查找更改并根据需要进行更新。我知道如何做所有事情,但循环记录。我已经尝试创建一个数组,计算帖子记录,我只是没有足够的数组或多维数组。这是我在POST页面上的现有代码:
<?php $i = 0;
while($member_list = mysql_fetch_array($getmembers)){
?>
<tr style="vertical-align:top;">
<td><input type="text" name="userid[<?=$i?>]" readonly value="<?php echo $id; ?>" style="width:40px;"></td>
<td><input type="text" name="username[<?=$i?>]" value="<?php echo $member_list['mem_username']; ?>" onchange='changes=true;' style="width:90px;"></td>
<td><input type="text" name="firstname[<?=$i?>]" value="<?php echo $member_list['first_name']; ?>" onchange='changes=true;' style="width:90px;"></td>
<td><input type="text" name="lastname[<?=$i?>]" value="<?php echo $member_list['last_name']; ?>" onchange='changes=true;' style="width:90px;"></td>
<td><input type="text" name="email[<?=$i?>]" value="<?php echo $member_list['email']; ?>" onchange='changes=true;'></td>
<td><textarea name="notes[<?=$i?>]" cols="20" rows="2" onchange='changes=true;'><?php echo $member_list['admin_notes']; ?></textarea></td>
</tr>
<?php $i = $i + 1; } ?>
它发布到:
$user_records = array(count($_POST['userid'])); // create the array
foreach ($user_records as $value) { // go through array
$user_records[] = array( // Go through the array
$username => $_POST['username'.$i],
$firstname => $_POST['firstname'.$i],
$lastname => $_POST['lastname'.$i],
$email => $_POST['email'.$i],
$notes => $_POST['notes'.$i],
);
echo $username . ' | ' . $firstname; //this line is for testing to display only
// Then posting comparison occurs and is updates as needed
}
因此,简而言之 - 当我运行上面的例子时,我得到5个管道(6个字段的分隔符数量),但是没有获得任何数据,并且它不会循环通过任何其他记录。我知道我错过了一些东西,只是无法让我的头脑看到它。非常感谢任何建议。
注意:显然我会阻止SQL注入并清理最终版本中的内容。我只想弄清楚这里的逻辑。
答案 0 :(得分:2)
您从未在处理循环中定义$i
,因此您正在访问未知/未定义的数组键。
由于您已通过userid[$i]
内容在html中定义了显式键,因此您的循环应为:
foreach($_POST['userid'] as $key => $userid) {
$username = $_POST["username"][$key];
$firstname = $_POST["firstname"][$key];
etc...
请注意每个用户名/名字/等等本身是如何成为数组的。它不是username42
,而是username[42]
来访问该特定字段。