Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не могу придумать
 
 автор: Shorr Kan   (28.01.2005 в 11:27)   письмо автору
 
 

У меня есть файлы, имя файла=имя пользователя. Файл подобной конструкции:

050115*50.00000*0.00000*y

Это: Дата*Вклад*Начисленные_проценты_с_предыдущих_вкладов*Статус.

Вклад может быть ежедневный, ежемесячный и еженедельный. Так что каждому человеку создается файл в каждом каталоге с соответственными названиями.

Сам вклад заморожен на $zamorozka дней. :)

Когда человек входит в свой аккаунт - он видит в форматированном виде эти строки (кроме статуса). Если (текущая_дата-дата_в_строке)>$zamorozka, то этот вклад, с этой строки, добавляется к... ну, скажем, $razmorozka. :) И выводим пользователю сообщение "Можно вывести <?print $razmorozka;?> и форму, где он вбивает, сколько он хочет вывести. Допустим, разморозка равна некоторой сумме, которая получилось из двух-трех строчек файла. Допустим, пользователь захотел вывести некоторую часть $razmorozka... причем, эта часть является ЧАСТЬЮ одного вклада. И как же это делать?

В общем я запутался. Технологии, которые можно использовать - файлы+MySQL. Как это наилучшим образом решить?

   
 
 автор: cheops   (28.01.2005 в 13:16)   письмо автору
 
   для: Shorr Kan   (28.01.2005 в 11:27)
 

Если честно, я тоже ничего не понял :))), может примерчик конкретный, например, я кладу 500 рублей и что с ними происходит? Здесь однозначно лучше пользоваться базой данных, меньше мороки и больше возможностей.

   
 
 автор: Shorr Kan   (28.01.2005 в 13:52)   письмо автору
 
   для: 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 в 16:23)   письмо автору
 
   для: Shorr Kan   (28.01.2005 в 13:52)
 

Кажется, я что-то придумал. Спасибо за выслушивание (вычитывание?) - сформулировав проблему, я ее смог решить... пока что.

   
 
 автор: Be4ep   (28.01.2005 в 18:22)
 
   для: Shorr Kan   (28.01.2005 в 16:23)
 

может поделишся своей думой?

   
 
 автор: Shorr Kan   (28.01.2005 в 19:44)   письмо автору
 
   для: 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:54)   письмо автору
 
   для: Shorr Kan   (28.01.2005 в 19:44)
 

Только что сообразил - ведь можно создать одну табличку для ежедневных вкладов... одну для еженедельных и одну для ежемесячных. И ВСЕХ пользователей и их вклады туда записывать... просто будет столбец с логином пользователя - кому эта строка принадлежит... Так будет работать, одно, правда, НО есть... если таблица для ежемесячных - все понятно, проблем нет. Но если таблица для ежедневных, прошло 300 дней после вклада... значит теперь у одного человека триста строк в таблице.... если 100 человек - соответственно чуть-чуть поболее строк будет...
Разумно ли это? Или лучше в файлах?

   
 
 автор: Be4ep   (29.01.2005 в 19:35)   письмо автору
 
   для: Shorr Kan   (28.01.2005 в 19:54)
 

я имел ввиду исходничком. мне просто интересна реализация всего этого

   
 
 автор: Shorr Kan   (30.01.2005 в 01:28)   письмо автору
 
   для: Be4ep   (29.01.2005 в 19:35)
 

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

Но если от этого легче - исходник невозможно было предоставить, так как он слишком разнесен был - разные файлы, и так далее...

Но если у тебя возникнет подобная задача - спрашивай. Видимо, на этом сайте я буду частым гостем, так что и помочь смогу.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования