我正在尝试创建一个简单的用户编辑选项。但是我遇到了foreach()
函数的问题。
这是代码:
<div id="edit" class="modal hide fade" aria-labelledby="editModal" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 id="editModal">Hi, <?php echo $u['firstname']; ?>. Edit your profile right here</h4>
</div>
<?php foreach ($users as $u) {?>
<div class="modal-body">
<?php $id=$u['id'];?>
<form class="form-horizontal" action="<?php echo site_url("users/edit/$id")?>" method="post">
<div class="control-group">
<label class="control-label">First Name</label>
<div class="controls">
<input type="text" name="firstname" value="<?php echo $u['firstname']; ?>">
</div>
</div>
<div class="control-group">
<label class="control-label">Last Name</label>
<div class="controls">
<input type="text" name="lastname" value="<?php echo $u['lastname']; ?>">
</div>
</div>
<div class="control-group">
<label class="control-label">User Name</label>
<div class="controls">
<input type="text" name="username" value="<?php echo $u['username']; ?>">
</div>
</div>
<div class="control-group">
<label class="control-label">Email</label>
<div class="controls">
<input type="text" name="email" value="<?php echo $u['email']; ?>">
</div>
</div>
<div class="control-group">
<div class="controls">
<button class="btn btn-success" name="edit">Save</button>
</div>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-danger" data-dismiss="modal" aria-hidden="true">Cancel</button>
</div>
<?php }?>
</div>
问题是:
当我将foreach()
函数放在我的任何div之下时,我可以选择编辑数据库的所有用户,即使那些id
尚未通过的用户也是如此。当我点击“保存”按钮时,所有用户都会使用相同的信息进行编辑。
但如果将foreach()
函数放在所有div之上,我以前会选择编辑所选用户但不是现在。它总是回应数据库的第一个用户的数据,当我编辑它时,数据库的整个用户都会被编辑。
为什么会这样?我错过了什么吗?
答案 0 :(得分:0)
基本上,当您使用foorloop时,您为数据库中的每个数据创建了form
,当您将foreach
放在div
我认为$id
以下时您的form
网址不是所选数据的ID,而是数组的第一个数据。但是当您将foreach
放在form
元素上方时,这也会迭代数据的$id
,这就是为什么它只更新您选择更新的数据的原因。