Avatar billede steen_hansen Forsker
13. oktober 2004 - 09:29 Der er 22 kommentarer og
2 løsninger

Kan ikke slette RS

Hvorfor virker det ikke? Jeg mangler nok en delete i <input type="hidden" name="ToDo" value="updatemain">, men man kan jo ikke bare skrive value="updatemain, delete" eller value="updatemain delete"

<%
id = Request("ID")
navn = Request("menunavn")
prioritet = Request("prioritet")
ToDo = Request("ToDo")

If ToDo = "updatemain" Then
    Conn.Execute("UPDATE menumain SET mainmenu='" & navn & "', priorityID=" & prioritet & " WHERE id=" & id)
    Response.Redirect("view.asp")
ElseIf ToDo = "updatemain" Then
    Conn.Execute "DELETE FROM menumain WHERE ID = " & id
    Conn.Execute "DELETE FROM menusub WHERE parent = " & id
    Response.Redirect "view.asp"
Else
    Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & navn & "', " & prioritet & ")")
    Response.Redirect("view.asp")
End If
Conn.Close
%>

<form name="opdatermenu<%=i%>" action="updatemain.asp" method="post">
<tr>
    <input type="hidden" name="ID" value="<%=RS("ID")%>">
    <input type="hidden" name="ToDo" value="updatemain">
    <a href="#" onclick="if(confirm('Er du sikker?\nDenne hovedmenu med tilhørende undermenuer vil blive slettet!')) window.location.href='view.asp?ToDo=delete&id=<%=Server.URLEncode(RS("ID"))%>'" onfocus="this.blur();">Slet</a>
</tr>
</form>
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 10:50 #1
If ToDo = "updatemain" Then
...
ElseIf ToDo = "updatemain" Then
...
Else
...
End If

Hvis strengværdien ToDo er lig "updatemain" udføres det der står i første if sætning hvis ToDo er alt andet end "updatemain" udføres det der står i nederste else.
Det der står i ElseIf udføres aldrig.

Jeg er ikke helt sikker på hvad du vil, men du skal nok have fat i en vb script funktion der finder ud af om en streng indeholder en bestemt substring. Mener der er en SubString().

Alt efter hvad det er du vil skal det se nogenlunde således ud:

If SubString(ToDo, "updatemain") Then
...
ElseIf SubString(ToDo, "delete") Then
...
Else
...
End If

Eller sådan:

If SubString(ToDo, "updatemain") Then
...
If SubString(ToDo, "delete") Then
...
End If
Else
...
End If

Håber det var noget i den retning du var ude efter
Avatar billede steen_hansen Forsker
13. oktober 2004 - 10:59 #2
Det kan være, jeg kan ikke lige gennemskue dit forslag, for du mente vel (i toppen af dit indlæg):

If ToDo = "updatemain" Then
...
ElseIf ToDo = "delete" Then
...
Else
...
End If


Det næste spørgsmål er så, hvordan jeg får delete ind i value på denne her:

<input type="hidden" name="ToDo" value="updatemain">

Her skulle værdien vel gerne kunne være "updatemain" eller "delete"?
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:15 #3
Ok, jeg har lige nærlæst det med SubString, prøver at kigge lidt nærmere på det. Men den er lidt kringlet, synes jeg :/
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:17 #4
Problemet ligge i denne her:

<input type="hidden" name="ToDo" value="updatemain">

Hvordan får jeg den til at se sådan her ud?

<input type="hidden" name="ToDo" value="delete">
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:22 #5
Eller kan sætte en ekstra hidden ind, som kan klare opgaven:

<%
id = Request("ID")
navn = Request("menunavn")
prioritet = Request("prioritet")
ToDo = Request("ToDo")
deletemain = Request("deletemain")

If ToDo = "udpatemain" Then
    Conn.Execute("UPDATE menumain SET mainmenu='" & navn & "', priorityID=" & prioritet & " WHERE id=" & id)
    Response.Redirect("view.asp")
Else
    Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & navn & "', " & prioritet & ")")
    Response.Redirect("view.asp")
End If

If deletemain = "delete" Then
    Conn.Execute "DELETE FROM menumain WHERE ID = " & id
    Conn.Execute "DELETE FROM menusub WHERE parent = " & id
    Response.Redirect "view.asp"
End If

Conn.Close
%>

