У меня есть
скрипт, который выводит по 7 уведомлений и даёт возможность их удалять. Эти уведомления берутся из файла:
notifications.scloud
Сообщение | Тип | Действие при нажатии на Да
<b>User</b> хочет отправить вам фалй <b>bg1.jpg</b> | File | alert('123');
Фалй <b>bg1.jpg</b> уже существует | Noti | No
И скрипт обработчика этого файла + скрипт AJAX:
index.php
echo '
</div>
<div class="main_notice">';
$noti_arr = file("disk/users/".$_COOKIE["login"]."/notifications.scloud");
$id = 0;
foreach( $noti_arr as $noti )
{
list($text, $type, $action) = explode(' | ', trim($noti));
$id = $id + 1;
if($type == 'File'){
echo '
<div class="block hidden">
<p>'.$text.'</p>
<div class="button">Принять</div><div class="close button">Отклонить</div>
</div>';
}
elseif($type == 'Noti'){
echo '
<div class="block hidden">
<p>'.$text.'</p>
<div class="close button">Ок</div>
</div>';
}
}
echo '</div>';
<script>
$('.$k.'.close'.$k.').click(function() {
$.post( "/src/delete.php", $(this).serialize())
.done(function( data ) {
});
evt.preventDefault();
});
var messagesInViewCount = 7;
$('.$k.'.block'.$k.').each(function(index, message) {
if (index < messagesInViewCount) {
$(message).removeClass('.$k.'hidden'.$k.');
}
});
$(document).on('.$k.'click'.$k.', '.$k.'.block .close'.$k.', function() {
$(this).closest('.$k.'.block'.$k.').addClass('.$k.'hidden closed'.$k.');
$('.$k.'.block.hidden:not(.closed)'.$k.').eq(0).removeClass('.$k.'hidden'.$k.');
});
</script>
И
delete.php<?
$lines = file("../disk/users/".$_COOKIE["login"]."/notifications.scloud");
unset($lines[0]);
file_put_contents("../disk/users/".$_COOKIE["login"]."/notifications.scloud", implode('', $lines));
?>
Если кто не понял, то при закрытии уведомления (как показано
здесь) отправляется AJAX запрос и 1 строчка файла удаляется. Проблема в том, что если закрыть второе, третье и.т.д (по счёту с верху) уведомление, то удалится первая строчка. Как сделать, что-бы при закрытии 1-7 уведомления удалялась 1-7 строчка файла
notifications.scloud.