Jump to content
  • 0

Кредитный калькулятор


e_skabar
 Share

Question

Вобщем есть код кредитного калькулятора. Необходимо подставить значения (срок кредита) до 120 месяцев, чтобы производились расчеты. Подскажите пожалуйста кто понимает.

<?php

error_reporting(0);

$allow_month_count = array(6, 9, 12, 24);

$allow_month = array(

1=> 'Январь',

2=> 'Февраль',

3=> 'Март',

4=> 'Апрель',

5=> 'Май',

6=> 'Июнь',

7=> 'Июль',

8=> 'Август',

9=> 'Сентябрь',

10=> 'Октябрь',

11=> 'Ноябрь',

12=> 'Декабрь'

);

$allow_calc = false;

$sum_kredita = '';

$procent = 12;

$month_count = '';

$num_first_month = (int)date('n');;

if (isset($_REQUEST['sum_kredita']) and isset($_REQUEST['procent']) and

isset($_REQUEST['month_count']) and isset($_REQUEST['month_first']) ) {

$sum_kredita = (int)$_REQUEST['sum_kredita'];

if ($sum_kredita < 100000 or $sum_kredita > 100000000) {

$sum_kredita = 100000;

}

$procent = (float)$_REQUEST['procent'];

if ($procent <= 0 or $procent > 100) {

$procent = 12;

}

$month_count = (int)$_REQUEST['month_count'];

$num_first_month = (int)$_REQUEST['month_first'];

$allow_calc = true;

} else {

$allow_calc = false;

}

$srok_opt = '';

foreach ($allow_month_count as $m) {

if ($month_count == $m) {

$srok_opt .= "<option value=\"$m\" selected>$m месяцев</option>";

} else {

$srok_opt .= "<option value=\"$m\">$m месяцев</option>";

}

}

$m_opt = '';

foreach ($allow_month as $k => $m) {

if ($num_first_month == $k) {

$m_opt .= "<option value=\"$k\" selected>$m</option>";

} else {

$m_opt .= "<option value=\"$k\">$m</option>";

}

}

$output = '';

$output .= '<form name="credit" action="" method="post">

Сумма кредита, руб:<br>

<input name="sum_kredita" type="text" value="'. $sum_kredita .'"> (100 000 - ... рублей)<br>

Процентная ставка, %:<br>

<input name="procent" type="text" value="'. $procent .'"> (разделитель дробной части - точка ".", например 11.7)<br>

Срок кредита:<br>

<select size="1" name="month_count">

'. $srok_opt .'

</select><br>

Месяц получения кредита:<br>

<select size="1" name="month_first">

'. $m_opt .'

</select><br><br>

<input type="submit" value="Рассчитать">

</form>';

if ($allow_calc) {

$month = array('01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12');

//$month = array('янв', 'фев', 'мар', 'апр', 'май', 'июн', 'июл', 'авг', 'сен', 'окт', 'ноя', 'дек');

//текущий год

$year = (int)date('Y', time());

//выплата в месяц без процентов

$pogash_osn_dolga = round($sum_kredita / $month_count);

//выплата за последний месяц

$last_month = $sum_kredita - $pogash_osn_dolga * ($month_count - 1);

//выплаты в месяц

$per_month = array();

$sum_kred_temp = $sum_kredita;

for ($i = 0; $i < $month_count - 1; $i++) {

$per_month[] = $pogash_osn_dolga;

//остаток по месяцам

$osn_dolg[] = $sum_kredita - $pogash_osn_dolga * $i;

}

//выплаты в месяц

$per_month[] = $last_month;

//остаток по месяцам

$osn_dolg[] = $last_month;

//print_r($per_month);

//print_r($osn_dolg);

$first = array_slice($month, 0, $num_first_month - 1);

$last = array_slice($month, $num_first_month - 1);

$first_out = array_slice($month, 0, $num_first_month);

$last_out = array_slice($month, $num_first_month);

$month_order = array_merge($last, $first);

$month_order_out = array_merge($last_out, $first_out);

//порядок по 24 месяцам

$month_order = array_merge($month_order, $month_order);

$month_order_out = array_merge($month_order_out, $month_order_out);

$year_out = $year;

//порядок выплаты кредита по месяцам и годам

$month_kred = array();

$month_kred_out = array();

for ($i = 0; $i <= $month_count - 1; $i++) {

$month_kred[] = array($month_order[$i], $year);

$month_kred_out[] = array($month_order_out[$i], $year_out);

//увеличим год, если декабрь

if ($month_order[$i] == 12) {

$year++;

}

if ($month_order_out[$i] == 12) {

$year_out++;

}

}

//print_r($month_kred);

//print_r($month_kred_out);

//die;

//проверка года на високосность

function is_leap($year = NULL) {

return checkdate(2, 29, ($year == NULL)? date('Y') : $year);

}

//проценты по месяцам

$proc_pogash = array();

$vsego = array();

for ($i = 0; $i < $month_count; $i++) {

(is_leap($month_kred[$i][1])) ? $days_in_year = 366 : $days_in_year = 365;

//количество дней в месяце

$num = cal_days_in_month(CAL_GREGORIAN, $month_kred[$i][0], $month_kred[$i][1]);

$day_month[] = array($num, implode($month_kred_out[$i], '.'));

$proc_pogash_i = Round(($osn_dolg[$i] * ($procent / 100)) / $days_in_year * $num);

$proc_pogash[] = $proc_pogash_i;

$vsego[] = $per_month[$i] + $proc_pogash_i;

}

/*

print_r($proc_pogash);

echo array_sum($proc_pogash);

print_r($vsego);

echo array_sum($vsego);

print_r($day_month);

*/

$output .= '<br><br>';

$output .= sprintf('Сумма кредита: %s рублей; Процентная ставка: %01.2f; Срок: %s мес. ', number_format($sum_kredita, 0, '.', ' '), $procent, $month_count) ;

$output .= '<br><br>';

$out = '<table class="credit">';

$out .= '<tr><th>Месяц</th><th>Кол-во дней</th><th>Остаток основного долга, руб</th><th>Погашение долга, руб</th><th>Процент, руб</th><th>Всего, руб</th></tr>';

for ($i = 0; $i < $month_count; $i++) {

$out .= sprintf('<tr><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td><td>%s</td></tr>',

$day_month[$i][1], $day_month[$i][0], $osn_dolg[$i], $per_month[$i], $proc_pogash[$i], $vsego[$i]);

}

$out .= sprintf('<tr><td colspan="3"><b>Итого:</b></td><td><b>%s</b></td><td><b>%s</b></td><td><b>%s</b></td></tr>',

number_format(array_sum($per_month), 0, '.', ' '), number_format(array_sum($proc_pogash), 0, '.', ' '), number_format(array_sum($vsego), 0, '.', ' '));

$out .= '</table>';

$output .= $out;

}

$tpl = '

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>Кредитный калькулятор</title>

<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">

<style type="text/css">

a:active,a:visited,a:link {

color: #4b719e;

text-decoration:none;

}

a:hover {

color: #4b719e;

text-decoration: underline;

}

.title {

color: #333333;

font-size: 26px;

font-family: georgia;

font-weight: normal;

padding-left: 6px;

}

.text {

font-family:Tahoma;

font-weight:normal;

font-size:12px;

color:#365069;

}

hr {

width: 100%;

height: 1px;

border: 0;

background: #B9D2E2;

color: #B9D2E2

}

table.credit {

width:100%;

border:1px solid #c0c0c0;

background-color:#ffffff;

}

table.credit tr {

background-color:#f8f8f8;

}

table.credit tr:hover {

background-color:#ffffff;

}

table.credit td{

padding:1px;

text-align:right;

}

table.credit th{

border:0px;

color:#333333;

background-color:#D5E7F3;

padding:2px;

text-align:center;

font-size:12px;

}

</style>

</head>

<body>