<form>
    <input type="hidden" name="ToDo" value="opdater">
    <input type="hidden" name="delete" value="delete">
<a href="#" onclick="if(confirm('Er du sikker på, at du vil slette denne hovedmenu med tilhørende undermenuer?\nDenne handling kan ikke fortrydes!')) window.location.href='view.asp?deletemain=delete&id=<%=Server.URLEncode(RS("ID"))%>'" onfocus="this.blur();">Slet</a>
</form>
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:22 #6
Ups, en lille smutter:

<%
id = Request("ID")
navn = Request("menunavn")
prioritet = Request("prioritet")
ToDo = Request("ToDo")
deletemain = Request("deletemain")

If ToDo = "udpatemain" Then
    Conn.Execute("UPDATE menumain SET mainmenu='" & navn & "', priorityID=" & prioritet & " WHERE id=" & id)
    Response.Redirect("view.asp")
Else
    Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & navn & "', " & prioritet & ")")
    Response.Redirect("view.asp")
End If

If deletemain = "delete" Then
    Conn.Execute "DELETE FROM menumain WHERE ID = " & id
    Conn.Execute "DELETE FROM menusub WHERE parent = " & id
    Response.Redirect "view.asp"
End If

Conn.Close
%>

<form>
    <input type="hidden" name="ToDo" value="opdater">
    <input type="hidden" name="deletemain" value="delete">
<a href="#" onclick="if(confirm('Er du sikker på, at du vil slette denne hovedmenu med tilhørende undermenuer?\nDenne handling kan ikke fortrydes!')) window.location.href='view.asp?deletemain=delete&id=<%=Server.URLEncode(RS("ID"))%>'" onfocus="this.blur();">Slet</a>
</form>
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 11:24 #7
Ok nu er jeg med.

Du behøver selvfølgelig ikke SubString. Jeg misforstod bare det du skrev med "updatemain, delete".

Du kunne lave en knap således at når brugeren klikker udføres:

onClick="opdatermenu<%=i%>.ToDo.value='delete'"

og en anden knap:

onClick="opdatermenu<%=i%>.ToDo.value='updatemain'"

...men jeg er ikke helt sikker på hvordan du vil bestemme om der skal opdateres eller slettes!



Det jeg skrev øverst i mit indlæg var bare en kopi af din kode. Jeg konstaterede bare at ElseIf sætningen aldrig ville blive udført.
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:36 #8
Så burde der næsten laves 2 knapper, en til at opdatere med, og en anden til at slette med? Eller det, som jeg som udgangspunkt har lavet, nemlig linket:

<a href="#" onclick="if(confirm('Er du sikker på, at du vil slette denne hovedmenu med tilhørende undermenuer?\nDenne handling kan ikke fortrydes!')) window.location.href='view.asp?deletemain=delete&id=<%=Server.URLEncode(RS("ID"))%>'" onfocus="this.blur();">Slet</a>
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:37 #9
Nej, det var noget rod, jeg havde fået lavet :o)
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 11:37 #10
De nye forslag du kommer med er egentlig gode nok, bortset fra at både update og delete altid vil blive udført. Jeg går ikke ud fra at det er det du vil!
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 11:44 #11
Ok nu er den her tråd vist gået helt i kage.

Dit post kl 11:36:19 er ikke så tosset, men du kan nøjes med at bruge ToDo.
Lav 2 knapper. Den ene med:

window.location.href='view.asp?ToDo=updatemain....osv

og den anden med:

window.location.href='view.asp?ToDo=delete....osv

If else strukturen skal så være:

If ToDo = "updatemain" Then
...
ElseIf ToDo = "delete" Then
...
Else
...
End If
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:46 #12
Der sker ikke en dyt, når jeg forsøger at slette, men jeg lægger lige noget opdateret kode:

id = Request("ID")
navn = Request("menunavn")
prioritet = Request("prioritet")
ToDo = Request("ToDo")
deletemain = Request("deletemain")

If ToDo = "updatemain" Then
    Conn.Execute("UPDATE menumain SET mainmenu='" & navn & "', priorityID=" & prioritet & " WHERE id=" & id)
    'Response.Redirect("editmenu.asp?status=1&menuID=" & id)
    Response.Redirect("view.asp")
Else
    Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & navn & "', " & prioritet & ")")
    Response.Redirect("view.asp")
