|
|
|
| У меня есть файлы, имя файла=имя пользователя. Файл подобной конструкции:
050115*50.00000*0.00000*y
Это: Дата*Вклад*Начисленные_проценты_с_предыдущих_вкладов*Статус.
Вклад может быть ежедневный, ежемесячный и еженедельный. Так что каждому человеку создается файл в каждом каталоге с соответственными названиями.
Сам вклад заморожен на $zamorozka дней. :)
Когда человек входит в свой аккаунт - он видит в форматированном виде эти строки (кроме статуса). Если (текущая_дата-дата_в_строке)>$zamorozka, то этот вклад, с этой строки, добавляется к... ну, скажем, $razmorozka. :) И выводим пользователю сообщение "Можно вывести <?print $razmorozka;?> и форму, где он вбивает, сколько он хочет вывести. Допустим, разморозка равна некоторой сумме, которая получилось из двух-трех строчек файла. Допустим, пользователь захотел вывести некоторую часть $razmorozka... причем, эта часть является ЧАСТЬЮ одного вклада. И как же это делать?
В общем я запутался. Технологии, которые можно использовать - файлы+MySQL. Как это наилучшим образом решить? | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.01.2005 в 11:27)
| | Если честно, я тоже ничего не понял :))), может примерчик конкретный, например, я кладу 500 рублей и что с ними происходит? Здесь однозначно лучше пользоваться базой данных, меньше мороки и больше возможностей. | |
|
|
|
|
|
|
|
для: cheops
(28.01.2005 в 13:16)
| | Да... оно и понятно. Я в задачу вник за неделю... и то...
Хорошо, 500 рублей. Вообще, вариантов вклада три - с ежедневным начислением, еженедельным и ежемесячным. И на каждом есть по три тарифных плана. Все устанавливает админ в своей табличке. Допустим, 500 рублей на ежемесячные начисления. Если админ установил минимальный вклад первого тарифного плана в 400 рублей, границу для перехода на второй - 800 рублей, и на третий - 1500, то вы попадете в первый тарифный план. Вам начисляется каждый месяц энный процент в отдельное местечко. Из этого местечка вы можете деньги перевести к этим пятистам рублям (это уже будет как новый вклад), а можете - к себе в кошелек. Это все замечательно, и хлопот с этим будет еще ого-го...
Но! Именно сейчас есть следующая проблема... Допустим, вклад размораживается через шесть месяцев, то есть, вклад можно забрать через этот срок. но к тому времени вы успели уже понавкладывать много раз, так что строк в файле много... да плюс строки, которые появлялись, когда вы ничего не вкладывали, но вам начислялись проценты. Итак, прошло шесть месяцев. 500 ваши разморозились. Вы запросили из этих 500 рублей 200 в баланс (в то местечко, куда сами проценты начисляются). То есть теперь у вас только 300 рублей разморожены. в то же самое время, удалять 200 из 500 в первой строке нельзя, так как это ИСТОРИЯ вклада, и она обязана быть всегда.
Уже неплохая проблема - неясно куда записывать значения, и так далее. Но тут еще полбеды... А если прошло не шесть месяцев с первого вклада, а восемь? То есть, когда вы, скажем, через 20 дней еще что-то вложили - в размороженный вклад попадают не только 500 рублей, а еще рубли из второго вклада... Как разобрать, какие именно рубли человек хочет вывести?
С базой... Первую версию скрипта я делал именно в базе. Только там, без файлов. Вышло вот что - на каждого юзера по три таблички... каждая - на ежедневный, еженедельный и ежемесячный... историю, с датами, и так далее. Как сделать так, чтобы не плодить табличку каждому юзеру, но записывать глубокую и подробную историю, используя базу - я не знаю, потому решил через файлы. Всю ночь писал, пока не уперся в математику. Решив математическую задачу - уперся в ее реализацию в коде - я просто не представляю теперь где-какие значения держать...
Чтобы было понятно - у админа есть поля min_day_1(2,3), min_week_1(2,3),min_month_1(2,3) - это девять столбиков, с минимальными значениями для каждого тарифа, каждого типа начислений. Далее, есть стобики d1,d2,d3,w1.... ну и так далее - это сколько процентов в каждом плане, каждого типа начислений.
Вот. Сколько денег во вкладе пользователя - на том тарифном плане он и сидит. Какой же тип начислений - он выбирает сам, во время вклада. Но вот когда начинаются выплаты пользователю - тут, как и всегда в жизни при возвращении денег - возникают проблемы... куда-чего записывать - неясно. | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.01.2005 в 13:52)
| | Кажется, я что-то придумал. Спасибо за выслушивание (вычитывание?) - сформулировав проблему, я ее смог решить... пока что. | |
|
|
|
|
автор: Be4ep (28.01.2005 в 18:22) |
|
|
для: Shorr Kan
(28.01.2005 в 16:23)
| | может поделишся своей думой? | |
|
|
|
|
|
|
|
для: Be4ep
(28.01.2005 в 18:22)
| | Обязательно... Только как? Ладно, постараюсь...
Итак, в файле есть дата*вклад*начисленные_проценты*статус
если дата<(DATE_SUB(CURRENT_DATE, INTERVAL 1 DAY)) (ну или WEEK или MONTH), то открываем файл, берем из него все, потом построчно explode по звездочкам... и если эксплод[0] И статус не пустой, то в этой строке статус заменяю на нужный. И приплюсовываю эксплод[1] (вклад) переменной.
Поскольку, все это в цикле - в итоге получаем переменную с суммарным количеством вкладов, которые "отлежали" свое, и могут быть сняты... эту сумму и записываю в спец-столбец в базе, который, грубо говоря, называется deposit_free
Надеюсь, не слишком запутанно?
А вот теперь встречный вопрос - кто поделится информацией, как, пользуясь базой, но не плодя таблицы на каждый вклад - держать подробную историю? | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.01.2005 в 19:44)
| | Только что сообразил - ведь можно создать одну табличку для ежедневных вкладов... одну для еженедельных и одну для ежемесячных. И ВСЕХ пользователей и их вклады туда записывать... просто будет столбец с логином пользователя - кому эта строка принадлежит... Так будет работать, одно, правда, НО есть... если таблица для ежемесячных - все понятно, проблем нет. Но если таблица для ежедневных, прошло 300 дней после вклада... значит теперь у одного человека триста строк в таблице.... если 100 человек - соответственно чуть-чуть поболее строк будет...
Разумно ли это? Или лучше в файлах? | |
|
|
|
|
|
|
|
для: Shorr Kan
(28.01.2005 в 19:54)
| | я имел ввиду исходничком. мне просто интересна реализация всего этого | |
|
|
|
|
|
|
|
для: Be4ep
(29.01.2005 в 19:35)
| | Извини, но сегодня (то есть, уже вчера) я подергал разные форумы - нашел более удобный вариант всего этого через mysql... а так, как тяжело немалую часть программы убивать - я сделал это сразу и быстро... Короче, исходника уже нету.
Но если от этого легче - исходник невозможно было предоставить, так как он слишком разнесен был - разные файлы, и так далее...
Но если у тебя возникнет подобная задача - спрашивай. Видимо, на этом сайте я буду частым гостем, так что и помочь смогу. | |
|
|
|
|