ПЛАТФОРМА:
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>
test.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));
?>