Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Тексты > Обновить строку в файле


Автор: CyClon 3.3.2006, 22:54
Перед мной поставлена доволно-таки интерестная задача: Мне нужно обновить строку в файле... В общем что мы имеем? Мы имеем файл, в котором записаны некоторые данные, разделенные знаком |. На одну строку - одна ячейка скажем... В общем есть что-то вроде:

1|http://yandex.ru|Поисковая система|20060303

Как вы уже могли догадаться мне нужно обновлять число 20060303 на текущую дату ( date("Ymd") ). В общем. помогите, как обновить. Просто такая тема - если существует переменная $_GET['sid'], то нужно обновить строку с указанным ID (Первый символ в строке), а именно нужно обновить дату. В MySQL я это делал так:

Код
if (!empty($_GET['sid'])) {
    $check_query = mysql_fetch_array(mysql_query("SELECT `sid` FROM `slaed_aser` WHERE `sid`='".$_GET['sid']."'"));
    if ($check_query) {
        mysql_query("UPDATE `slaed_aser` SET `update` = '".date("Ymd")."' WHERE `sid` = '".$_GET['sid']."' LIMIT 1");
    }
}


Подобное нужно сделать и с файлами, включая проверку на сущестование ID. Пересчитывать строки - не самый идеальный вариант, ведь записи могут удаляться.

Автор: Bangladesh 3.3.2006, 23:27
а строка в файле всегод одна? или там много таких разделённых?

Автор: -=Ustas=- 3.3.2006, 23:39
CyClon, ну тут же элементарно! Читаешь построчно файл, в цикле разбиваешь строку по твоему разделителю, проверяешь первый элемент массива на совпадение с в текущим sid-ишником, если совпало - значит изменяешь эту строку и сохраняешь файл обратно.

Автор: CyClon 4.3.2006, 19:41
Да я уже понял в принципе сам...

Код
<?php

$file = file("file.txt");

foreach ($file as $string)
{
    $update = explode("|", $string[14]);
    $string[14] = $update[0]."|".$update[1]."|".$update[2]."|20060304";
}

$file = fopen("file.txt", "w");
fputs($file, $string);
fclose($file);

?>


Примерно так... набрал на скорую руку, за код не ругать smile
Добавлено @ 19:42
Цитата
проверяешь первый элемент массива на совпадение с в текущим sid-ишником


А до этого не допер сам, блинsmile Спасибо за хелп.

Автор: Эрмитаж 8.3.2006, 16:55
explode();

Автор: Guedda 9.3.2006, 12:17
Что explode?
Это функция для разбиения строки в массив.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)