内联'更新'按钮出现问题,我从mysql表(完成)中提取数据,使用'foreach'(完成)将数据显示到屏幕并有一个更新和删除按钮在每行上发布正确的按钮“名称”和用户的ID(完成)。
然而$ _POST数组没有解析的是具有行信息的正确数据....它确实解析了对底行的更改,但是如果你改变另一行,它只会再次解析最后一行....
<input type="hidden" name="action" value="submit" />
<pre></pre>
<?php print_r($_POST);?>
<?php
echo '<table class="table table-condensed">';
echo '<thead><tr><th style="width: 15%">Name</th><th style="width: 25%">Login</th><th style="width: 25%">Email</th><th style="width: 7%">Role</th><th style="width: 7%">Group</th><th style="width: 15%">LoftID</th><th>Edit</th><th>Delete</th></tr></thead><tbody>';
foreach($users as $person){
echo '<tr>';
echo '<td><input type="text" class="form-control" name="name" id="'.$person['id'].'" placeholder="Name" value="'.$person['name'].'"/></td>';
echo '<td><input type="text" class="form-control" name="login" id="'.$person['id'].'" placeholder="Login" value="'.$person['login'].'"/></td>';
echo '<td><input type="text" class="form-control" name="mail" id="'.$person['id'].'" placeholder="Mail" value="'.$person['mail'].'"/></td>';
echo '<td><input type="text" class="form-control" name="role" id="'.$person['id'].'" placeholder="Role" value="'.$person['role'].'"/></td>';
echo '<td><input type="text" class="form-control" name="group" id="'.$person['id'].'" placeholder="Group" value="'.$person['group'].'"/></td>';
echo '<td><select type="text" class="form-control" name="LoftID" id="'.$person['id'].'" placeholder="Loft">';
foreach($lofts as $info) {
if($info['id']==$person['LoftID']){
echo '<option value='.$info["id"].' selected>'.$info["name"].'</option>';
}
else{
echo '<option value='.$info["id"].'>'.$info["name"].'</option>';
}
}
echo '</select></td>';
echo '<td><button type="submit" name="update" value="'.$person['id'].'" class="btn btn-primary">Update</button></td>';
echo '<td><button type="submit" name="delete" value="'.$person['id'].'" class="btn btn-primary">Delete</button></td>';
echo '</tr>';
}
echo '</tbody></table>';
?>
</div>
</form>
我需要的是允许我从$ _POST中提取数据,然后我可以将其作为基于ID的更新重新投入数据库,我相信我可以这样做,因为我已经这样做了在我的代码....
我真的很想这样做,而不需要显示另一个包含数据的页面来更新......
提前致谢
答案 0 :(得分:0)
你需要Ajax来完成这项工作而无需重新加载页面或转到带参数的其他页面。请记住,按钮没有输入值。使用data-id或data-pid或您喜欢的任何内容。并输入一个类名称,例如'updateBtn'来标识按钮。
echo '<td><button type="button" data-pid="'.$person['id'].'" class="btn btn-primary updateBtn">Update</button></td>';
<script>
$('.updateBtn').on('click', function() {
var pid = $(this).data('pid'); console.log(pid); // see the result in console
var pid = parseInt(pid); // change to int
$.ajax({
url: '/ajax/update-data/index.php', // specify folder and file name
data: { pid : pid },
dataType: 'json',
success: function (response) {
if(response.status == 'success') {
// do something to the html code to show the successful update
return false;
}
if(response.status == 'fail') {
// do something to the html code to show the fail update
return false;
}
}
});
});
</script>
Ajax文件:
<?php
function response ($status) {
header("Content-Type:application/json");
$response['status'] = $status;
$json_response = json_encode($response);
echo $json_response;
}
if($_POST) {
$pid = filter_input(INPUT_POST, 'pid', FILTER_SANITIZE_NUMBER_INT);
if($pid) {
$done = // do php to chage update. You can refer to class or direct php mysql update
if($done) {
response ('success');
}else{
response ("fail");
}
}else{
response ("parameter fail");
}
}
?>
答案 1 :(得分:0)
好的,所以我想我找到了答案,并且包括以下内容;
echo '<form class="form-horizontal" action="" method="post">';
在第一个foreach
语句下面,以便每一行都是它自己的表单元素。
有没有人看到这样做的任何问题?数据总是非常有限,可能永远不会超过10行。
亲切的问候和感谢所有的帮助