End If

If deletemain = "delete" Then
    Conn.Execute "DELETE FROM menumain WHERE ID = " & id
    Conn.Execute "DELETE FROM menusub WHERE parent = " & id
    Response.Redirect "view.asp"
End If

Conn.Close
%>

<form>
    <input type="hidden" name="ToDo" value="updatemain">
    <input type="hidden" name="deletemain" value="delete">
    <a href="#" onclick="if(confirm('Er du sikker på, at du vil slette denne hovedmenu med tilhørende undermenuer?\nDenne handling kan ikke fortrydes!')) window.location.href='view.asp?deletemain=delete&id=<%=Server.URLEncode(RS("ID"))%>'" onfocus="this.blur();">Slet</a>
</form>
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:49 #13
Ok, men dit indlæg fra 13/10-2004 11:44:35 indeholder linket, gør det ikke:

window.location.href='view.asp?ToDo=delete

Kan du sætte det op?
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 11:49 #14
Virker update?
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:50 #15
Ok, nu går det stærkt med indlæggene, og de bliver filtret lidt ind i hinanden :oD Men jeg så også, at jeg vistnok mangler en *

Conn.Execute "DELETE FROM menumain WHERE ID = " & id

skal vel være

Conn.Execute "DELETE * FROM menumain WHERE ID = " & id
Avatar billede steen_hansen Forsker
13. oktober 2004 - 11:52 #16
update virker fint. Når jeg trykker på linket "Slet", virker det som om, at der bliver slettet, det tager lige et sekund eller halvandet, men intet bliver slettet.
Avatar billede steen_hansen Forsker
13. oktober 2004 - 12:17 #17
Fedest, nu er siden nede. Smutter i byen og håber de har fået den op at køre, når jeg kommer tilbage.
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 12:33 #18
Ok håber du får det til at virke. Lyder mærkeligt at delete ikke virker. Det eneste jeg lige kan komme på er at prøve at erstatte:

ToDo = Request("ToDo")

med

ToDo = Request.Querystring("ToDo")
Avatar billede steen_hansen Forsker
13. oktober 2004 - 12:37 #19
Men det forudsætter, at man får lavet en If ... Then ... End If

Det var derfor jeg prøvede at dele det lidt mere op :/

Siden er kommet op at køre igen :)
Avatar billede nheilbuth Nybegynder
13. oktober 2004 - 12:43 #20
Du slipper ikke for en if...then...end if
Medmindre du bruger mere end én asp side, og det bliver det jo kun mere indviklet af.
Avatar billede steen_hansen Forsker
13. oktober 2004 - 14:14 #21
Hmmm? Ok, jeg lader billedet stå et øjeblik og håber på, at der er andre, der melder sig med en fed løsning.

Du skal foreløbigt have 1000 tak forhjælpen, nheilbuth :o)
Avatar billede steen_hansen Forsker
13. oktober 2004 - 22:49 #22
Jeg fik hjælp af rbl. Kan du ikke lægge et svar? Her er løsningen:)


<%
id = Request("ID")
navn = Request("menunavn")
prioritet = Request("prioritet")
ToDo = Request("ToDo")

If ToDo = "opdater" Then
    Conn.Execute("UPDATE menumain SET mainmenu='" & navn & "', priorityID=" & prioritet & " WHERE id=" & id)
    Response.Redirect("editmenu.asp?status=1&menuID=" & id)
ElseIf ToDo = "delete" Then
    Conn.Execute "DELETE FROM menumain WHERE ID = " & id
    Conn.Execute "DELETE FROM menusub WHERE parent = " & id
    Response.Redirect "view.asp"
Else
    Conn.Execute("INSERT INTO menumain (mainmenu, priorityID) VALUES('" & navn & "', " & prioritet & ")")
    Response.Redirect("view.asp")
End If
Conn.Close
%>
Avatar billede rbl Praktikant
13. oktober 2004 - 23:13 #23
Jo, det kan jeg da godt :-)
Avatar billede steen_hansen Forsker
13. oktober 2004 - 23:18 #24
Takker for hjælpen, begge 2 :)

nheilbuth får 20 point for den store indsats, og rbl får 40 for den korrekte løsning. Håber det er til alles tilfredsstillelse? Tak til begge, nye bedste venner :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester