In een Joomlasite gebruik ik de plugin Calcbuilder.
Deze gebruikt PHP voor berekeningen. Werkt allemaal in PHP 7.4. Maar als ik 8.0 aanzet, dan niet meer. Ik ben geen kenner en vernam dat er in 8.0 een paar dingen anders zijn.
Wellicht kan iemand van onderstaand voorbeeld gelijk zien wat er aan de hand is/wat 8.0 niet accepteert. Alvast dank.

$tebehalentotaal=str_replace(',' , '.',$tebehalentotaal);
$behaaldepunten=str_replace(',' , '.',$behaaldepunten);

$ditgeeft60bij=$tebehalentotaal*0.6;
$foutperpunt=($tebehalentotaal-$ditgeeft60bij)/4;
$foutperpunt=number_format($foutperpunt,2,".",",");
$ditgeeft55bij=number_format($ditgeeft60bij,2,".",",");
$cijfer=10-(($tebehalentotaal-$behaaldepunten)*(4/($tebehalentotaal-$ditgeeft60bij)));
$cijfer=max($cijfer,1);
$cijfer=number_format($cijfer,2,".",",");
$date=date("d/M/Y");
$url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";


$tableresult="";

$tableresult.="<table class='uk-table uk-table-striped uk-table-small'>";
$tableresult.="<thead>";
$tableresult.="<tr>";
$tableresult.="<th style='color:#0bc9eb;font-weight:bold'>Goed</th>";  
$tableresult.="<th style='color:#0bc9eb;font-weight:bold'>Fout</th>";  
$tableresult.="<th style='color:#0bc9eb;text-align:right;font-weight:bold'>Cijfer</th>";

$tableresult.="</tr>";
$tableresult.="</thead>";


//$i from 0 to te behalen totaal,increasing by half:
for($i=0;$i<=$tebehalentotaal;$i+=0.5){

//resultaat
$resultaat=(10-($i*(4/($tebehalentotaal-$ditgeeft60bij))));

if($resultaat<1){
$resultaat="1.0";
}
else{
$resultaat=number_format($resultaat,1,".",",");
}

//resultaat heel color
if($resultaat>=6){
$resultcolor="#47d147";
}
else{
$resultcolor="#ff471a";
}

//punten
$tableresult.="<tr>";
$tableresult.="<td style='color:#ffffff'>".($tebehalentotaal-$i)."</td>";  

//fouten
$tableresult.="<td style='font-size:16px'>".($i)."</td>"; 

//resultaat
$tableresult.="<td style='color:$resultcolor;text-align:right'>".$resultaat."</td>";

}
$tableresult.="<tfoot>";
$tableresult.="<tr>";
$tableresult.="<th style='color:#0bc9eb;font-weight:bold'>Goed</th>";  
$tableresult.="<th style='color:#0bc9eb;font-weight:bold'>Fout</th>";  
$tableresult.="<th style='color:#0bc9eb;text-align:right;font-weight:bold'>Cijfer</th>";

$tableresult.="</tr>";
$tableresult.="</foot>";
$tableresult.="</table>";

Wat krijg je voor errors te zien?
En zo niet, wat meldt de error-log?

Verder ben ik benieuwd of de vertoonde code wel echt van CalcBuilder is? Erg vaak is de code voorzien van Engelse taal en comments. Of is het custom-made?
Dank voor de reactie. De berekening op de webpagina/frontend wordt niet uitgevoerd. Error log heb ik nog niet gecheckt/gevonden.
Zoek de error_log dan maar eens op. Daar staat meer in. Misschien kan je deze vinden via je hosting-panel of buiten je webroot in je (S)FTP
Bedankt, ik ga even zoeken.
Anders kan je hosting je ook wel helpen met de zoektocht naar de error-log, of hebben ze misschien een hulppagina.

[size=xsmall]Toevoeging op 24/10/2022 11:39:20:[/size]

- Ariën - op 24/10/2022 10:43:29

Verder ben ik benieuwd of de vertoonde code wel echt van CalcBuilder is? Erg vaak is de code voorzien van Engelse taal en comments. Of is het custom-made?


Kan je dit bevestigen?
https://www.moonsoft.es/joomla/product/3-calc-builder

Ik verwacht niet dat ze Nederlandse taal zouden gebruiken in hun scripts. :-)
Is het wel de juiste code?
Is het nog gelukt?
Excuus, ik wilde dit inderdaad nog even terugkoppelen. Het is gelukt. Wel via de bouwers van calcbuilder.

Wat PHP 8 niet accepteerde (en 7 dus wel) was:

$variabele=str_replace(',' , '.',$variabele);

Dit moest worden:

$variabele=floatval(str_replace(',' , '.',$variabele));
Ik denk dat het probleem niet per se deze regel was, maar dat de eerste optie ervoor zorgt dat $variabele een string is.
En dat het probleem pas optrad op de plek waar je $variabele gebruikte waar ook nog gecontroleerd werd op $variabele een getal was.
Dus niet een string die gelijkenis vertoont met een getal, maar echt een getal is.

Zou te maken kunnen hebben met typehinting
Bedankt voor reactie. Jammergenoeg heb ik te weinig kennis om het te begrijpen. Voor mij werkt het op deze manier maar het lijkt dus een workaround.

Reageren