プラットホーム:
PHP、mySQL & jQuery
私が持っているもの:
データベーステーブルがあります。アプリケーション内で、すべての行をフェッチできます。データベースにクエリを実行するとき、レコードのフェッチ制限を 30 に設定しましたが、これはドロップダウン リストで変更できます。したがって、1 回のクエリで最大 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));
?>