Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:13 Der er 15 kommentarer og
1 løsning

Ang. SQL deletes.

Godmorgen allesammen, jeg sider her med et af de sjove morgen problemer, man nogel gange har, jeg kan simpel hend ikke se logiken i noget...

Jeg er ved at lave et debat forum, det virker uden problemer men er nu ved at lave det sådan at når man sletter et emne så slettes under emnerne også, den sletter også emnet men under emnerne slettes ikke og jeg får en dum fejl... det skal lige siges at jeg bruger mdb, håber at nogle kan hjælpe:

id = request(\"id\")
deleteindlaeg = \"DELETE FROM forum_indlaeg WHERE id=\" + id
connection.execute(deleteindlaeg)

debatcomments_command = \"SELECT * FROM forum_comments\"
set debatcomments = connection.execute(debatcomments_command)

do until debatcomments.eof or debatcomments.bof

deletecomments = \"DELETE FROM forum_comments WHERE id=\" + debatcomments(\"id\")
connection.execute(deletecomments)
debatcomments.movenext
loop
Avatar billede Spotgun Seniormester
25. oktober 2001 - 09:22 #1
Hvis du nu lavede en relationel database, hvor du hookede dine comments op med dine indlæg, og tilføjede \"kaskadevis sletning af poster\", så kunne du nøjes med at fjerne selve indlægget, så klarer Access selv resten...
Avatar billede terry Ekspert
25. oktober 2001 - 09:23 #2
If you design your database correctly then you can get Access to delete your \"under emnerne\" automatically, using cascade events.

Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:26 #3
Ja, hvis det kunne hjælpe, så kan i da få hele sectionen ang. dette:

<%case \"deletedebatindlaeg\"
                        action = request(\"action\")
if action = \"delete\" then
id = request(\"id\")

deleteindlaeg = \"DELETE FROM forum_indlaeg WHERE id=\" + id
connection.execute(deleteindlaeg)

debatcomments_command = \"SELECT * FROM forum_comments\"
set debatcomments = connection.execute(debatcomments_command)

do until debatcomments.eof or debatcomments.bof

deletecomments = \"DELETE FROM forum_comments WHERE id=\" + debatcomments(\"id\")
connection.execute(deletecomments)

debatcomments.movenext
loop%>                       

<script language=\"JavaScript\">
window.location = \'admin.asp?page=admin&mode=debatoversigt\'
</script>

<%else
id = request(\"id\")%>

<script language=\"JavaScript\">
function jump(dist,id){
if(dist==\'accept\'){
window.location = \'admin.asp?page=admin&mode=deletedebatindlaeg&action=delete&id=\' + id;
}

if(dist==\'deny\'){
window.location = \'admin.asp?page=admin&mode=debatoversigt\'
}
}
</script>
<center>
<b>Er du sikker på at du vil slette dette forum ?</b><br><br>
<input type=\"button\" value=\" Ja \" onclick=\"jump(\'accept\',\'<%=id%>\')\">&nbsp;&nbsp;
<input type=\"button\" value=\" Nej \" onclick=\"jump(\'deny\',\'<%=id%>\')\">
</center>
<%end if%>
Avatar billede Spotgun Seniormester
25. oktober 2001 - 09:26 #4
...sig til hvis du har brug for hjælp til design af databasen. Det er ikke særligt svært! :o)
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:29 #5
Ja, det kunne jeg hvis jeg viste hvordan, jeg er ikke en Access mand 8==) men det burde jo være logisk på denne måde!!!

1. slet hovede emne
2. lav loop i under emner
3. slet under emner med indlaeg_id samme som emne id
4. loop end
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:30 #6
Jeg vil bare gerne have det til at virke, ikke noget med at leje med access nu 8=) regner med at skifte access ud med mysql så snart jeg får overbevist bossen 8=)
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:31 #7
med mysql skulle der hvist siges Gnu/Linux + MySql 8===)
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:33 #8
Spotgun> er det nu jeg skal sige \"TIL\"?

TIL-TIL-TIL-TIL-TIL-TIL
Avatar billede Spotgun Seniormester
25. oktober 2001 - 09:34 #9
Send mig din access DB tíl mig på spotgun@clandestine.dk så laver jeg de tilretninger der skal til, og får rettet dit script til...

Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:35 #10
Det er her problemet ligger!! eller måske inde i selve loopet!!

debatcomments_command = \"SELECT * FROM forum_comments\"
set debatcomments = connection.execute(debatcomments_command)

do until debatcomments.eof or debatcomments.bof

deletecomments = \"DELETE FROM forum_comments WHERE id=\" + debatcomments(\"id\")
connection.execute(deletecomments)

debatcomments.movenext
loop
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:38 #11
Jammen!!

kan man ikke lave et loop også slette inden i det loop?
lyder mærkeligt hvis det var det!!!

Jeg ville bare grene have haft logiken, så når jeg skifter til linux så var der ikke noget med nye sql statments eller ikke meget der skal ændres bordset fra asp til php 8=)
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:42 #12
Jeg kan ikke sende db\'en, den fylder over 1MB og hotmail tager max 1000KB 8=(
Avatar billede Spotgun Seniormester
25. oktober 2001 - 09:52 #13
Jo du kan sagtens lave din loop-løsning, den er bare ikke særligt smart, når du kan halvere din kode, og opnår en mere pålidelig funktionalitet...

Der er for mig ingen idé i at fortsætte med din loop-løsning, da det er at lave dobbeltarbejde.
Avatar billede Spotgun Seniormester
25. oktober 2001 - 09:58 #14
...du kan jo sammeligne din løsning med min på den her måde:

Vi har begge to hver en æske for rådne tomater vi skal smide ud.

Jeg smider hele æsken i skraldespanden og problemet er løst.

Du tager hver enkelt tomat og smider i skraldespanden, hvorefter du til sidst smider æsken væk...

...Hvem tror du selv der bliver først færdig, og mindst nasset på fingrene? :o)
Avatar billede kawaki Nybegynder
25. oktober 2001 - 09:59 #15
hmm
Avatar billede kawaki Nybegynder
25. oktober 2001 - 10:25 #16
Nå men så må jeg hellere prøve igen, ellers tak for de vise ord, selv om det ikke hjalp meget.
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
Computerworld tilbyder specialiserede kurser i database-management

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