Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Все вопросы/проблемы по установке и использовании.
aik
Сообщения: 707
Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля

Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение aik »

Вписал вот такой код:

Код: Выделить всё

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
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение Fait »

Есть 2 важных момента...
1) Оставьте идею сохранения такого большого объёма данных в поле, вы не сможете сохранить всю эту таблицу в БД.
2) Для вывода в самом поле используется только $output_value, избавьтесь от всех echo в коде. Вместо них используйте, например, $out .= ....
И в функции m_diff используйте в конце return $out;

То есть вы записываете в $out всю таблицу, и функция возвращает вам именно её.
aik
Сообщения: 707
Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение aik »

Что-то вроде отображается, но без данных и подвал прилетел в эту ячейку.

Код: Выделить всё

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
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение Fait »

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
Имя: Антон
Откуда: земля

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение aik »

Поменял на $out и все равно не фурычит ((
nruslan2
Сообщения: 2412
Зарегистрирован: 14 окт 2020, 09:13
Имя: Ruslan
Откуда: Moscow
Контактная информация:

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение nruslan2 »

вроде как в поле php нельзя вписываить свои функции
для этого есть настройка в меню пользовательский php!
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение Fait »

nruslan2 писал(а): 15 мар 2024, 21:53 вроде как в поле php нельзя вписываить свои функции
для этого есть настройка в меню пользовательский php!
Ну там совсем чуть-чуть можно.

Но правда что, может быть и в этом проблема...
Не могу сравнить, так как сам функции в этом поле не использую, а выношу их в Пользовательский PHP.
aik
Сообщения: 707
Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение aik »

В общем поставил галочку выполнять динамически и заработало, но это выходит данные не записываются в бд.
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 743
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение Fait »

aik писал(а): 16 мар 2024, 18:50 В общем поставил галочку выполнять динамически и заработало, но это выходит данные не записываются в бд.
Так конечно же динамически!
Я писал в первом сообщении, что вы не сможете сохранить такой объём данных в БД.
Может, не совсем явно это было написано, но всё же...

Вот здесь:
Fait писал(а): 15 мар 2024, 17:16 Есть 2 важных момента...
1) Оставьте идею сохранения такого большого объёма данных в поле, вы не сможете сохранить всю эту таблицу в БД.
...
aik
Сообщения: 707
Зарегистрирован: 12 апр 2017, 10:09
Имя: Антон
Откуда: земля

Re: Вписал в поле PHP код, при сохранении мне выдает белую страницу с результатом моего кода

Сообщение aik »

Спасибо, не сразу понял))
Ответить