Har stött på patrull när jag ska försöka radera poster från databasen (mySQL),
jag vet inte riktigt hur jag ska göra för att göra det riktigt smidigt. ;)
Jag har en dynamiskt tree-navigation, som på sidan kan se ut så här, ex.
Jag stötte på patrull när jag nu försöker radera en hel kategori, ex. "Bilar",
som i exemplet ovan har en mängd underkategorier under sig.
Jag kan ju inte enbart gå på ID här utan det måste nog till en loop igenom hela
databasen för att kolla hur dom är relaterade till varande, annars kommer det bli
en massa spill kvar i databasen.. och det vill jag ju inte.
Någon som har nått bra tips eller idé på lösning? :)
Kan det här kanske funka? Har inte testat, men man kan ju hoppas. ;) (Om du inte ville ha det som en enda SQL-fråga?)
Sub DeleteTree(intId)
strSQL = "SELECT id FROM tbl WHERE cat_parent_id = " & intId
Set objRS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
Do Until objRS.EOF
DeleteTree objRS(0)
objRS.MoveNext
Loop
End If
objRS.Close : Set objRS = Nothing
strSQL = "DELETE FROM tbl WHERE id = " & intId
objConn.Execute(strSQL),,128
End Sub
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "..."
DeleteTree 10
objConn.Close : Set objConn = Nothing
Hur ser din tabelldefinition ut? Om cat_parent_id är foreign key till id (vilket den borde vara), så borde väl en cascade on delete kunna hjälpa dig? :q
Men det lär väl bli en rekursiv funktion i presentationslagret för att göra det.
Sub ShowTree(intId)
strSQL = "SELECT cat_name,id FROM tbl WHERE cat_parent_id = " & intId
Set RS = objConn.Execute(strSQL)
If NOT objRS.EOF Then
Do Until objRS.EOF
Response.write(RS(0)&" | "& RS(1) &"<br>")
ShowTree RS(0)
objRS.MoveNext
Loop
End If
End Sub
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "..."
ShowTree 10
objConn.Close : Set objConn = Nothing
Det kan vara att min kåd är felskriven men, skall du hämta alla underliggande "kategorier" så måste det väl vara någon form av rekursiv funktion. Eventuellt så kan man med en SP i MsSql göra det samma, vet inte riktigt.
Det kan vara att min kåd är felskriven men, skall du hämta alla underliggande "kategorier" så måste det väl vara någon form av rekursiv funktion. Eventuellt så kan man med en SP i MsSql göra det samma, vet inte riktigt.
Nja.. jag hade, innan jag postade här, testat en liknande funktion.. men när funktionen gjort
några 1000 loopar/execute så fick jag det där felmeddelandet.. så jag tror inte att en sådan
funktion är tillräckligt stabil för att jag skulle använda den. :OO
Jag använder som sagt mySQL här så någon SP kan jag heller inte skapa. *suck* :x
266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e