Avatar billede drago Nybegynder
23. juni 2003 - 19:47 Der er 12 kommentarer og
2 løsninger

Slette/flytte flere brugere med checkbokse

Hej!
Hvordan kan jeg slette/flytte flere felter/poster/brugere i min Access database. Alle brugere bliver listet på en side, for hver bruger er der en checkboks med unik id (faktisk den i DB'en).

Så for neden er der 2 bokse den ene: 'Slet' og den anden 'Flyt'. Det er faktisk Hotmail metoden jeg vil vide, der kan man også markere flere emails og slette/flytte dem :D

Sletningen skal bare slette alle de markerede brugere.
MEN flytningen skal flytte AL data for vedkommende bruger over i en anden tabel (som har samme struktur som brugeren pt. ligger i) så der er ingen problemer med felt navne, men det er bare at flytte ALLE de markerede brugere...

Men er der nogen der kan hjælpe mig - plzz?
Belønningen er jo max. ;)

Mvh,
Drago
Avatar billede somaliomar Praktikant
23. juni 2003 - 19:56 #1
Må vi se din nuværende kode?
Avatar billede drago Nybegynder
23. juni 2003 - 19:58 #2
If Request.QueryString("brugerslet") <> "" Then
Set DBConn = Server.CreateObject("adodb.Connection")
DBConn.Open strConnect
'Set rsSlet =  Server.CreateObject("ADODB.recordset")
strSQL = "DELETE FROM "&Request.QueryString("brugerslet")&" WHERE bruger_id = "&Request.QueryString("slet")&""
DBConn.Execute(strSQL)
Session.Abandon()
Response.Redirect("brugerlist.asp?hold="& Request.QueryString("holdslet")&"")
DBConn.Close
Set DBConn = Nothing
Avatar billede drago Nybegynder
23. juni 2003 - 20:00 #3
Det er sletkoden...
Flyttekoden har jeg endnu ikke lavet...

Men foreslag til sletningen er en evt. funktion...:

function handleThis(input)
  inputArray = split(input, ", ")
  for i = lbound(inputArray) to ubound(inputArray)
 
  handleThis = handleThis & "drenge1_id = " & inputArray (i)
handleThis = left(handleThis, len(handleThis)-2)
end function

Men ved ikke rigtig...

Mvh,
Drago
Avatar billede drago Nybegynder
23. juni 2003 - 20:00 #4
Ikke drenge1_id men bruger_id!!!
Avatar billede drago Nybegynder
23. juni 2003 - 20:03 #5
Og så skal SQL sætningen selvf. lyde:
strSQL = "DELETE FROM "&Request.QueryString("brugerslet")&" WHERE "& handleThis(request.querystring("slet"))&""
Avatar billede somaliomar Praktikant
23. juni 2003 - 20:17 #6
Kan vi komme til at se hele koden for brugerlist.asp så vi slipper for at gætte hvilken del af koden du vil have hjælp til?
Avatar billede drago Nybegynder
23. juni 2003 - 20:29 #7
Øhh, jeg har jo ikke noget kode til det der pt.
Håbede I kunne hjælpe mig med det... Altså selve SQL-strengen f.eks.

Jeg har programmeret i ASP lang tid. Problemet er at jeg aldrig har lavet noget ligende som det her før... Så kan du give sådan noget som retninger... Så kunne jeg selv kode det...

Men jeg står jo på bar bund, for har ingen anelser hvor jeg skal begynde og starte...

-Drago
Avatar billede somaliomar Praktikant
26. juni 2003 - 10:36 #8
Hvis du ikke allerede har fundet en løsning på dit problem, tjek det her.

Du kan lave en liste over alle de brugere du har i din database sådan her:

<%

Response.Write("<form action=""user_actions.asp"" method=""post"">")
Response.Write("<input type=""radio"" name=""action"" value=""delete""> Slet")
Response.Write("<input type=""radio"" name=""action"" value=""move""> Flyt")
Response.Write("<table>")
Response.Write("<tr>")
Response.Write("<td></td>")
Response.Write("<td></td>")
Response.Write("<td>Brunernavn</td>")
Response.Write("</tr>")

Set DBConn = Server.CreateObject("adodb.Connection")
DBConn.Open strConnect
strSQL = "SELECT UserId, UserName FROM Users"
set rs = DBConn.Execute(strSQL)
rs.ActiveConnection = Nothing
DBConn.Close
Set dbconn = Nothing

