Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: График оплаты
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » График оплаты

Страниц (1): [1]
 

1. pantela - 16 Декабря, 2016 - 18:58:24 - перейти к сообщению
Хочу вывести график оплаты для кредитной линий.
т.е. Текущей дате + количество дней для интервала * на количество платежей, напр. пробую так.

Пробую так
CODE (html):
скопировать код в буфер обмена
  1.  
  2.                   <table class="table table-bordered table-hover table-striped table-condensed">
  3.                     <thead>
  4.                       <tr>
  5.                         <td style="width: 1px;" class="text-left">#</td>
  6.                         <td class="text-left">Дата платежа</td>
  7.                       </tr>
  8.                     </thead>
  9.                     <tbody>
  10.                       <?php
  11.                          for ($i=1; $i <= $_POST['regular_payment']; $i++) {
  12.                            $regular_payment = $_POST['regular_payment'];
  13.  
  14.                            $date = date('d/m/Y');
  15.                            $date = strtotime($date);
  16.  
  17.                            $date = strtotime("+".$regular_payment." day", $date);
  18.                            $payment_date = date('d/m/Y', $date);
  19.                      ?>
  20.                       <tr>
  21.                         <td class="bolder"><?=$i;?></td>
  22.                         <td><?=$payment_date;?></td>
  23.                       </tr>
  24.                     <?php } ?>
  25.                     </tbody>
  26.                   </table>


Результат http://prntscr[dot]com/dk8mxg

Понимаю что ошибка у меня где-то в strtotime()... Растерялся

спс.Ув.
2. andrewkard - 16 Декабря, 2016 - 23:15:44 - перейти к сообщению
Я так понимаю, нужно какое то смещение? Или преобразование из то, что есть? Если да, то покажите, как выглядит исходник. Смещение вот так:
PHP:
скопировать код в буфер обмена
  1. $date = new DateTime('2006-12-12');
  2. $date->modify('+1 day');
  3. echo $date->format('Y-m-d');

http://php.net/manual/ru/datetime.modify.php
3. pantela - 16 Декабря, 2016 - 23:43:32 - перейти к сообщению
За это спасибо, вроде мой код тоже прибовляет значение, проблемма у меня втом что перезапись переменой просходит, наверное даты надо виде массива собрать... пробовал через $date = array(); потом в for $date[], но что-то не получилось...

Как... спс.Ув.
4. pantela - 20 Декабря, 2016 - 10:38:52 - перейти к сообщению
Растерялся
5. pantela - 22 Декабря, 2016 - 13:57:48 - перейти к сообщению
Огорчение Не дотянулись руки исправить... подскажите...
6. pantela - 27 Декабря, 2016 - 00:39:20 - перейти к сообщению
Дата 20 раз, каждый раз должны прибовлять +15 дней. Пробую так, но как понимаю переменая $payment_date перезаписываеться в цикле for
PHP:
скопировать код в буфер обмена
  1.                   <table>
  2.                     <thead>
  3.                       <tr>
  4.                         <td>Дата платежа</td>
  5.                         </tr>
  6.                     </thead>
  7.                     <tbody>
  8.                         <?PHP
  9.                           $_p_player = 20;
  10.                           $_p_regular_payment = 15;
  11.  
  12.                           for ($i=1; $i <= $_p_regular_payment; $i++) {
  13.  
  14.                             if ($i > 1) {
  15.                                 $payment_date = date($payment_date, strtotime("+".$_p_regular_payment." day"));
  16.                             }else{
  17.                                 $payment_date = date("d/m/Y", strtotime("+0 day"));
  18.                             }
  19.                           ?>
  20.                       <tr>
  21.                         <td><?=$payment_date;?></td>
  22.                       </tr>
  23.                     <?PHP } ?>
  24.                     </tbody>
  25.                   </table>


CODE (htmlphp):
скопировать код в буфер обмена
  1. 27/12/2016
  2. 27/12/2016
  3. 27/12/2016
  4. 27/12/2016
  5. 27/12/2016
  6. 27/12/2016
  7. 27/12/2016
  8. 27/12/2016
  9. 27/12/2016
  10. 27/12/2016
  11. 27/12/2016
  12. 27/12/2016
  13. 27/12/2016
  14. 27/12/2016
  15. 27/12/2016
  16. 27/12/2016
  17. 27/12/2016
  18. 27/12/2016
  19. 27/12/2016
  20. 27/12/2016



а должно быть так.
CODE (htmlphp):
скопировать код в буфер обмена
  1. 27/12/2016
  2. 11/01/2017
  3. 26/01/2017
  4. ...
