Ik heb een formulier waarbij velden vanuit een db in een dropdown worden gezet. Ik wil graag de regel die al geselecteerd is in de db, ook op de webpagina geselecteerd hebben. Dit is nu mijn code:


<select name="rubrieken">
	<? mysql_set_charset('utf8');
    $query = mysql_query("SELECT * FROM tabelnaam ORDER BY naam ASC") or die (mysql_error());
    while ($uitkomst = mysql_fetch_array($query)){
    $naam = $uitkomst["naam"];
    $id = $uitkomst["id"]; 
    ?>
<option value="<? echo $id; ?>"><? echo $naam; ?></option>  
<? } ?>
</select>


Om de juiste regel al te selecteren heb ik de regel in de while lus aangepast naar:

<option  [b]<? if ($id == $rubriek_id) { ?> selected  <? } else { } ?> [/b]value="<? echo $id; ?>"><? echo $naam; ?></option> 

(Opmerking: De variabele $rubriek_id wordt hoger in de pagina al uit een andere tabel gehaald.

Het probleem is dat door deze toevoeging de variabele $id gelijk gemaakt wordt aan de $rubriek_id. Dus elke option value wordt in de lus gezien als dezelfde waarde. Wat doe ik fout?
Gelieve je gehele code tussen [code] en [/code] tags plaatsen.
De mysql_* functies die je gebruikt zijn 'deprecated' en zullen op termijn vervallen. Kijk eens naar de mysqli_* functies.
Sorry, ik zag het ook inderdaad. Heb ik meteen aangepast.

Heb nog geen ervaring met MySQLi, ga ik naar kijken. Moet ik daar ook de oplossing voor mijn probleem zoeken?
Het selecteren van de goede waarde zou als volgt moeten kunnen werken.
<?php
echo '<select name="rubrieken">';
$query = mysql_query("SELECT * FROM tabelnaam ORDER BY naam ASC") or die (mysql_error());

while ($uitkomst = mysql_fetch_array($query)){
echo '<option value="' . $uitkomst["id"] . '"';
if(isset($rubriek_id,$uitkomst['id']) && $rubriek_id == $uitkomst['id']) {
echo ' selected';
}
echo '>' . $uitkomst["naam"] . '</option>'
}
echo '</select>';
?>

>> Heb nog geen ervaring met MySQLi, ga ik naar kijken. Moet ik daar ook de oplossing voor mijn probleem zoeken?
Nee het is alleen een waarschuwing dat deze functie op termijn verdwijnt. De functies worden niet meer aangeraden voor nieuwe code. De MySQLi functies zijn redelijk identiek en dus niet heel lastig om aan te passen.
Bedankt voor de opmerking. Heeft iemand nog een tip voor dit probleem?
De code die ik plaatste werkte niet? Zo niet, zou je dan meer willen laten zien waar $rubriek_id vandaan komt?
Sorry, ik reageerde alleen op de opmerking over MySQLi.
De code werkt inderdaad, bedankt! (Op een puntkomma in regel 10 na.) Ik heb het toegepast nu en ga me nog even inlezen op de mogelijkheden van ISSET.

Dit probleem is opgelost, dank!
Ik zie dat ik inderdaad een ; ben vergeten :)
isset doet niks anders dan, zoals de naam al zegt, controleren of iets is ge-set wat dan weer niks anders betekend dan 'of ie bestaat'. Een variabele kan daarvoor gewoon leeg zijn, als ie maar is aangemaakt.

Reageren