Ik krijg deze 2 foutmeldingen: Notice: Undefined variable: arrx in D:\xampp\htdocs\website\foodpoint\print.php on line 147

Warning: Invalid argument supplied for foreach() in D:\xampp\htdocs\website\foodpoint\print.php on line 147

de code op line 147 is: foreach($arrx as $obj) {
- Ariën - op 09/09/2020 10:07:43

Zet even een ENTER na elke punt-komma. We willen graag helpen met je code, zolang het maar geen spaghetti-vormen gaat aannemen. Het gebruik van TAB bij if/while statements is ook niet verboden. ;)

Ik heb de code even wat overzichtelijker gemaakt, en de query even opgedeeld in een los deel, zodat je makkelijker kan debuggen.

<?php
$resultx = mysqli_query($link, $sqlx);
var_dump($resultx);
if ($resultx) {
$arrx = [];
while ($objx = mysqli_fetch_object($resultx)) {
$arrx[] = $objx;
}
} else {
// Query mislukt, debug verder met mysqli_error($link);
}
?>




Ja sorry ik weet het, nogmaals ik heb deze code niet zelf gemaakt.
Maar toch bedankt dat je de moeite voor mij neemt om mij toch te helpen.
Ik heb jou stuk code er nu ingeplakt en krijg nu dit: // object(mysqli_result)#3 (5) { ["current_field"]=> int(0) ["field_count"]=> int(8) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }

en dit: Notice: Trying to get property 'start_date' of non-object in D:\xampp\htdocs\website\foodpoint\print.php on line 155
Dan levert je query geen resultaten op.
Echo eens $sqlx, en je weet meer over je query. Check ook de mysqli_error die ik gecomment heb.

Je kan een mooie melding tonen door na je mysqli_query met mysqli_num_rows te kijken of je aantal resultaten gelijk zijn aan 0 ( == 0 ).
- Ariën - op 09/09/2020 10:25:33

Dan levert je query geen resultaten op.
Echo eens $sqlx, en je weet meer over je query. Check ook de mysqli_error die ik gecomment heb.

Je kan een mooie melding tonen door na je mysqli_query met mysqli_num_rows te kijken of je aantal resultaten gelijk zijn aan 0 ( == 0 ).


Hiermee kom ik er ook niet uit.
<?php
$resultx = mysqli_query($link, $sqlx);
var_dump($resultx);
if ($resultx) {
   $arrx = [];
   while ($objx = mysqli_fetch_object($resultx)) {
     $arrx[] = $objx;
   }
} else {
// Query mislukt, debug verder met mysqli_error($link);
}
?>

Een mogelijk probleem met deze code is dat je $arrx alleen initialiseert indien de query geen fouten opleverde. Dit zou geen problemen opleveren als je de normale flow van je programma afbreekt indien er een queryfout optreedt, maar anders loopt je code gewoon door en is $arrx ongedefinieerd.

Je weet dus nu nog steeds niet of:
- de query fouten opleverde, maar je var_dump suggereert dat dit goed gaat omdat je een object terugkrijgt in plaats van false
- de query resultaten heeft of niet, maar het lijkt erop dat je niet kunt itereren over items van $arrx; het feit dat dit geprobeerd wordt suggereert dat $arrx niet leeg is en dus dat er resultaten zijn

Deze twee zaken spreken elkaar ogenschijnlijk tegen.

Het lijkt mij zaak dat je uitsluitsel krijgt over wat er nu aan de hand is.

Misschien is het handiger om als volgt te werk te gaan.

Zet allereerst het melden + weergeven van fouten aan door de volgende code toe te voegen aan het begin van je PHP-bestand:
<?php
error_reporting(E_ALL);
ini_set('display_startup_errors', true);
ini_set('display_errors', 'stdout');
?>


Vervolgens is het zaak om gewoon de eerste melding aan te pakken, deze op te lossen, en zo door alle foutmeldingen van het begin naar het einde heen te lopen.

Ik zie geen andere mogelijkheid dan deze stapsgewijze aanpak, want het is nogal lastig om het anders op afstand voor jou te debuggen.

Reageren