Script werkt in PHP 7.4 maar niet in 8.0

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dafilla H

Dafilla H

24/10/2022 10:41:36
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
$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>";
 
PHP hulp

PHP hulp

03/02/2023 14:17:44
 
- Ariën  -
Beheerder

- Ariën -

24/10/2022 10:43:29
Quote Anchor link
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?
Gewijzigd op 24/10/2022 10:46:18 door - Ariën -
 
Dafilla H

Dafilla H

24/10/2022 10:47:28
Quote Anchor link
Dank voor de reactie. De berekening op de webpagina/frontend wordt niet uitgevoerd. Error log heb ik nog niet gecheckt/gevonden.
 
- Ariën  -
Beheerder

- Ariën -

24/10/2022 10:48:53
Quote Anchor link
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
 
Dafilla H

Dafilla H

24/10/2022 10:52:29
Quote Anchor link
Bedankt, ik ga even zoeken.
 
- Ariën  -
Beheerder

- Ariën -

24/10/2022 10:56:00
Quote Anchor link
Anders kan je hosting je ook wel helpen met de zoektocht naar de error-log, of hebben ze misschien een hulppagina.

Toevoeging op 24/10/2022 11:39:20:

- 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?
 
- Ariën  -
Beheerder

- Ariën -

31/10/2022 11:25:16
Quote Anchor link
Is het nog gelukt?
 
Dafilla H

Dafilla H

31/10/2022 12:22:16
Quote Anchor link
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));
 
Ivo P

Ivo P

04/11/2022 10:47:51
Quote Anchor link
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
 
Dafilla H

Dafilla H

04/11/2022 14:02:36
Quote Anchor link
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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.