Подскажите как удалить определённую строку..

Печать RSS
252

3
Автор
Оранжевые штаны
0
всем привет.. Пожалуйста подскажите как сделать удаление строки из файла с определённым id'ом?
Допустим мне нужно удалить 2'ую строку с id'ом 2 из файла uz.dat
Файл uz.dat
|1|SinglE|100|3|on|
|2|NeO|100|1|on|
|3|НЕ0БЫЧНЫЙ|100|1|on|
За id отвечает 1ая ячейка...
Заранее спасибо smile

Господин ПЖ
0
//------------------- Функция удаления строк(и) из файла --------------------//
function delete_lines($files, $lines){
if ($lines!==""){
if (file_exists($files)){
if(!is_array($lines)){
$file=file($files);
$fp=fopen($files,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
if (isset($file[$lines])){unset($file[$lines]);}
fputs ($fp, implode($file));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp); 
unset ($lines);
} else {
$file=file($files);
$fp=fopen($files,"a+");
flock ($fp,LOCK_EX);
ftruncate ($fp,0);
foreach($lines as $val){ 
if (isset($file[$val])){unset($file[$val]);}
}
fputs ($fp, implode($file));
fflush($fp);
flock ($fp,LOCK_UN);
fclose($fp); 
unset ($lines);
}}}
}

Господин ПЖ
0
//------------------ Функция проверки ячейки строки в файле ------------------//
function search_string($file, $str, $ceil) {   
if (file_exists($file)){
$files = file($file);
foreach($files as $key=>$value){
$data = explode("|", $value);
if ($data[$ceil]==$str){
$data['line'] = $key;
return $data; break;
}}}
return false;
}

Господин ПЖ
0
делаешь так
$string = search_string("uz.dat", $number, 1); // где number это какую нужно найти строку то есть id, а единичка тут номер ячейки, так как у тебя идет |2| то есть первая ячейка
if ($string) { // если такая строка есть
delete_lines("suz.dat", $string['line']);
}
$string возвращает из функции все строку поделенную на массив и строковой ключ LINE означающий номер строки в файле вот его и удаляем
3
Автор
Оранжевые штаны
0
Vantuz, спасибо огромное.. Пошёл разбиратьсяsmile

Персональный статус
0
<?php
$id = $_GET['id'];
$var='0';
$file=file ('uz.dat');
$count=count($file);
for($i=0;$i<$count;$i++)
{
$ex=explode('|',$file[$i]);
if ($ex[1]==$id)
{
$string=str_replace($file[$i],'',file_get_contents("uz.dat"));
$fopen=fopen("uz.dat","w");
fputs($fopen,$string);
fclose($fopen);
$var='1';
}
}
if (!empty($var)) {
echo'Юзер удален!<br/>'; } else {
echo'Юзер не удален!<br/>'; } 
}
?>
3
Автор
Оранжевые штаны
0
6, и тебе спасибо.. E
3
Автор
Оранжевые штаны
0
6, почемуто твоим способом очищает весь файл
3
Автор
Оранжевые штаны
0
Спасибо SNELS'у.. Его способ помогsmile

Господин ПЖ
0
пользуйся лучше моими функциями,их можно множество раз использовать
$string = search_string("uz.dat", $number, 1);
if ($string) {
delete_lines("suz.dat", $string['line']);
}
код очень короткий, у меня открывается в мягком режиме a+ все проверки и блокировки
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск