Все вопросы/проблемы по установке и использовании.
aik
Сообщения: 707 Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля
Сообщение
aik » 15 мар 2024, 15:17
Вписал вот такой код:
Код: Выделить всё
function okr($a) {
return number_format(abs($a), 2, ',', ' ');
}
function do_c($a)
{
$a = preg_replace('/[^0-9,\.]/u', '', $a);
$a = str_replace(',','.',$a);
$a = floatval($a);
return $a;
}
function m_diff ($sum, $proc, $srok)
{
$all_summa_platega = 0;
$all_osn_dolg = 0;
$all_nach_procent = 0;
$osn_dolg = $sum/$srok;
$arr_sum = array();
ob_start();
echo '<h2>График ежемесячных платежей по кредиту</h2>';
echo '<table border="1">';
echo '<tr>';
echo '<th>';
echo '<div class="div100"></div>';
echo 'Дата';
echo '</th>';
echo '<th>';
echo '<div class="div100"></div>';
echo 'Сумма платежа';
echo '</th>';
echo '<th>';
echo '<div class="div100"></div>';
echo 'Основной долг';
echo '</th>';
echo '<th>';
echo '<div class="div100"></div>';
echo 'Начисленные проценты';
echo '</th>';
echo '<th>';
echo '<div class="div100"></div>';
echo 'Остаток задолженности';
echo '</th>';
echo '</tr>';
for($i=1; $i<=$srok; $i++)
{
if(!$ostatok) $ostatok = $sum;
$nach_procent = $ostatok*$proc/12/100;
$summa_platega = $nach_procent+$osn_dolg;
$ostatok = $sum - $osn_dolg*$i;
$all_summa_platega = $all_summa_platega + $summa_platega;
$all_osn_dolg = $all_osn_dolg + $osn_dolg;
$all_nach_procent = $all_nach_procent + $nach_procent;
$arr_sum[] = $summa_platega;
echo '<tr>';
echo '<td>';
echo $i.'-й месяц';
echo '</td>';
echo '<td>';
echo okr($summa_platega);
echo '</td>';
echo '<td>';
echo okr($osn_dolg);
echo '</td>';
echo '<td>';
echo okr($nach_procent);
echo '</td>';
echo '<td>';
echo okr($ostatok);
echo '</td>';
echo '</tr>';
}
echo '<tr>';
echo '<td>';
echo '<b>Всего:</b>';
echo '</td>';
echo '<td>';
echo '<b>'.okr($all_summa_platega).'</b>';
echo '</td>';
echo '<td>';
echo '<b>'.okr($all_osn_dolg).'</b>';
echo '</td>';
echo '<td>';
echo '<b>'.okr($all_nach_procent).'</b>';
echo '</td>';
echo '<td>';
echo '</td>';
echo '</tr>';
echo '</table>';
$buf = ob_get_contents();
ob_end_clean();
echo '<b>Общая сумма выплат:</b> '.okr($all_summa_platega).'<br>';
echo '<b>Переплата по процентам за кредит:</b> '.okr($all_nach_procent).'<br>';
echo '<b>Сумма ежемесячного платежа:</b> '.okr(max($arr_sum)).' ... '.okr(min($arr_sum)).'<br>';
echo $buf;
}
$sum = do_c([385]);
$proc = do_c([436]);
$srok = abs(intval([437]));
if(!$sum)
$err .= 'Не указана сумма<br>';
if(!$srok)
$err .= 'Не указан срок<br>';
if(!$proc)
$err .= 'Не указана процентная ставка<br>';
if($sum > 100000000)
$err .= 'Слишком большая сумма<br>';
if($srok > 600)
$err .= 'Слишком большой срок<br>';
if($proc > 1000)
$err .= 'Слишком большая процентная ставка<br>';
$output_value = m_diff($sum, $proc, $srok);
А мне выдает страницу вот такую, вместо того, чтобы график был встроен в поле.
Fait
Инвестор
Сообщения: 770 Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Сообщение
Fait » 15 мар 2024, 17:16
Есть 2 важных момента...
1) Оставьте идею сохранения такого большого объёма данных в поле, вы не сможете сохранить всю эту таблицу в БД.
2) Для вывода в самом поле используется только $output_value , избавьтесь от всех echo в коде. Вместо них используйте, например, $out .= ... .
И в функции m_diff используйте в конце return $out;
То есть вы записываете в $out всю таблицу, и функция возвращает вам именно её.
aik
Сообщения: 707 Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля
Сообщение
aik » 15 мар 2024, 17:34
Что-то вроде отображается, но без данных и подвал прилетел в эту ячейку.
Код: Выделить всё
function okr($a) {
return number_format(abs($a), 2, ',', ' ');
}
function do_c($a)
{
$a = preg_replace('/[^0-9,\.]/u', '', $a);
$a = str_replace(',','.',$a);
$a = floatval($a);
return $a;
}
function m_diff ($sum, $proc, $srok)
{
$all_summa_platega = 0;
$all_osn_dolg = 0;
$all_nach_procent = 0;
$html = ' ';
$osn_dolg = $sum/$srok;
$arr_sum = array();
ob_start();
$html .= '<table border="1">';
$html .= '<tr>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Дата';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Сумма платежа';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Основной долг';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Начисленные проценты';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Остаток задолженности';
$html .= '</th>';
$html .= '</tr>';
for($i=1; $i<=$srok; $i++)
{
if(!$ostatok) $ostatok = $sum;
$nach_procent = $ostatok*$proc/100;
$summa_platega = $nach_procent+$osn_dolg;
$ostatok = $sum - $osn_dolg*$i;
$all_summa_platega = $all_summa_platega + $summa_platega;
$all_osn_dolg = $all_osn_dolg + $osn_dolg;
$all_nach_procent = $all_nach_procent + $nach_procent;
$arr_sum[] = $summa_platega;
$html .= '<tr>';
$html .= '<td>';
$html .= $i.'-й день';
$html .= '</td>';
$html .= '<td>';
$html .= okr($summa_platega);
$html .= '</td>';
$html .= '<td>';
$html .= okr($osn_dolg);
$html .= '</td>';
$html .= '<td>';
$html .= okr($nach_procent);
$html .= '</td>';
$html .= '<td>';
$html .= okr($ostatok);
$html .= '</td>';
$html .= '</tr>';
}
$html .= '<tr>';
$html .= '<td>';
$html .= '<b>Всего:</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_summa_platega).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_osn_dolg).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_nach_procent).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '</td>';
$html .= '</tr>';
$html .= '</table>';
$buf = ob_get_contents();
ob_end_clean();
$html .= '<b>Общая сумма выплат:</b> '.okr($all_summa_platega).'<br>';
$html .= '<b>Переплата по процентам за займ:</b> '.okr($all_nach_procent).'<br>';
$html .= '<b>Сумма ежедневного платежа:</b> '.okr(max($arr_sum)).' ... '.okr(min($arr_sum)).'<br>';
$html .= $buf;
return $html;
}
$sum = do_c([385]);
$proc = do_c([436]);
$srok = abs(intval([437]));
$output_value = m_diff($sum, $proc, $srok);
Fait
Инвестор
Сообщения: 770 Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Сообщение
Fait » 15 мар 2024, 18:25
aik писал(а): ↑ 15 мар 2024, 17:34
Что-то вроде отображается, но без данных и подвал прилетел в эту ячейку.
Код: Выделить всё
function okr($a) {
return number_format(abs($a), 2, ',', ' ');
}
function do_c($a)
{
$a = preg_replace('/[^0-9,\.]/u', '', $a);
$a = str_replace(',','.',$a);
$a = floatval($a);
return $a;
}
function m_diff ($sum, $proc, $srok)
{
$all_summa_platega = 0;
$all_osn_dolg = 0;
$all_nach_procent = 0;
$html = ' ';
$osn_dolg = $sum/$srok;
$arr_sum = array();
ob_start();
$html .= '<table border="1">';
$html .= '<tr>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Дата';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Сумма платежа';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Основной долг';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Начисленные проценты';
$html .= '</th>';
$html .= '<th>';
$html .= '<div class="div100"></div>';
$html .= 'Остаток задолженности';
$html .= '</th>';
$html .= '</tr>';
for($i=1; $i<=$srok; $i++)
{
if(!$ostatok) $ostatok = $sum;
$nach_procent = $ostatok*$proc/100;
$summa_platega = $nach_procent+$osn_dolg;
$ostatok = $sum - $osn_dolg*$i;
$all_summa_platega = $all_summa_platega + $summa_platega;
$all_osn_dolg = $all_osn_dolg + $osn_dolg;
$all_nach_procent = $all_nach_procent + $nach_procent;
$arr_sum[] = $summa_platega;
$html .= '<tr>';
$html .= '<td>';
$html .= $i.'-й день';
$html .= '</td>';
$html .= '<td>';
$html .= okr($summa_platega);
$html .= '</td>';
$html .= '<td>';
$html .= okr($osn_dolg);
$html .= '</td>';
$html .= '<td>';
$html .= okr($nach_procent);
$html .= '</td>';
$html .= '<td>';
$html .= okr($ostatok);
$html .= '</td>';
$html .= '</tr>';
}
$html .= '<tr>';
$html .= '<td>';
$html .= '<b>Всего:</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_summa_platega).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_osn_dolg).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '<b>'.okr($all_nach_procent).'</b>';
$html .= '</td>';
$html .= '<td>';
$html .= '</td>';
$html .= '</tr>';
$html .= '</table>';
$buf = ob_get_contents();
ob_end_clean();
$html .= '<b>Общая сумма выплат:</b> '.okr($all_summa_platega).'<br>';
$html .= '<b>Переплата по процентам за займ:</b> '.okr($all_nach_procent).'<br>';
$html .= '<b>Сумма ежедневного платежа:</b> '.okr(max($arr_sum)).' ... '.okr(min($arr_sum)).'<br>';
$html .= $buf;
return $html;
}
$sum = do_c([385]);
$proc = do_c([436]);
$srok = abs(intval([437]));
$output_value = m_diff($sum, $proc, $srok);
Попробуйте использовать название переменной не $html, так как эта она системная и поэтому наложение данных возникнуть могло.
Хотя по коду вроде всё правильно...
Я выводил таблицы больше 300 строк таким образом, и норм.
aik
Сообщения: 707 Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля
Сообщение
aik » 15 мар 2024, 18:37
Поменял на $out и все равно не фурычит ((
nruslan2
Сообщения: 2417 Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:
Сообщение
nruslan2 » 15 мар 2024, 21:53
вроде как в поле php нельзя вписываить свои функции
для этого есть настройка в меню пользовательский php!
Fait
Инвестор
Сообщения: 770 Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Сообщение
Fait » 16 мар 2024, 12:32
nruslan2 писал(а): ↑ 15 мар 2024, 21:53
вроде как в поле php нельзя вписываить свои функции
для этого есть настройка в меню пользовательский php!
Ну там совсем чуть-чуть можно.
Но правда что, может быть и в этом проблема...
Не могу сравнить, так как сам функции в этом поле не использую, а выношу их в Пользовательский PHP.
aik
Сообщения: 707 Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля
Сообщение
aik » 16 мар 2024, 18:50
В общем поставил галочку выполнять динамически и заработало, но это выходит данные не записываются в бд.
Fait
Инвестор
Сообщения: 770 Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич
Сообщение
Fait » 16 мар 2024, 19:32
aik писал(а): ↑ 16 мар 2024, 18:50
В общем поставил галочку выполнять динамически и заработало, но это выходит данные не записываются в бд.
Так конечно же динамически!
Я писал в первом сообщении, что вы не сможете сохранить такой объём данных в БД.
Может, не совсем явно это было написано, но всё же...
Вот здесь:
Fait писал(а): ↑ 15 мар 2024, 17:16
Есть 2 важных момента...
1) Оставьте идею сохранения такого большого объёма данных в поле, вы не сможете сохранить всю эту таблицу в БД.
...
aik
Сообщения: 707 Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля
Сообщение
aik » 17 мар 2024, 15:44
Спасибо, не сразу понял))