7. Sail - 27 Декабря, 2016 - 17:09:08 - перейти к сообщению
pantela, есть такое замечание(там, ниже, за примерами):
Цитата:
Даты в формате m/d/y или d-m-y разрешают неоднозначность с помощью анализа разделителей их элементов: если разделителем является слэш (/), то дата интерпретируется в американском формате m/d/y, если же разделителем является дефис (-) или точка (.), то подразумевается использование европейского форматаd-m-y.
Чтобы избежать потенциальной неоднозначности, рекомендуется использовать даты в формате стандарта ISO 8601 (YYYY-MM-DD) либо пользоваться функцией DateTime::createFromFormat() там, где это возможно.

Так что, либо "d.m.Y", либо DateTime
Применительно к приведённому выше коду (исправив попутно строку-аргумент):
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $_p_player = 20;
  3. $_p_regular_payment = 15;
  4. for ($i=1; $i <= $_p_player; $i++):
  5.     if ($i > 1) {
  6.         $payment_date = date("d.m.Y", strtotime($payment_date."+".$_p_regular_payment." day"));
  7.     }else{
  8.         $payment_date = date("d.m.Y", strtotime("+0 day"));
  9.     }
  10. ?>
  11. <tr><td><?=$payment_date;?></td>
  12. <?PHP
  13. endfor;
  14. ?>
  15.  
либо, например, так:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $_p_player = 20;
  3. $_p_regular_payment = 15;
  4. $date = new DateTime();
  5. do {
  6.     ?>
  7.     <tr><td><?=$date->format('d/m/Y');?></td>
  8.     <?PHP
  9.     $date->modify("+{$_p_regular_payment} day");
  10. } while(--$_p_player);
  11.  
8. pantela - 27 Декабря, 2016 - 23:18:09 - перейти к сообщению
отл. спс. Sail сделал как прим. №1.

Ну и последнее что надо... напр. имею этот график http://prntscr[dot]com/dom77n
это у меня наверное будет массив $regular_payment_list

Далее имею записи транзакции напр. http://prntscr[dot]com/dom9dq
это у меня наверное будет массив $transaction_list
PHP:
скопировать код в буфер обмена
  1. (
  2.     [0] => Array
  3.         (
  4.             [id] => 1077642
  5.             [base_id] => 36448
  6.             [status] => 1
  7.             [payment_date] => 2016-12-02 18:19:28
  8.             [amount] => 20
  9.             [amount_fee] =>
  10.         )
  11.  
  12.     [1] => Array
  13.         (
  14.             [id] => 1077647
  15.             [base_id] => 36448
  16.             [status] => 3
  17.             [payment_date] => 2016-12-02 18:19:29
  18.             [amount] => 20
  19.             [amount_fee] =>
  20.         )
  21.  
  22.     [2] => Array
  23.         (
  24.             [id] => 1077649
  25.             [base_id] => 36448
  26.             [status] => 1
  27.             [payment_date] => 2016-12-02 18:19:29
  28.             [amount] => 20
  29.             [amount_fee] =>
  30.         )
  31.  
  32.     [3] => Array
  33.         (
  34.             [id] => 1077652
  35.             [base_id] => 36448
  36.             [status] => 3
  37.             [payment_date] => 2016-12-02 18:19:29
  38.             [amount] => 20
  39.             [amount_fee] =>
  40.         )
  41.  
  42.     [4] => Array
  43.         (
  44.             [id] => 1077657
  45.             [base_id] => 36448
  46.             [status] => 2
  47.             [payment_date] => 2016-12-02 18:19:31
  48.             [amount] => 20
  49.             [amount_fee] =>
  50.         )
  51.  
  52.     [5] => Array
  53.         (
  54.             [id] => 1077658
  55.             [base_id] => 36448
  56.             [status] => 1
  57.             [payment_date] => 2016-12-02 18:19:32
  58.             [amount] => 12
  59.             [amount_fee] =>
  60.         )
  61.  
  62. )


Далее мне надо на каждую дату в графике подставить соответствующую транзакцию.

Сразу возник вопрос, как я могу определить, какая транзакция для какой даты, если только по дате не сравнивать (т.е. Дата платежа == Дата транзакции), но тут дата может быть одна, а транзакция через 2 дня...

1. Как решение мне надо подставлять транзакции по нумерации, т.е. если у меня 15 даты, и 5 транзакции, я буду первые 5 дат подставлять.

2. А так же в цикле мне надо условие прописывать, напр. если по графику даты надо было оплатить клиенту 20$, но транзакция была 15$, тогда эту даты надо как-то выделать...

Что-то такое: http://prntscr[dot]com/domjld если надо могу для примера ручками транзакции прописать, хотя думаю ясно...


Думаю макс. хорошо описал что надо... Если есть более универсальное или лучше решение дайте наводку, самому не получилось сделать, поэтому написал в этот раздел тему...

спс.Ув.

P.S. пробовал array_merge()...

 

Powered by ExBB FM 1.0 RC1