Здравей!
Подготвих и код с "бутончета", в този случай най-обикновени текстовеи връзки, но предполагам, че можеш да ги смениш с изображения-бутони
Демо: http://probna.awardspace.com/demo4/list.php
А ето и кода (вързал съм го с по-горния):
list.php
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
</HEAD>
<BODY>
<BR><B>Редове:</B>
<BR>
<?
if (file_exists ("tekstovi.txt")) {
$filelocation="/home/www/probna.com/demo4/tekstovi.txt";
$fm=file("$filelocation");
$kolko=count($fm);
for ($i=0; $i<$kolko; $i++){
$red=$fm[$i];
echo "<BR>$red .............. <A HREF='del.php?id=$i'>Изтриване!</A>";
}
}
else {
echo "<BR>Няма направени записи!";
}
?>
<BR><BR><A HREF="forma.php"><B>Редактирай през формата!</B></A>
</BODY>
</HTML>
и следващия, който "трие" реда и презаписва останалото съдържание:
del.php
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
<META HTTP-EQUIV="refresh" CONTENT="5;URL=http://probna.awardspace.com/demo4/list.php" >
</HEAD>
<BODY>
<?
$id=$HTTP_GET_VARS['id'];
$filelocation="/home/www/probna.com/demo4/tekstovi.txt";
$fm=file("$filelocation");
$kolko=count($fm);
$newfile = fopen($filelocation,"w+");
fclose($newfile);
for ($i=0; $i<$kolko; $i++){
if ($i==$id) continue;
$red=$fm[$i];
$newfile = fopen($filelocation,"a+");
fwrite($newfile, "$red");
fclose($newfile);
}
echo "Редът е изтрит успешно!";
?>
</BODY>
</HTML>
Обяснението на кода (в досадни подробности) - ако просто ви трябва кода и ви е достатъчно че той върши работата - копирайте го и прескочете това:
В
list.php четем текстовия файл с функцията
file(); . Особеното при нея е, че връща масив, в който всеки елемент е ред от файла. С цикъл фор обхождаме масива и листваме всеки от неговите елементи като изписваме и връзка (анчър) към
del.php. Използваме и
URL-кодиране във връзката, за да предадем една много важна информация към изтриващия скрипт, а именно поредния номер на елемента, в който се намира реда:
<A HREF='del.php?id=$i'>
Чрез кодирането създаваме променливата
$id, на която присвояваме стойността, която има
$i при съответната итерация (завъртане) на цикъла. Точно тази стойност е номера на елемента в масива, в който се съдържа реда.
Вече имаме всеки ред от файла с връзка за изтриване и указание към изтриващия скрипт.
В
del.php отново прилагаме функцията
file(); за да получим същия масив с елементи-редовете от файла. Този път обаче няма да го използваме за листване, а за изтриване, като ще отразим тази промяна и в съдържанието на текстовия файл.
Преди да правим каквото и да е с информацията в масива обаче, се налага да подготвим файла.
Вече сме извлекли неговото съдържание. Имаме го на "сигурно" място в масива. Файлът не ни е нужен. Можем да го изтрием или по-добре да изтрием съдържанието му. За тази цел използваме една от готовите функции за работа с файлове, тази, която отваря файла за запис:
fopen($filelocation,"w+");
Задаваме стойност на функцията
w+. При отварянето на файла тя автоматично изтрива цялото му съдържание. Обикновено в синтаксиса й влиза и функцията за запис
fwrite();, но в случая тя не ни е нужна, защото искаме само да се освободим от съдържанието.
Файлът е празен, готов за запис. Вече можем да обработваме елементите на масива. Обхождаме го - цикълът е подобен на този в list.php Подобен, но с една малка особеност: въвели сме допълнително условие:
if ($i==$id) continue;
То указва на скрипта да прескочи един елемент от масива. Този елемент не е произволен, а е точно онзи, който искаме да премахнем и сме задали чрез предадената с
URL-кодирането стойност.
Цикъла обхожда масива, чете първия му елемент, проверява номера му за съвпадение с условието, после преминава към следващия и т.н.
Елементите, които преминават през "ситото" (всички без един) постъпват за запис в текстовия файл. Отваряме го отново, този път в тялото на фор-цикъла и задаваме стойност на функцията
fopen(); а+. Тя подрежда всеки нов запис на последно място във файла.
Така, когато преминат всички елементи ще имаме огледално отражение на първоначалното съдържание на файла. В него обаче ще липсва нещо - реда, който сме пропуснали да запишем.
Толкова от мен. Дано съм бил полезен. За възражения - форума
Успех!
ПП: Добавен ред към дел.пхп:
$id=$HTTP_GET_VARS['id'];
И Съвет към всички, които неблагоразумно отказват да ползват Post i Get регистрите, които поддържа РНР - НЕ ГИ ПРЕНЕБРЕГВАЙТЕ, вържете си гащите, защото на мен това ми струваше много нерви