Порядок удаления с файла

AGENT131313

Забанен
Регистрация
17 Мар 2009
Сообщения
292
Реакции
31
Доброго времени суток, нуждаюсь в помощи....Застрял!

В общем ,есть у меня форма, записывающая в строку и удаление с файла.
PHP:
<table  cellspacing="10">
<tr>
    <td></td>
    <td></td>
    <td><b><font color="#ff0000">Дата заказа</font></b></td>
    <td><b><font color="#ff0000">IP</b></font></td>
    <td><b><font color="#ff0000">доп</b></font></td>
    <td><b><font color="#ff0000">доп</b></font></td>
    <td><b><font color="#ff0000">доп</b></font></td>
</tr>
<?php
$data=file_get_contents("messages.txt");
$messages=explode("*|*|*",$data);
for($i=0;$i<count($messages)-1;$i++)
{
  $tmp=explode("||",$messages[$i]);
  echo"<tr>";
  echo '<td><form action="delete.php" method="post"><input  type="hidden" value="'.$i.'" name="delet" /><button type="submit"><image src="/del.png" width=13></button></form></td>';
if(isset($tmp[4])){
    echo "<td><font color=\"ff0000\">".date('H:i:s d.m.Y', $tmp[4])."</font></td>";
}else{
    echo "<td>--</td>";
} 
  echo "<td><font color=\"ff0000\">".$tmp[2]."</font></td>";
  echo "<td><font color=\"ff0000\">".$tmp[3]."</font></td>";
  echo "<td><font color=\"ff0000\">".$tmp[0]."</font></td>";
  echo "<td><font color=\"ff0000\">".$tmp[1]."</font></td>";
  echo"</tr>";
}
?>
</table>

Вот удаление
PHP:
<?php
$delet = isset($_POST['delet'])?$_POST['delet']:'';
$data=file_get_contents("messages.txt");
$messages=explode("*|*|*",$data);
$messages[$delet]='';
$file="messages.txt";
$handle=fopen($file,"w+");
for($i=0;$i<count($messages);$i++)
{
  if($messages[$i]!='')
    $messages[$i].="*|*|*";
   fwrite($handle,$messages[$i]);
}
fclose($handle);
?>
<script type="text/javascript">
setTimeout('location.replace("http://chatenergy.ru/fm/dj/messages.php")', 1000);
/*Изменить текущий адрес страницы через 2 секунды (2000 миллисекунд)*/
</script>
Проблема в том, что нажимаю Удалить одну запись, а удаляет последнюю добавленную...
 
Последнее редактирование:
for($i=0;$i<count($messages);$i++)
{
if(
$messages[$i]!='')
$messages[$i].="*|*|*";
fwrite($handle,$messages[$i]);
}
может сделать так:
PHP:
<?php
$delet = isset($_POST['delet']) ? $_POST['delet'] : '';
if ($delet != '') {
    $data=file_get_contents("messages.txt");
    $messages=explode("*|*|*",$data);
    unset($messages[$delet]);
    file_put_contents("messages.txt", implode("*|*|*", $messages));;
    $file="messages.txt";
}
?>
<script type="text/javascript">
    setTimeout('location.replace("http://chatenergy.ru/fm/dj/messages.php")', 1000);
    /*Изменить текущий адрес страницы через 2 секунды (2000 миллисекунд)*/
</script>
 
Последнее редактирование:
у вас вверху при выводе списка сообщений в цикле -
Код:
$i<count($messages)-1
то есть последнее сообщение вообще никогда не выводится. Не удаляется, просто его не видно.
 
в выводе поправить:
for($i=0;$i<count($messages);$i++)

удаление поправить:
PHP:
<?php
$delet = isset($_POST['delet'])?$_POST['delet']:'';
$file="messages.txt";
$data=file_get_contents($file);
$messages=explode("*|*|*",$data);
unset($messages[$delet]);
file_put_contents($file,implode(""*|*|*"",$messages));
?>
 
Последнее редактирование модератором:
Назад
Сверху