Hur får man ett "SELECTED VALUE" att välja det som står i databasen?
Håller på att göra en sida där man skall kunna redigera sina uppgifter som man tidigare lagt in. Nu vill jag att denna rullningslist skall hämta det värde som står i databasen, och sätta det som "selected value". Den man valde när man registrerade sig skall alltså vara vald.
<code>
<select name="katt">
<option value="klas">Choklad
<option value="ledn">Vanilj
<option value="ovri">Jordgubb
</select>
</code>
Och så här hämtar jag infon från databasen.
<code>
<% =RecSet("Category") %>
</code>
Finns det nått enkelt sätt att lösa detta?
Svara
Sv: Hur får man ett "SELECTED VALUE" att välja det som står i databasen?
Tja, enklast möjligast är väl så här:
<code>
<select name="katt">
<option value="klas" <% If (RecSet("Category") = "klas") Then Response.Write " selected " %>>Choklad
<option value="ledn" <% If (RecSet("Category") = "ledn") Then Response.Write " selected " %>>Vanilj
<option value="ovri" <% If (RecSet("Category") = "ovri") Then Response.Write " selected " %>>Jordgubb
</select>
</code>
Du kan ev behöva trimma (trim) bort tomrum i strängen från databasen.
Då skriver du så här istället:
<code>
IF (trim(RecSet("Category")) = "klas") Then Response.Write " selected "
</code>
Lycka till!
MVH
Fredrik
Svara
Sv: Hur får man ett "SELECTED VALUE" att välja det som står i databasen?
Hämtas värdena från ett recordset eller är de statiska?
<code>
<select name="katt">
<%
Dim Value
Dim Values
Values = Array(Array("klas", "Choklad"), Array("ledn", "Vanilj"), Array("ovri", "Jordgubb"))
For Each Value In Values
If Value(0) = RecSet("Category") Then
Response.Write " <option value=""" & Server.HTMLEncode(Value(0)) & """ selected>" & Server.HTMLEncode(Value(0)) & "</option>"
Else
Response.Write " <option value=""" & Server.HTMLEncode(Value(0)) & """>" & Server.HTMLEncode(Value(0)) & "</option>"
End If
Next
%>
</select>
</code>
Eller från en databas med recordset:
<% Sub WriteOptions(Recordset, ValueField, TextField, Value) Do Until Recordset.EOF If ValueField = Value Then Response.Write " <option value=""" & Server.HTMLEncode(ValueField) & """ selected>" & Server.HTMLEncode(TextField) & "</option>" Else Response.Write " <option value=""" & Server.HTMLEncode(ValueField) & """>" & Server.HTMLEncode(TextField) & "</option>" End If Recordset.MoveNext Loop End Sub %> <select name="katt"> <% Dim rsSelect Set rsSelect = conn.Execute("SELECT CategoryId, CategoryName FROM Categories ORDER BY CategoryName") WriteOptions rsSelect, rsSelect("CategoryId"), rsSelect("CategoryName"), RecSet("Category") rsSelect.Close %> </select>
Svara
Sv: Hur får man ett "SELECTED VALUE" att välja det som står i databasen?
Jag brukar använda mig av javascript:
<code>
<select name="katt">
<option value="Adam">Adam
<option value="Bertil">Bertil
<option value="Ceasar">Ceasar
</select>
<script language="javascript">
var u = '<%=RecSet("Category")%>';
while (document.forms.FORM.katt.value!=u)
{
document.forms.FORM.katt.selectedIndex ++;
}
</script>
</code>
Det är lättare om du bara sätter själva selectedIndex att sparas i databasen, då kan du sätta
<code>
<script language="javascript">
document.forms.FORM.katt.selectedIndex = <%=RecSet("Category")%>;
</script>
Mycket enkelt.
Svara
Sv:Hur får man ett "SELECTED VALUE" att välja det som står i databasen?
Spara index? Det tycker jag är fel. Vad händer om ett nytt val tillkommer mellan de tidigare? Då kommer data bli korrupt. Att lagra index är fel.
Svara