<table width="750" align="center" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="100%" height="30" align="center" valign="middle" style="border-left: 1px solid #D5E7F3; border-right: 1px solid #D5E7F3; border-top: 1px solid #D5E7F3;" bgcolor="#D5E7F3">

<span class="title">Кредитный калькулятор</span>

</td>

</tr>

</table>

<table width="750" align="center" border="0" cellspacing="1" cellpadding="0" bgcolor="#D5E7F3" class="text">

<tr>

<td>

<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="#f5f8fa"><tr>

<td width="100%" style="padding-top:25px; padding-right:20px; padding-left:20px;" valign="top"><div class="text">

' . $output . '

<br><br><br><br>

<hr>

<a href="http://fil.ya1.ru">Вернуться на главную страницу</a>

</div><br><br><br></td></tr></table>

<table width="100%" cellspacing="0" cellpadding="3" border="0" bgcolor="#F4FBFF" class="text" style="border-top:1px solid #B9D2E2">

<tr>

<td width="50%" nowrap>Шо, Кредиты?</td><td width="100%"> </td>

<td width="50%" nowrap>Да иди ты!</td>

</tr>

</table>

</td>

</tr>

</table>

</body>

</html>

';

echo $tpl;

?>

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

У меня глаз вытек :(

Я б за такое оформление ридонли вешал.

Ты калькулятор сам писал? Тогда должен знать, что подставить

А если не сам писал, то что это получается, ты нашёл где-то код, положил на форум как рука взяла и покуриваешь ожидая, когда для тебя всё сделают?

Link to comment
Share on other sites

  • 0

$allow_month_count = array(6, 9, 12, 24, ... , 120);

просто посмотрел первую строчку и тупо перевёл позволить_месяцев_количество

:rolleyes:

Да нет, я уже так пробовал. Расчет то выходит, но дальше 2013 года идут только 2013 года. В этом и проблема.

Link to comment
Share on other sites

  • 0

ну тогда ставь заглушку где идёт цикл и проверяй почему он останавливается на 2013. Думаю что это просто ошибка того кто этот код писал, человек не ориентировался на изменения значений массива, а тупо поставил количество

Link to comment
Share on other sites

  • 0

ну тогда ставь заглушку где идёт цикл и проверяй почему он останавливается на 2013. Думаю что это просто ошибка того кто этот код писал, человек не ориентировался на изменения значений массива, а тупо поставил количество

А что это за заглушка? И куда эту заглушку то вставить?

Link to comment
Share on other sites

  • 0

$allow_month_count = array(6, 9, 12, 24, ... , 120);

просто посмотрел первую строчку и тупо перевёл позволить_месяцев_количество

:rolleyes:

Да нет, я уже так пробовал. Расчет то выходит, но дальше 2013 года идут только 2013 года. В этом и проблема.

e_skabar, вы: лентяй, балбес и дармоед

Это:


//порядок по 24 месяцам
$month_order = array_merge($month_order, $month_order);
$month_order_out = array_merge($month_order_out, $month_order_out);

на это:


//порядок по 24 месяцам
for ($i=0; $i<($month_count/12); $i++) {
$month_order = array_merge($month_order, $month_order);
$month_order_out = array_merge($month_order_out, $month_order_out);
}

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

Точность количества итераций корректируйте сами.

Link to comment
Share on other sites

  • 0

Да нет, я уже так пробовал. Расчет то выходит, но дальше 2013 года идут только 2013 года. В этом и проблема.

e_skabar, вы: лентяй, балбес и дармоед

А по поводу оскорблений, я попрошу вас в следующий раз не применять их! Вам ни кто такого права не давал!

А вот за помощь спасибо вам большое! Очень помогли!

Link to comment
Share on other sites

  • 0

e_skabar, вы: лентяй, балбес и дармоед

А по поводу оскорблений, я попрошу вас в следующий раз не применять их! Вам ни кто такого права не давал!

А вот за помощь спасибо вам большое! Очень помогли!

Оскорбления можете считать как плату за помощь.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy