平台:
PHP、mySQL 和 jQuery
是)我有的:
我有一个数据库表。在我的应用程序中,我能够获取所有行。当我查询数据库时,我将记录获取限制设置为 30,但这可以通过下拉列表进行更改。因此,请考虑我在单个查询中获取多达 30 行数据并显示它们。我在表(行)中填充这些数据。我在每条记录旁边都有一个复选框和一个删除按钮。单击删除按钮时,所有选中的行都将被删除。
我想做什么:
对于我删除的每一行,我都在尝试用下一组行更新当前视图,直到达到提取行限制。令人困惑?这是一个例子:
例子:
考虑到我的表中有 1000 行,并且我已将记录获取限制设置为 30,这意味着一次最多显示 30 条记录。我可以使用分页导航到其他记录。现在在我看来,表中有 30 行数据。我选择了 5 行并通过 jQuery 删除了它们。删除后,我可以从视图中删除已删除的行。所以在这种情况下,因为我删除了 5 行,所以我可以删除它们,现在我的视图只显示 25 行(这是正确的)。由于我的表中仍有 995 行,并且我的记录获取限制为 30,所以现在我希望它以这样一种方式工作,即自动显示接下来的 5 条记录。我希望现有条目向上移动,新条目填充在底部。
换句话说,只要存在足够的行,我想用相同数量的记录填充我的视图,因为许多记录已被删除。因此,如果我删除 10 条记录,我希望再次自动获取并显示接下来的 10 条记录,使其总计显示 30 行数据。如果删除了 20 条记录,那么我希望自动获取并显示接下来的 20 条记录(再次使其总计显示 30 行数据)。我想用附加的效果来做到这一点,这样我就可以直观地注意到新行已经出现。也许可以应用上滑或淡入淡出+上滑效果?希望我说得通。
我需要的:
我需要PHP & jQuery 代码才能实现上述效果/功能。提前致谢。
这是我的一些jQuery 代码(如果有帮助的话):
$('#button_delete').click(function() {
$.ajax({
type: 'POST',
cache: false,
url: 'test.php',
data: $('#form1').serialize(),
dataType: 'json',
success: function(data) {
if(data.success === 1)
{
$.each(data.id, function (index, value) {
$('#'+value).remove();
});
jQuery.each(data.new_rows_data, function(i, val)
{
jQuery.each(val, function(i, new_val)
{
$('#table').append('<tr id='+new_val+'>'+
'<td></td>'+
'<td></td>'+
'<td>'+new_val+'</td>'+
'</tr>');
});
});
}
}
})
return false;
});
PHP代码:
<?php
$from = 0;
$limit = 30;
$result = mysql_query( "SELECT * FROM mytable ORDER BY m_id ASC LIMIT $from, $limit" );
?>
<table>
<tr>
<td>ID</td>
<td>Content</td>
</tr>
<?php
while( $rows = mysql_fetch_array($result) )
{
?>
<tr id=<?php echo $rows['m_id']; ?>>
<td><?php echo $rows['m_id']; ?></td>
<td><?php echo $rows['content']; ?></td>
</tr>
<?php
}
?>
</table>
测试.php
//test.php
<?php
$id = $_POST['id'];
if( is_array( $id ) )
{
$arr_size = sizeof( $id );
foreach ( $id as $value )
{
$sql = "DELETE FROM mytable WHERE id = ".(int)$value." LIMIT 1";
$result = mysql_query($sql);
}
if( $result )
{
$success = 1;
$message = 'Deleted';
}
else
{
$success = 0;
$message = 'Unable to DELETE FROM DB.';
}
}
$last_id = 500;
for($i=1; $i <= $arr_size; $i++)
{
$new_value = ($last_id + $i);
$new_rows[] .= $new_value;
$res = mysql_query("SELECT id, message, date
FROM mytable WHERE id = ".(int)$new_value." "); //LIMIT 1
$row = mysql_fetch_array($res);
$new_rows_data['row']['id'] .= $row['id'];
$new_rows_data['row']['message'] .= $row['message'];
$new_rows_data['row']['date'] .= $row['date'];
}
print json_encode(array('success' => $success, 'message' => $message, 'id' => $id, 'new_rows' => $new_rows,
'new_rows_data' => $new_rows_data));
?>