15. oktober 2004 - 23:59Der er
23 kommentarer og 1 løsning
Tjek om indtastet ID allerede findes
Jeg er ved at lave en dynamisk menu, hvor brugeren skal indtaste en prioritet på menupunktet. Det øverste punkt skal have den mindste værdi (f.ek. 1). Det næstøverste punkt får så værdien 2, og så fremdeles.
Hvordan tjekkes det, at et allerede benyttet ID ikke indtastes igen? Håber I forstår, ellers spørg.
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
På den side hvor du gemmer prioriteten, skal du have følgende kode:
prioritet = request("priorityID") set antal = conn.execute("select count(id) as antal from menumain where priorityID =" & prioritet) if antal("antal") > 0 then 'fejlbesked else 'gem prioriteten end if
Syntax error (missing operator) in query expression 'priorityID ='.
/borch/admin/menus/updatemain.asp, line 17
Og her er koden:
<!-- #include virtual="/borch/includes/conn.asp" --> <% id = Request("ID") vName = Request("nameofmainmenu") vPriority = Request("mainpriority") ToDo = Request("ToDo")
If ToDo = "updatemain" Then Conn.Execute("UPDATE menumain SET mainmenu='" & vName & "', priorityID=" & vPriority & " WHERE id=" & id) Response.Redirect("editmain.asp?status=1&editmain=" & vName & "") ElseIf ToDo = "delete" Then Conn.Execute "DELETE FROM menumain WHERE ID = " & id Conn.Execute "DELETE FROM menusub WHERE parent = " & id Response.Redirect("editmain.asp?status=2&deletedmainmenu=" & vName & "") Else Response.Write priorityID ChechPriorityID = Request("priorityID") SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & ChechPriorityID) If antal("antal") > 0 Then Response.Write "Denne ID er allerede taget" 'fejlbesked Else Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & vName & "', " & vPriority & ")") End If
Response.Redirect("editmain.asp?status=3&newmainmenu=" & vName & "") End If Conn.Close %>
<!-- #include virtual="/borch/includes/conn.asp" --> <% id = Request("ID") vName = Request("nameofmainmenu") vPriority = Request("mainpriority") ToDo = Request("ToDo")
If ToDo = "updatemain" Then Conn.Execute("UPDATE menumain SET mainmenu='" & vName & "', priorityID=" & vPriority & " WHERE id=" & id) Response.Redirect("editmain.asp?status=1&editmain=" & vName & "") ElseIf ToDo = "delete" Then Conn.Execute "DELETE FROM menumain WHERE ID = " & id Conn.Execute "DELETE FROM menusub WHERE parent = " & id Response.Redirect("editmain.asp?status=2&deletedmainmenu=" & vName & "") Else CheckPriorityID = Request("priorityID") SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & CheckPriorityID) If antal("antal") > 0 Then Response.Write "Denne ID er allerede taget" 'fejlbesked Else Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & vName & "', " & vPriority & ")") End If
Response.Redirect("editmain.asp?status=3&newmainmenu=" & vName & "") End If Conn.Close %>
<!-- #include virtual="/borch/includes/conn.asp" --> <% id = Request("ID") vName = Request("nameofmainmenu") vPriority = Request("mainpriority") ToDo = Request("ToDo")
If ToDo = "updatemain" Then SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & vPriority) If antal("antal") > 0 Then Response.Write "Denne ID er allerede taget" 'fejlbesked Else Conn.Execute("UPDATE menumain SET mainmenu='" & vName & "', priorityID=" & vPriority & " WHERE id=" & id) Response.Redirect("editmain.asp?status=1&editmain=" & vName & "") end if ElseIf ToDo = "delete" Then Conn.Execute "DELETE FROM menumain WHERE ID = " & id Conn.Execute "DELETE FROM menusub WHERE parent = " & id Response.Redirect("editmain.asp?status=2&deletedmainmenu=" & vName & "") Else SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & vPriority) If antal("antal") > 0 Then Response.Write "Denne ID er allerede taget" 'fejlbesked Else Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & vName & "', " & vPriority & ")") End If
Response.Redirect("editmain.asp?status=3&newmainmenu=" & vName & "") End If Conn.Close %>
Din Response.Write "Denne ID er allerede taget" vil aldrig blive vist, da den redirecter til en anden side med det samme. Istedet kan du måske bruge: Response.Redirect("editmain.asp?status=4")
hvor status=4 giver fejlmeddelelsen på editmain.asp
Det kan vel også blive ved oprettelse, hvis jeg laver det på denne måde:
<!-- #include virtual="/borch/includes/conn.asp" --> <% id = Request("ID") vName = Request("nameofmainmenu") vPriority = Request("mainpriority") ToDo = Request("ToDo")
If ToDo = "updatemain" Then SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & vPriority) If antal("antal") > 0 Then Response.Write "Denne ID er allerede taget" 'fejlbesked Else Conn.Execute("UPDATE menumain SET mainmenu='" & vName & "', priorityID=" & vPriority & " WHERE id=" & id) Response.Redirect("editmain.asp?status=1&editmain=" & vName & "") End If ElseIf ToDo = "delete" Then Conn.Execute "DELETE FROM menumain WHERE ID = " & id Conn.Execute "DELETE FROM menusub WHERE parent = " & id Response.Redirect("editmain.asp?status=2&deletedmainmenu=" & vName & "") Else SET antal = Conn.Execute("SELECT count(id) AS antal FROM menumain WHERE priorityID =" & vPriority) If antal("antal") > 0 Then Response.Redirect("editmain.asp?status=4") Else Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & vName & "', " & vPriority & ")") End If
Response.Redirect("editmain.asp?status=3&newmainmenu=" & vName & "") End If Conn.Close %>
- og på editmain.asp udskriver fejlen, hvis status=4?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.