[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Найти строку в файле и если нет, то добавить новую
Kuzma92
Здравствуйте уважаемые специалисты.

В файле

$file = "db/list";

нужно найти строку

$_POST['walletnumber'] = trim($_POST['walletnumber']);

и если такая строка не найдена, то добавить новую. Вот код:

// читаем содержимое файла
$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

// запоминаем сколько строк в файле было изначально
$countLines = count($lines);

// проверяем каждую строку
foreach ($lines as $key => $line) {

// если нет такой строки ($_POST['walletnumber']) в файле, то добавляем новую
if (!strstr($line, $_POST['walletnumber'])) {

$rec = "$_POST[walletnumber]\r\n";
file_put_contents($file, $rec, FILE_APPEND | LOCK_EX);
}
}


// записываем обновленный массив обратно
if ($countLines !== count($lines)) {

file_put_contents($file, implode(PHP_EOL, $lines) . "\n");
}


В итоге у меня получается так, что:

- если файл пустой, то совсем ничего не добавляется;

- если файл не пустой, то строка добавляется в любом случае, если даже такая строка в файле уже существует;

Пожалуйста, поправьте меня, что я делаю не так?
don.bidon
Кузьма, чутка с базами данных разберитесь уже, незачем в файлах такое хранить.
brevis
$file = "db/list";
$walletNumber = trim($_POST['walletnumber']);

$lines = file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$walletNumberFound = false;

foreach ($lines as $line) {
if (strstr($line, $walletNumber) !== false) {
$walletNumberFound = true;
break;
}
}


if (!$walletNumberFound) {
file_put_contents($file, $walletNumber . PHP_EOL, FILE_APPEND | LOCK_EX);
}


Kuzma92, нам интересна твоя история :)
Что вообще ты делаешь, зачем, насколько успешно выходит и тд :)


_____________
Чатик в телеге
Kuzma92
brevis, реальное спасибо вам за ваш ответ. Да, этот жизненный отрезок пути я уже прошел, разобрал, почитал, нашел свои ошибки, и сделал выводы.
Цитата (brevis @ 14.10.2025 - 22:48)
Kuzma92, нам интересна твоя история :)
Что вообще ты делаешь, зачем, насколько успешно выходит и тд :)

Вы первый кто меня об этом спросил :)) Может считаться проявлением неуважения, если я проигнорирую вопрос, поэтому отвечу. Ответ простой: в свои немолодые годы пытаюсь успеть восполнить то, что по глупости пропустил еще в молодости. Пока что выходит, а на успех очень надеюсь. Ну как-то так.. Спасибо вам за интересный вопрос :)
brevis
Kuzma92, ну тогда удачи! smile.gif


_____________
Чатик в телеге
Быстрый ответ:

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