Ik heb dit in de index.php

error_reporting(1);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL & ~E_WARNING);

Nu wil ik dit in een <div></div> wegzetten, zodat ik die regels, er iets fout is, dat ik het in boven in de page zie.
Maar dat lukt mij niet, heb ik via een maat van mij, een een stukje hulp gekregen voor een eigen error reporting te maken.

function errorHandler(int $type, string $msg, ?string $file = NULL, ?int $line = NULL) {
echo $type.' : '. $msg.' in : '. $file.' on line : '. $line;
}
$warning = set_error_handler('errorHandler' , E_ALL);

en heb ik in de ingelade page, dit gemaakt.

if($error == 1){ 
include('./inc/Errors.php');
echo "<div class='warningbox'>Still under construction<br />".$warning."</div>";
}

Maar echter als er een fout is op een page. Dan laat hij het zien op de page die geincluded wordt.
En niet in de warningbox waar ik het juist wil hebben.
De $warnig wordt wel uitgespuugd, maar niet in de div element.
Hoe kan dat? Ligt dat aan de error reporting zelf? of heb ik iets over het hoofd gezien? of is het niet mogenlijk om het in een div element te plaatsen?
Zelfs als je errors opvang om later te tonen kan je ze in een array steken en met een lusje ze tonen
<?php
$_SESSION['fouten'] = ['fout1', 'fout2'];
if($_SESSION['fouten'] && is_array($_SESSION['fouten'])) {
foreach($_SESSION['fouten'] as $fout) {
echo '<div class="fout" onclick="this.remove();">' . $fout . '</div>';
}
}
?>

Je moet je classe zelf opmaken via css natuurlijk
Hmmmm, dus dit moet ik eens gaan testen.
Goed lezen wat ik schrijf.

Bekijk jouw code in het eerste bericht. Je gebruikt de functie set_error_handler. Ga naar php.net en zoek die functie op. (Dat kun je heel makkelijk doen door de naam van de functie achter de URL php.net te plakken, dus php.net/functienaam).

Ga dit eens doen en kijk bij de uitleg wat die functie teruggeeft, ofwel wat de "return value" is. Laat maar eens weten of je dat kunt vinden, en laat maar eens weten wat het antwoord is.
@Ozzie PHP,

Bedoel je dit?
Returns the previously defined error handler (if any). If the built-in error handler is used null is returned. If the previous error handler was a class method, this function will return an indexed array with the class and the method name.
Ja, dat is precies wat ik bedoel ;-)

Jij doet dit:

<?php

$warning = set_error_handler('errorHandler' , E_ALL);

echo "<div class='warningbox'>Still under construction<br />".$warning."</div>";

?>
Met de uitleg die je zojuist zelf hebt opgezocht, snap je nu als het goed is waarom het niet werkt.
Nou de warning krijg ik wel als er iets fout is, maar op de geinclude pagina en niet in de <div> element waar ik het wil.

[size=xsmall]Toevoeging op 02/05/2023 14:21:10:[/size]

Maar ik moet dus even goed zoeken, waar de rest van de uitleg is die ik gevonden had.
Dan zal het misschien wel in daar komen waar ik het wil.
Nee ... lees goed wat er in het stukje staat dat je hebt opgezocht. En bekijk vervolgens jouw code.

Wat gaat er niet goed denk je?
Lang leve var_dump()!

Reageren