denlam
27.12.2012 - 21:03
Задача слудующая:
На сайте есть такой блок, куда random должен выводится один из отзывов в базе. Из-за такой мелкой фигни не хочу базу отдельную в mysql делать. решил хранить в файле инфу.
Нужно хранить Имя и Текст отзыва. Никогда не использовал txt как бд поэтому у меня в голове два варианта:
1) хранить каждый отзыв в отдельном файле но в одной папке и делить его методом "имя|текст", но тогда возникает вопрос как открывать случайный файл в папке?
2) хранить все отзывы в одном файле и хранить методом, например, "имя|текст\nимя|текст". Тогда если я хочу вытащить один отзыв, то нужно открыть файл, разделить и расфасовать внутрь одного массива, например обращаться mas[i][text] и mas[i][name] И выбрать в принципе легко уже рэндомом там. Тут вопрос заключается в другом: как удобно удалять через админку один из отзывов (он же вообще где-то в середине файла хранится)
Эксперты, подскажите какой вариант лучше выбрать или предложите свой алгоритм решения.
p.s. еще раз напоминаю, мы должны смочь достать, добавить, редактировать и удалить отзыв из файловой бд.
Placido
27.12.2012 - 21:09
Тут вопрос в третьем. Почему в БД не хранить? Если очень хочется хранить в именно в файле - есть SQLite, она таблицы в файлах хранит.
denlam
27.12.2012 - 21:12
Цитата (Placido @ 27.12.2012 - 17:09) |
Тут вопрос в третьем. Почему в БД не хранить? Если очень хочется хранить в именно в файле - есть SQLite, она таблицы в файлах хранит. |
Мне надо сделать и потом на другой хостинг переносить. Желательно без БД. именно в файле. Никаких библиотек подключать тоже не хочется лишних.
Если на файлах принципиально, то файлы именовать как 0, 1, 2 ... n, соответственно получить случайный файл rand(0, n)
denlam
27.12.2012 - 21:15
Цитата (kaww @ 27.12.2012 - 17:13) |
Если на файлах принципиально, то файлы именовать как 0, 1, 2 ... n, соответственно получить случайный файл rand(0, n) |
Ну тут проблема в чем. Допустим у нас есть файлы 1...6, а потом удалили 4.txt. тогда у нас остаюстя файлы 1 2 3 5 6 и тут rand(1,n) никак не прет
VolodinAS
27.12.2012 - 21:20
Работал я с такой штукой. Могу тебе за определенную скромную сумму всё организовать.
$path = '/somepath/';
$dir = dir($path);
$files = array();
while (($f = $dir->read())) {
if (is_file($path . $f)) {
$files[] = $f;
}
}
if (!$files) {
die('empty dir');
}
echo file_get_contents($path . $files[rand(0,count($files))]);
denlam
27.12.2012 - 21:24
Цитата (VolodinAS @ 27.12.2012 - 17:20) |
Работал я с такой штукой. Могу тебе за определенную скромную сумму всё организовать. |
Храни в виде массива, который просто в дальнейшем подключается.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.