Avatar billede jmc Nybegynder
23. maj 2003 - 14:38 Der er 7 kommentarer og
2 løsninger

SQL update

update af flere records i dreamweaver MX   
Hvordan løber jeg hele tabellen igennem og opdatere ALLE hovedmenu der hvor forening_id = session("forening_id") AND hoved_menu = request("hm")?

Her er mit script:

<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_abc_STRING
  MM_editTable = "sider"
  MM_editColumn = "side_id"
  MM_recordId = "" + Request.Form("MM_recordId") + ""
  MM_editRedirectUrl = "dropmenu_list.asp"
  MM_fieldsStr  = "side_menu|value|side_menu_sort|value|forenings_id|value"
  MM_columnsStr = "side_menu|',none,''|side_menu_sort|none,none,NULL|forenings_id|none,none,NULL"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
Avatar billede jmc Nybegynder
23. maj 2003 - 15:09 #1
Er det ingen som kan hjælpe, eller er i alle gået på weekend?
Avatar billede nop Nybegynder
23. maj 2003 - 15:19 #2
I sql kan man (jo!):

update tabellen
set hoved_menu=11
where hoved_menu=22 and forenings_id=33

Så det du vil er at bygge en sql-streng som indeholder de rigtige værdier efter session og inputtet... Det er jo det du vil ikke ?
Avatar billede jmc Nybegynder
23. maj 2003 - 15:27 #3
Hej 1000 tak for at svare...
Jo det er det jeg vil, jeg kan bare ikke overskue hvordan.

Jeg har 10 records (men det kunne være 8 eller 12 også)
Jeg kender session("id") og hoved_menu som skal ændres.

Hoved menuen skal ændres alle 10 steder, hvordan gør jeg med mit Dreamweaver MX script?

Den skal ændres alle de steder hvor den hed det som den hed før og hvor forenings_id = session("forenings_id")

kan du hjælpe?
Avatar billede nop Nybegynder
23. maj 2003 - 15:43 #4
Bare for at slå det fast så vil en update ændre alle records i en tabel, evt med et where så specificeres dem man vil have ændringerne i, altså en enkelt update kan ændre alle records men kun til det samme eller evt:

update tællere
set tal=ta+1
where tal < 100

det skulle fremgå hvad der sker.

Du har måske en lidt anden problemstilling hvor du ønsker at putte variablet data i dit hoved_menu felt, og i så fald må du lave en select rec_id where bla.. bla.. og så loope record sættet igennem og lave: update tab set hoved_menu=xxx where rec_id=yyy. Hvad xxx er og yyy er puttes ind i strengen i loop'et, rec_id kommer jo fra record-sættet fra selecten og hove_menu kunne være fra en tabel eller fra input (fx et grid).
Jeg ved ikke hvad niveau du har men jeg hjælper gerne yderligt så godt jeg kan.
--nop
Avatar billede jmc Nybegynder
27. maj 2003 - 10:10 #5
Og hvor sætter jeg så lige den ind i mit kodefragment?
Avatar billede nop Nybegynder
27. maj 2003 - 10:22 #6
Tror ikke jeg forstår..Du har jo en rem hvor der står "construct sql statement", så det er jo nok stedet, altså når du har lavet alle dine if's og defaults mv. (har ikke kigget nærmere på din kode svarer mere genrelt).
Avatar billede jmc Nybegynder
30. maj 2003 - 08:47 #7
ok så lad mig give point.
Avatar billede nop Nybegynder
02. juni 2003 - 09:40 #8
Fik du lavet det du ville ?
Avatar billede jmc Nybegynder
13. juni 2003 - 08:43 #9
nej jeg arbejder nu på at skive hele koden selv
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