Удаление строки из текстовой базы данных

el-niko

Guest
Удаление строки из текстовой базы данных

Товарищи, помогайте !!!

У меня есть база данных, хранящаяся в файле, типа:

Имя1|Текст1|id1|
Имя2|Текст2|id2|
Имя3|Текст3|id3|
...........................
ИмяX|ТекстX|idX|

Из формы передаётся переменная $kill_id...

Теперь скрипт смотрит каждую строчку и если id на строчке равен переменной $kill_id, то эту строчку надо удалить...

Подскажите, пожалуйста, как мне это савершить...

Часть кода есть... части нет....

PHP:
$data = File("data/board.dat"); 

for($p=count($data)-1;$p>=0;$p--) { 
  
  $dat_arr = explode("|", $data[$p]); 
      
    if($dat_arr[2]==$kill_id){ 

      // а тут должен быть скрипт удаления этой строчкм
      // подскажите, чё сюда написать ? :-)
    } 
}
Зараннее всем ОГРОМОЕ спасибо && респекр !!!
 

el-niko

Guest
а потом в файл как записать этот массив плучившийся ?
 

el-niko

Guest
Задачи:
1. Удалить из массива элемент (строчку)
2. Записать полученный массив в файл (построчно, как и было)

Дайте, пожалуйста, конкретные ответы или продолжите код, приведённый выше !!!
 

Panchous

Павел
1. удалил
2. Открываешь файл и в цикле так же пишешь туда построчно...
(как работать с файлом - см. ссылку)
 

leхus

Guest
$data = File("data/board.dat");
$new_data = array();
for($p=count($data)-1;$p>=0;$p--) {

$dat_arr = explode("|", $data[$p]);

if($dat_arr[2]!==$kill_id){

$new_data[] = $dat_arr;
}
}
//и соответственно $new_data имплодиш и записываешь в файл
 

SiMM

Новичок
> SiMM, не мы такие, язык такой...
А это уже бестактность. Конечно, это не ты виноват, это PHP такой кривой, что ты элементарный код не в состоянии на нём написать. Или хотя бы с Copy&Paste'ть.
 

leхus

Guest
unset в цикле foreach не прокатит - проверено, он то что ты ансетил все равно воспринимает.
 

SelenIT

IT-лунатик :)
leхus
А это смотря что именно ансетить. Попробуй на досуге найти разницу между
PHP:
foreach($arr as $k=>$v) unset $v;
и
PHP:
foreach($arr as $k=>$v) unset $arr[$k];
 

el-niko

Guest
Ребят, всё, спасибо всем !!!

Сим, не нервничай так =)

Вот код =)


for($p=0;$p<=count($data)-1;$p++) {
$dat_arr = explode("||", $data[$p]);
if ($dat_arr[9] == $id){
unset($data[$p]);
}
}

$ns=count($data);

$fp = fopen( "data/board.dat","w");
for($p=0;$p<=$ns;$p++){
fwrite($fp, $data[$p], 8000000);
}
fclose( $fp );

Всё, вопрос закрыт !!! =) Ещё раз всем пасиб !!!

-~{}~ 20.03.05 17:46:

to SiMM > я прогаю на РНР редко и только по мере необходимости.. особо углубляться некогда... так что извиняй... пока существуют ламеры типа меня -- продуманам, типа тебя и других кул-перцев придётся отвечать на наши вопросы... так уж устроены все форумы =)
 
Сверху