Undefined offset: 1 in
$query = "SELECT naam FROM personen";
$result = $connection->query($query);
if (!$result) die ("Database access failed: " . $connection->error);
$rows = $result->num_rows;
?>
Code (php)
Notice: Undefined offset: 1 in
Ik heb mijn submit knop naar een andere pagina gelinkt. Zodat ik daar met een variable van die zelfde knop de pagina kan beïnvloeden. Toen ik dit deed vanuit de index pagina met een array (om het te testen), lukte het wel om vanuit die array de knoppen in een loop te creëer en correct te linken naar de andere pagina. Maar nu ik de namen vanuit database opvraag. Gaat het mis, mijn kennis is nog te beperkt om precies te weten wat er nu mis gaat. Ik denk zelf dat ik de informatie van de database niet goed in een Array zet, of dat mijn loop niet goed is, want het eerste resultaat word namelijk wel getoont. Ik heb al veel gegoogeld en met mijn beperkte kennis proberen te testen waar het nu precies fout gaat. Zou iemand mij kunnen verder helpen? Alle verder feedback is ook welkom natuurlijk :D
Peter van Hummol op 17/04/2015 01:13:13:
Maar nu ik de namen vanuit database opvraag. Gaat het mis,
Maar nu ik de namen vanuit database opvraag. Gaat het mis,
Gebruik dus echo $row['veldnaam'].
1. de manier waarop je je resultaten ophaalt is redelijk omslachtig; je "scrollt" elke keer naar de juiste rij om resultaten op te halen, en haalt dan precies één rij op; maar er wordt ook een "pointer" bijgehouden wat de laatste opgehaalde rij was (of wat de eerste op te halen rij moet zijn), je zou dus kunnen volstaan met een while-loop; daarnaast is het -zoals SanThe aangeeft- handig om met kolomnamen te werken in plaats van met posities.
Voorbeeld van gebruik met while:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$result = $connection->query('SELECT naam FROM personen');
if ($result === false) {
// geef nette foutmelding
?><p>Query fout.</p><?php
} else {
// fetch_assoc() geeft NULL terug als er geen rijen meer op te halen zijn, wat de while-loop beeindigt
while ($row = $result->fetch_assoc()) {
echo $row['naam'].'<br />';
}
}
// geef (geheugen van) resultaat vrij
$result->free();
?>
$result = $connection->query('SELECT naam FROM personen');
if ($result === false) {
// geef nette foutmelding
?><p>Query fout.</p><?php
} else {
// fetch_assoc() geeft NULL terug als er geen rijen meer op te halen zijn, wat de while-loop beeindigt
while ($row = $result->fetch_assoc()) {
echo $row['naam'].'<br />';
}
}
// geef (geheugen van) resultaat vrij
$result->free();
?>
2. je verwart rijen met kolommen; $rows bevat het aantal resultaatrijen, vervolgens gebruik je deze om van elke rij "$rows kolommen" op te halen, terwijl elke resultaatrij maar één kolom heeft: de naam van een persoon. Het gaat dus mis als je meer dan een persoon in je database is opgeslagen, je probeert dan de tweede kolom ($row[1] - je begint te nummeren vanaf 0) uit te lezen die niet bestaat, wat resulteert in je undefined offset foutmelding.
Bedankt voor de snelle en duidelijke uitleg! Het heeft mij weer een eind vooruit geholpen en stof om over na te denken gegeven :)