Undefined offset: 1 in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Peter van Hummol

Peter van Hummol

17/04/2015 01:13:13
Quote Anchor link
require_once 'functions.php';

$query = "SELECT naam FROM personen";
$result = $connection->query($query);
if (!$result) die ("Database access failed: " . $connection->error);

$rows = $result->num_rows;
?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
for ($j = 0 ; $j < $rows ; ++$j)
{

    $result->data_seek($j);
    $row = $result->fetch_array(MYSQLI_NUM);
    
echo "<input type =\"submit\" name=\"naam\" value=\"$row[$j]\">";

}

?>



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
 
PHP hulp

PHP hulp

20/04/2024 14:47:21
 
- SanThe -

- SanThe -

17/04/2015 03:21:50
Quote Anchor link
Peter van Hummol op 17/04/2015 01:13:13:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<input type =\"submit\" name=\"naam\" value=\"$row[$j]\">";
?>

Maar nu ik de namen vanuit database opvraag. Gaat het mis,


Gebruik dus echo $row['veldnaam'].
 
Thomas van den Heuvel

Thomas van den Heuvel

17/04/2015 12:12:15
Quote Anchor link
Twee punten:

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)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>


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.
 
Peter van Hummol

Peter van Hummol

17/04/2015 13:28:37
Quote Anchor link
Bedankt voor de snelle en duidelijke uitleg! Het heeft mij weer een eind vooruit geholpen en stof om over na te denken gegeven :)
 



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.