ik heb een formulier om gegevens naar een database te sturen. Hier in zit een dropdown menu om een keuze te maken uit verschillende opties, die genereert worden uit een database. Dat ziet er zo uit:
<?php
include ("dbconnect.php");
echo "<select name=ob_type>";
$result_type = mysql_query("SELECT * FROM woningtype ORDER BY type_ID");
while ($row = mysql_fetch_array($result_type))
{
echo "<option value=\"".$row["type_ID"]."\">".$row["type_woning"]."</option>";
}
echo "</select>";
?>
Dit werkt op zich prima. Het probleem dat zich voordoet is echter op het moment dat ik het formulier oproep om waardes aan te passen, deze dropdown standaard op de bovenste optie staat en niet de eerder genoemde keuze.
Op wat voor manier roep je dat formulier op om waardes aan te passen. Zijn de eerder gemaakte keuzes voor deze select al eerder ergens vastgelegd (bijv in een database of sessie)?.
Als dat zo is zou je met een if-statement in je while loop kunnen controleren of een optie geselecteerd moet zijn en in dat geval de parameter 'selected=selected' meegeven aan je option tag.
[off-topic]
Ze je echo's tussen enkele quotes, dan hoef je de dubbele quotes van je html niet te escapen ;)
[/off-topic]
ik heb ongv hetzelfde probleem. Je hebt een dropdown menu waarbij je een waarde selecteert. Vervolgens schrijf je die in je DB. En wordt goed weergegeven. echter klik je op de edit knop oid kom je op de edit pagina en daarbij wordt de waarde van het dropdown menu op default gezet. bij mij is dit "- Kies een optie -" snappie?:)
Als je het formulier oproept, zou ik even kijken naar een script/ tutorial van Jan, die heeft daarin goed uitgelegd hoe je een dropdown kan laten maken, die de juiste keuze selecteerd.
Ik heb twee tabellen waarvan de dropdown (gegenereerd uit tabel: -status-) de waarde (status_ID) verstuurt naar een andere tabel: -klant-. Bij het updaten van een record uit klant met dezelfde dropdown liet hij dus de eerste waarde zien uit status en niet degene die ik al eerder aan deze klant had toegewezen. Mede dankzij Blanche heb ik het nu zo opgelost.
<?php
echo "<select name=kl_status>";
$result_status = mysql_query("SELECT * FROM status ORDER BY status_ID");
while ($row_status = mysql_fetch_array($result_status))
{
echo "<option value=\"".$row_status["status_ID"]."\"";
if ($row_klant["kl_status"] == $row_status["status_ID"])
echo " selected";
echo ">".$row_status["status_naam"]."</option>";
}
echo "</select>";
?>
Ik heb dat stukje even voor je herschreven, nu wordt het wel valide (X)HTML. Zoals jij het had niet.. Ik heb enkele quotes gebruikt voor de echo, zodat je de dubbele quotes, zoals het normaal ook gaat in (X)HTML code, gewoon kan gebruiken.
<?php
echo '<select name="kl_status">';
$result_status = mysql_query("SELECT * FROM status ORDER BY status_ID");
while ($row_status = mysql_fetch_array($result_status))
{
echo '<option value="'.$row_status["status_ID"].'"';
if ($row_klant["kl_status"] == $row_status["status_ID"])
echo ' selected="selected"';
echo '>'.$row_status["status_naam"].'</option>';
}
echo '</select>';
?>