While Not rs.EOF
  Response.Write("<tr>")
  Response.Write("<td><input type=""checkbox"" name=""usrid" & rs("UserId") & """></td>")
  Response.Write("<td>" & rs("UserName") & "</td>")
  Response.Write("</tr>")
Wend

Response.Write("</table>")
Response.Write("<input type=""submit"" value=""Do something"">")
Response.Write("</form>")
%>


Når man submit'er formen bliver dataene sendt til user_actions.asp som kan se sådan ud:

<%
Response.Expires = 0
strAction = Request.Form("action")
For Each item In Request.Form
  If item <> "action" then
    If strAction = "delete" then
      'Do some code to delete the user id
    elseif strAction = "move" then
      'Do some code to move the user id
    end if

    Response.Write item & "<BR>"
  end if
Next

response.write "<hr>Action choosen: " & strAction
%>
Avatar billede drago Nybegynder
26. juni 2003 - 13:40 #9
Hej!
Det du skriver er OK - Men jeg har allerede et script til at vise brugere, og give dem ID'er - Men det er at slette/flytte brugerne, som det også fremgår af min overskrift. Dvs. det er faktisk det her i din kode:

  If strAction = "delete" then
      'Do some code to delete the user id

Og
elseif strAction = "move" then
      'Do some code to move the user id

Det er de koder jeg mangler, hvordan sletter man når man har flere brugere der skal slettes på engang, og hvordan flytter man dataer på flere brugere...

Håber du kan hjælpe?
-Drago
P.S: TIA
    end if
Avatar billede somaliomar Praktikant
26. juni 2003 - 16:24 #10
Det er jo netop derfor jeg skrev, at du skulle komme med din nuværende kode !

Sådan kan du gøre, når du skal slette brugerne:

<%
strSQL = "DELETE FrOM Users WHERE"

For Each item In Request.Form
  If item <> "action" then
    If strAction = "delete" then
      strSQL = strSQL & " (UserId = " & item & ") OR"
    end if
  end if
Next

strSQL = mid(strSQL,1,len(strSQL)-2)

Set DBConn = Server.CreateObject("adodb.Connection")
DBConn.Open strConnect
DBConn.Execute(strSQL)
DBConn.Close
Set dbconn = Nothing

%>
Avatar billede somaliomar Praktikant
26. juni 2003 - 16:25 #11
Lav linjen
strSQL = strSQL & " (UserId = " & item & ") OR"

om til
strSQL = strSQL & " (UserId = '" & item & "') OR"
Avatar billede drago Nybegynder
26. juni 2003 - 16:29 #12
Hej Somaliaomar!
Okay? Koden ser overbevisende ud, men desværre kan jeg ikke lige sætte det ind i koden nu - Men sikkert her i aften, så vil jeg teste det!

Det med flytningen må du også gerne besvare, men der er det vel bare en løkke også...

Håber det hjælper og tak for hjælpen!
-Drago
Avatar billede somaliomar Praktikant
27. juni 2003 - 08:06 #13
En løsning kunne være, at lave dit script sådan her:

<%
Response.Expires = 0
strAction = Request.Form("action")

If strAction = "delete" Then
  strSQL = "DELETE FrOM Users WHERE" 
ElseIf strAction = "move" Then
  strSQL = "SELECT * FROM Users WHERE"
End If


For Each item In Request.Form
  If item <> "action" then
    strSQL = strSQL & " (UserId = " & item & ") OR"
  end if
Next

strSQL = mid(strSQL,1,len(strSQL)-2)

Set DBConn = Server.CreateObject("adodb.Connection")
DBConn.Open strConnect

If strAction = "delete" Then
  DBConn.Execute(strSQL)
ElseIf strAction = "move" Then
  Set rs = DBConn.Execute(strSQL)

  While Not rs.EOF
    strSQL = "INSERT INTO Users Username VALUES ('" & rs("Username") & "')"
    DBConn.Execute(strSQL)
  Wend
End If

DBConn.Close
Set dbconn = Nothing

%>
Avatar billede drago Nybegynder
06. februar 2004 - 14:13 #14
Jeg har simpelthen opgivet det - Men vil nok snart genoptage det, men pga. du dog har arbejdet får du nogle point - Det ser som sagt overbevisende ud, men har ikke haft tid til at prøve det ad...

-Drago
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