ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Зачем дураку СУБД когда есть файлы?

 

7094
Dim @Render
Приветствую.

Может хоть здесь кто-то сможет помочь с этим, у самого ничего не вышло, да и не особо я в php 😀
Имеем:
- файл со строками и символами разделителями (некая база)
- в файл этот могут добавляться новые данные в самом низу (новые записи)


Формат данных в файле следующий:
привет | и тебе | 06.05.2015
нупока | ага да | 13.05.2015
неясно | почему | 20.10.2015
понятн | тупики | 20.10.2015
нулан | удачки | 20.10.2015
слово 1 | слово 2 | 20.10.2015
слово 3 | слово 3 | 20.10.2015
слово 5 | слово 7 | 20.10.2015
слово 1 | слово 2 | 20.10.2015
слово 4 | слово 4 | 22.10.2015
слово 8 | слово 5 | 25.10.2015
слово 0 | слово 2 | 29.11.2015
слово 7 | слово 7 | 31.12.2015

Нужна некая функция, при запуске которой (когда нажали где-то заветную кнопочку) выполнялось бы следующее;
1. Из файла (пример выше) взять 5 новых строк сверху вниз, которые ранее ещё не были использованы, строки эти сохранить в отдельный файл, а эти взятые в ориг.файле пометить, как использованные.
2. При повторном запуске данной функции, снова взять 5 новых строк из файла бд (т.е уже ниже после использованных), сохранить их в новый файл, а взятые строки из файла бд опять же пометить, как использованные.


В итоге при каждом запуске функции, файл будет меняться.
Т.е запустили первый раз функцию, файл стал выглядим таким:
привет | и тебе | 06.05.2015 *
нупока | ага да | 13.05.2015 *
неясно | почему | 20.10.2015 *
понятн | тупики | 20.10.2015 *
нулан | удачки | 20.10.2015 *
слово 1 | слово 2 | 20.10.2015
слово 3 | слово 3 | 20.10.2015
слово 5 | слово 7 | 20.10.2015
слово 1 | слово 2 | 20.10.2015
слово 4 | слово 4 | 22.10.2015
слово 8 | слово 5 | 25.10.2015
слово 0 | слово 2 | 29.11.2015
слово 7 | слово 7 | 31.12.2015

Запустили после ещё разок, уже таким:
привет | и тебе | 06.05.2015 *
нупока | ага да | 13.05.2015 *
неясно | почему | 20.10.2015 *
понятн | тупики | 20.10.2015 *
нулан | удачки | 20.10.2015 *
слово 1 | слово 2 | 20.10.2015 *
слово 3 | слово 3 | 20.10.2015 *
слово 5 | слово 7 | 20.10.2015 *
слово 1 | слово 2 | 20.10.2015 *
слово 4 | слово 4 | 22.10.2015 *
слово 8 | слово 5 | 25.10.2015
слово 0 | слово 2 | 29.11.2015
слово 7 | слово 7 | 31.12.2015

И так до тех пор, пока не кончатся свежие строки в файле бд.
За полностью рабочий код готов даже отблагодарить в виде пополнения баланса вашей мобилки. 😀

20090
Dimitry @Dimitry
$found=0;
$new="";
$file="data.txt";
$a=file($file);
for($i=0;$i<count($a);$i++) {
//парсим??? $x=explode("|",$a[$i]);
if(!substr_count($a[$i],"*") ) {
$new.=$a[$i]; $found++;
$a[$i]=str_replace(array("\r","\n"),"",$a[$i]);
$a[$i].=" *\r\n";
}
if($found==5) break;
}
file_put_contents($file,implode("",$a));
file_put_contents("new.txt",$new);

Примерно так, конечно не тестил и структуру базы лучше делать так чтоб метка была в отдельной ячейке, например так:
слово|слово|слово|метка|\r\n

потому что поиск по * ненадёжен, может такой символ быть и в словах...

7094
Dim @Render
Dimitry, скинь свой пп в лс или телеграм. Спасибо большое, всё так просто оказалось)

20090
Dimitry @Dimitry
Та ладно, потом может тоже чем поможешь)