Søgeformular til redigering/sletning
Hej eksperterSoftspot hjalp mig i http://www.eksperten.dk/spm/644086 med at kunne opdatere data i relaterede tabeller.
Men den løsning finder alle poster i databasen og henter dem ind i en formular. Det jeg ønsker er at kunne søge efter en post, få den vist og derefter redigere den.
Søgeformularen search.asp virker fint - bortset fra, at den henter samtlige poster frem. Den er her:
<form action="update_search_results.asp" method="POST">
<p><input type="text" name="keyword" size="40"><br>
<input type="submit" name="Action" value="Søg">
</p></form>
Redigeringsformularen update_search_results.asp viser som sagt alle poster - men den opdaterer fint. Redigeringsformularen er her:
<%
set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN
if Request.Form("Opdater") <> "" then
dim strSQL
dim fld
dim danUpdated
danUpdated = ","
for each fld in Request.Form
' Kontroller om det er et dansk-ord felt
if lcase(left(fld,5)) = "dansk" then
' udtræk id fra navnet på feltet
danid = right(fld,len(fld)-6)
' Kontroller om ordet er blevet opdateret tidligere i dette postback
if instr(1,danUpdated, "," & danid & ",") = 0 then
' hvis ikke tidligere opdateret, så gemmes id på ordet, så det
' ikke bliver opdateret flere gange i dette postback
danUpdated = danUpdated & danid & ","
strSQL = "UPDATE tbl_danish SET "
strSQL = strSQL & " Dansk='" & Replace(Request.Form("Dansk_" & danid), "'", "''") &"' "
strSQL = strSQL & " ,dk_ordklasse='" & Replace(Request.Form("dk_ordklasse_" & danid), "'", "''") &"' "
strSQL = strSQL & " ,dk_morfologi='" & Replace(Request.Form("dk_morfologi_" & danid), "'", "''") &"' "
strSQL = strSQL & " ,dk_synonym='" & Replace(Request.Form("dk_synonym_" & danid), "'", "''") &"' "
strSQL = strSQL & " ,dk_definition='" & Replace(Request.Form("dk_definition_" & danid), "'", "''") &"' "
strSQL = strSQL & " ,dk_eksempel='" & Replace(Request.Form("dk_eksempel_" & danid), "'", "''") &"' "
strSQL = strSQL & " WHERE id_dansk ="& danid
Conn.Execute(strSQL)
else
Response.Write("Been there! ("& fld &")<br>")
end if
end if
' Kontroller om det er et engelsk-ord felt
if lcase(left(fld,7)) = "engelsk" then
' Opdater det engelske ord og de tilhørende informationer
' til det engelske ord (klasse og orden)
engid = right(fld,len(fld)-8)
strSQL = "UPDATE tbl_english SET "
strSQL = strSQL & " Engelsk='" & Replace(Request.Form("Engelsk_" & engid), "'", "''") & "'"
strSQL = strSQL & ",uk_ordklasse='" & Replace(Request.Form("uk_ordklasse_" & engid), "'", "''") &"' "
strSQL = strSQL & ",uk_morfologi='" & Replace(Request.Form("uk_morfologi_" & engid), "'", "''") &"' "
strSQL = strSQL & ",uk_synonym='" & Replace(Request.Form("uk_synonym_" & engid), "'", "''") &"' "
strSQL = strSQL & ",uk_definition='" & Replace(Request.Form("uk_definition_" & engid), "'", "''") &"' "
strSQL = strSQL & ",uk_eksempel='" & Replace(Request.Form("uk_eksempel_" & engid), "'", "''") &"' "
strSQL = strSQL & ",Latin='" & Replace(Request.Form("Latin_" & engid), "'", "''") &"' "
strSQL = strSQL & ",Tysk='" & Replace(Request.Form("Tysk_" & engid), "'", "''") &"' "
strSQL = strSQL & ",Svensk='" & Replace(Request.Form("Svensk_" & engid), "'", "''") &"' "
strSQL = strSQL & ",Klasse='" & Replace(Request.Form("Klasse_" & engid), "'", "''") & "'"
strSQL = strSQL & ",Orden='" & Replace(Request.Form("Orden_" & engid), "'", "''") & "'"
strSQL = strSQL & " WHERE id_english ="& engid
Conn.Execute(strSQL)
end if
next
end if
%>
<script type="text/javascript">
function syncWords(obj) {
// Opdater alle de andre kontroller med samme navn når en
// kontrols indhold ændrer sig. Dette er nødvendigt da
// ordet refererer til den samme række i tabellen i databasen.
var wordValue = obj.value;
var wordInputs = document.getElementsByName(obj.name);
if(wordInputs.length > 1) {
for(var i = 0; i < wordInputs.length; i++) {
wordInputs[i].value = wordValue;
}
}
}
</script>
<%
'SQL- sætning henter data
strSQL = "SELECT tbl_danish.id_dansk, tbl_danish.Dansk, tbl_danish.dk_ordklasse, tbl_danish.dk_morfologi, tbl_danish.dk_synonym, tbl_danish.dk_definition, tbl_danish.dk_eksempel, tbl_english.id_english, tbl_english.Engelsk, tbl_english.uk_ordklasse, tbl_english.uk_morfologi, tbl_english.uk_synonym, tbl_english.uk_definition, tbl_english.uk_eksempel, tbl_english.Latin, tbl_english.Tysk, tbl_english.Svensk, tbl_english.Klasse, tbl_english.Orden "
strSQL = strSQL & "FROM tbl_danish INNER JOIN tbl_english ON tbl_danish.id_dansk = tbl_english.fr_dansk "
strSQL = strSQL & "ORDER BY LCase(tbl_danish.Dansk) "
Set rs = Conn.Execute(strSQL)
%>
<form action="<%=Request.ServerVariables("SCRIPT_NAME")%>" method="post">
<%
Do While Not rs.EOF
%>
<p>Dansk:<br>
<input type="text" value="<%=rs("Dansk")%>" name="Dansk_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Dansk ordklasse:<br>
<input type="text" value="<%=rs("dk_ordklasse")%>" name="dk_ordklasse_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Dansk morfologi:<br>
<input type="text" value="<%=rs("dk_morfologi")%>" name="dk_morfologi_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Dansk synonym:<br>
<input type="text" value="<%=rs("dk_synonym")%>" name="dk_synonym_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Dansk definition:<br>
<input type="text" value="<%=rs("dk_definition")%>" name="dk_definition_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p>Dansk eksempel:<br>
<input type="text" value="<%=rs("dk_eksempel")%>" name="dk_eksempel_<%=rs("id_dansk")%>" onchange="syncWords(this)" size="60">
</p>
<p> Engelsk:<br>
<input type="text" value="<%=rs("Engelsk")%>" name="Engelsk_<%=rs("id_english")%>" size="60">
</p>
<p>Engelsk ordklasse:<br>
<input type="text" value="<%=rs("uk_ordklasse")%>" name="uk_ordklasse_<%=rs("id_english")%>" onchange="syncWords(this)" size="60">
</p>
<p>Engelsk morfologi:<br>
<input type="text" value="<%=rs("uk_morfologi")%>" name="uk_morfologi_<%=rs("id_english")%>" onchange="syncWords(this)" size="60">
</p>
<p>Engelsk synonym:<br>
<input type="text" value="<%=rs("uk_synonym")%>" name="uk_synonym_<%=rs("id_english")%>" onchange="syncWords(this)" size="60">
</p>
<p>Engelsk definition:<br>
<input type="text" value="<%=rs("uk_definition")%>" name="uk_definition_<%=rs("id_english")%>" onchange="syncWords(this)" size="60">
</p>
<p>Engelsk eksempel:<br>
<input type="text" value="<%=rs("uk_eksempel")%>" name="uk_eksempel_<%=rs("id_english")%>" onchange="syncWords(this)" size="60">
</p>
<p>Latin:<br>
<input type="text" value="<%=rs("Latin")%>" name="Latin_<%=rs("id_english")%>" size="60">
</p>
<p> Tysk:<br>
<input type="text" value="<%=rs("Tysk")%>" name="Tysk_<%=rs("id_english")%>" size="60">
</p>
<p>Svensk:<br>
<input type="text" value="<%=rs("Svensk")%>" name="Svensk_<%=rs("id_english")%>" size="60">
</p>
<p>Klasse:<br>
<input type="text" value="<%=rs("Klasse")%>" name="Klasse_<%=rs("id_english")%>" size="60">
</p>
<p>Orden:<br>
<input type="text" value="<%=rs("Orden")%>" name="Orden_<%=rs("id_english")%>" size="60">
</p>
<p>
<input type="submit" value="Opdater" name="Opdater">
</p>
<%
rs.MoveNext
Loop
%>
</form>
<%
' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing
%>
Jeg er ASP-rookie og skal nok have det skåret ud i pap :))
