[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Удалить строку из файла.
mihai
Господа просвещённые программисты.

в отделе редактирования
для удаления пуктов меню
у каждого пукта меню
есть радиокнопка

выбираем нужное меню для удаления
отмечаем радиокнопку
и жмём форму


//путь до файла
$url="../bd/gb.txt";

//Получаем массив строк
$content = file($url);

//выводим пункты меню для вида и удаления
echo "<form name=\"delet_menu\" action=\"unlink_menu.php\" method=\"GET\">";

foreach($content as $values)
{

list($numer, $name_menu) = explode("::", $values);

echo "<input name='num' type='radio' value='$numer'>";
echo "$numer. $name_menu<br/>";
}

echo "<input type=\"submit\" value=\"удалить пункт меню\"><br/><br/>";
echo "</form>";



эта переменная прилетела
а как теперь удалить
имеено эту строку из файла
равную значению радиокнопки

8::гланая
3::первая
5::вторая
6::третья
1::четвёртая




$url="../bd/gb.txt";

////////////////////
//Удаление записи//
///////////////////
//echo $_GET['num'];

$content = file($url);

foreach($content as $values)
{

list($numer,$name_menu) = explode("::",$values);

f($numer == $_GET['num'])
{
//вот тут надо удалить строку именно где $numer == $_GET['num']
}
}





Спустя 1 час, 4 минуты (1.11.2010 - 22:16) SlavaFr написал(а):
при помощи array_search ищеш строчку в $content которая соответствует $values и потом записываеш содержание $content в файл без этой строчки

edit:
или так
if($numer == $_GET['num']) {
file_put_contents($url,array_diff($content,$values));
}

Спустя 14 часов, 56 минут, 13 секунд (2.11.2010 - 13:12) mihai написал(а):
SlavaFr
Спасибо но это слишком замороченно
для удаления строки.

Может сам алгоритм изменить,
подскажите.

Спустя 1 час, 29 минут, 46 секунд (2.11.2010 - 14:42) sergeiss написал(а):
Цитата (mihai @ 2.11.2010 - 14:12)
Может сам алгоритм изменить, подскажите.

Используй БД! Это будет самое правильное, как мне кажется, изменение алгоритма smile.gif

Спустя 4 минуты, 41 секунда (2.11.2010 - 14:47) Guest написал(а):
да с БД каждый может
ты вот так попробуй

Спустя 6 минут, 43 секунды (2.11.2010 - 14:53) mihai написал(а):
Вот так вот работает
но почему то первый пункт меню
с индексом num=0

из массива data[0] вообще не удаляет
что за хрень

подскажите


//путь до файла
$url="../bd/gb.txt";

////////////////////
//Удаление записи//
///////////////////

if($_GET['num'])
{

$data = file($url);

$data[$_GET['num']]="";

$f = fopen($url,"w");


for($i=0;$i<=sizeof($data);$i++)
{

fputs($f,$data[$i]);
}
fclose($f);

//Выводим сообщение
//echo "Запись удалена<br/>";
//echo "<a href=\"moder.php\">назад</a>";

}


//выводим пункты меню для вида и удаления

$data = file($url);

for($i=0;$i<=count($data)-1;$i++)
{
list($numer, $name_menu) = explode("::",$data[$i]);

echo $numer."-";
echo $name_menu."<br/>";
//Ссылка на удаление в ней передается переменная методом GET
echo "<a href=\"menu_neu.php?num=$i\">[Delete]</a><br/>";
}

Спустя 12 минут, 15 секунд (2.11.2010 - 15:06) SlavaFr написал(а):
Цитата (mihai @ 2.11.2010 - 10:12)
Спасибо но это слишком замороченно
для удаления строки.

a в чем заморочка? в том чоб твой коментарий
Цитата (mihai @ 1.11.2010 - 18:12)
//вот тут надо удалить строку именно где $numer == $_GET['num']

на
Цитата (SlavaFr @ 1.11.2010 - 19:16)
file_put_contents($url,array_diff($content,$values));

заменить?

Спустя 1 час, 27 минут, 3 секунды (2.11.2010 - 16:33) sergeiss написал(а):
Цитата (Guest @ 2.11.2010 - 15:47)
да с БД каждый может ты вот так попробуй


mihai - а ты можешь объяснить, зачем тебе "вот так" извращаться? В чем тут глубинный смысл? Почему БД нельзя использовать?

Спустя 32 минуты, 41 секунда (2.11.2010 - 17:05) mihai написал(а):
SlavaFr
Честно говоря я тут не совсем понял.

ИЗ МАНУАЛА

Описание
array array_diff ( array array1, array array2 [, array ...] )


Пример 1. Пример использования array_diff()

$array1 = array ("a" => "green", "red", "blue", "red");
$array2 = array ("b" => "green", "yellow", "red");
$result = array_diff ($array1, $array2);



В результате выполнения этой программы переменная $result будет содержать array ("blue");.

То есть получется что он запишет
именно ту строку котрую нужно УДАЛИТЬ.

Спустя 2 минуты, 3 секунды (2.11.2010 - 17:07) mihai написал(а):
sergeiss
Смотрел "Белое солнце пустыни".

- Ты как желаешь умереть, сразу или помучиться.
- Нее.. я помучиться...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.