Avatar billede dtc Nybegynder
10. januar 2004 - 01:33 Der er 17 kommentarer og
1 løsning

dynamisk dropdown boks i form

Jeg er ved at lave en aktiv online redigerbar menu!

Jeg har lavet en form til at indsætte nye menupunkter i tabellen - men der skal være mulighed for flere sprog!
Det løser jeg ved at lave en dropdown boks som henter sine sprog/data fra en tabel jeg har kaldt tblsprog.

Det virker alt sammen fint - indtil jeg skal oprette et nyt menupunkt - så får jeg fejl! Jeg skla på en eller anden måde have den til at tage de data med fra dropdownboksen som bliver valt - med over i tabellen tblTOPMENU - dvs. at hvis jeg i formen vælger DK så skal den indsætte DK i feltet language i tlbTOPMENU...

Giver det nogenlunde mening????
Hvordan får man den til det????
Avatar billede The Real Yoda Juniormester
10. januar 2004 - 01:37 #1
jamen hvis det er en drop down box, kan du jo bare hente hvad der er valgt med request.form("dropdownbox")

så længe du bare submitter dataene..
Avatar billede dtc Nybegynder
10. januar 2004 - 01:39 #2
Den skal du venligst lige forklare lidt nærmere.....

Jeg submitter også dataerne - men den melder altså fej1!
Avatar billede thesurfer Nybegynder
10. januar 2004 - 01:41 #3
Skriv:
- fejlmeddelelsen
- linie nr og selve linien (copy & paste)
- variabler du bruger
- hjemmelavede funktioner, hvir du brugte nogen da det fejlede

Vi kan meget.. men det er de færreste der er synske..
Avatar billede dtc Nybegynder
10. januar 2004 - 01:44 #4
Fejl:

Microsoft JET Database Engine error '80040e14'
Syntax error in INSERT INTO statement.

Linie:

<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  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_tableValues = MM_tableValues & ","
      MM_dbValues = MM_dbValues & ","
    End If
    MM_tableValues = MM_tableValues & MM_columns(MM_i)
    MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
    ' execute the insert
    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
%>

Variabler:

<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form1") Then

  MM_editConnection = MM_menu_STRING
  MM_editTable = "tblTOPMENU"
  MM_editRedirectUrl = "default.asp"
  MM_fieldsStr  = "aktivt|value|menu|value|menux|value|undermenu|value|rakkefolge|value|select|value|el|value|elx|value|mail|value|mailx|value"
  MM_columnsStr = "aktiv|none,'Y','N'|menu|',none,''|MENUX|none,'Y','N'|submenu|none,'Y','N'|RAEKKEFOELGE|none,none,NULL|language|',none,''|EL|',none,''|ELX|none,'Y','N'|MAIL|',none,''|MAILX|none,'Y','N'"


Kan det bruges?
Avatar billede eagleeye Praktikant
10. januar 2004 - 01:46 #5
den typiske måde man laver en dropdown på er ved at gemme ID på eksempelvis sproget i value i <option>'tagen.
Response.Write "<option value=""" & rs("id") & """>" & rs("sprog") & "</option>"

Har du lave en <select>'tag i stil med dette:
<select name="sprog">

Så hender du ID'et på sproget med:
sprog = Request.Form("sprog")
Avatar billede eagleeye Praktikant
10. januar 2004 - 01:46 #6
Har du en kolonne som hedder select?
Avatar billede dtc Nybegynder
10. januar 2004 - 01:47 #7
Nej ingen select kolonne!
Avatar billede dtc Nybegynder
10. januar 2004 - 01:50 #8
Se www.a-vision.dk/degner/edit.asp - det er et lille eks. på hvordan den i princippet skulle virke!
Avatar billede eagleeye Praktikant
10. januar 2004 - 01:58 #9
Det lavet i dreamweaver. Det enste jeg kan sige så er at prøve at kigge du har stavet kolonnenavne rigtigt, og valgt den rigtige datatype for kolonnen.

hvis du har mulighed for det prøv at tivnge den til at udskrive SQL sætningen sådan her og tjek kolonnennavn og data er rigtig prøv evt at vise output her:

  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  Response.Write MM_editQuery
  Response.End
  If (Not MM_abortEdit) Then
Avatar billede dtc Nybegynder
10. januar 2004 - 02:04 #10
Så får jeg denne på skærmen:

insert into Tabel1 (tekst,language) values ('dddddd','DK')
Avatar billede The Real Yoda Juniormester
10. januar 2004 - 02:07 #11
passer tabel1 med dit tabelnavn og passer tekst og language med dine database felter ?

Prøv evt.. jeg ved det lyder åndsvagt, at omdøbe feltnavnet language til "lang"

og det samme de steder det refererer til det..
Avatar billede eagleeye Praktikant
10. januar 2004 - 02:07 #12
Ok det ser jo umiddelbart meget fint ud.
Er du 100% sikker på der er en kolonne som hedder language og er den defineret som tekst i databasen?
Avatar billede dtc Nybegynder
10. januar 2004 - 02:15 #13
Ja jeg havde et felt der hed language - og det var defineret som tekst!

Jeg har nu prøvet at omdøbe feltet til sprog i stedet for ----- og tro det eller ej - men så VIRKER det...jeg må altså se at have lært de koder selv - for Dreamweaver er åbenbart meget ømfindtlig!

Tak for hjælpen begge to - jeg opretter lige et spørgsmål mere - så kan i begge få point...

eagleeye....jeg laver spørgsmål med dit navn - svar lige på det for at få point!

Tak
Avatar billede eagleeye Praktikant
10. januar 2004 - 02:20 #14
Ok det gør jeg så ;)
Avatar billede The Real Yoda Juniormester
10. januar 2004 - 02:22 #15
dtc..

det er egentligt ret simpelt og ikke dreamweavers fejl.. Jeg koder selv i dreamweaver, pga dovenskab eksempelvis mht at indsætte et billede.. det er stadig hurtigere at klik og browse vej til billedet, end det er at skrive koden i notepad..

dog laver jeg alt asp kode i hånden, og har derfor styr på det.. i hvertfald nogenlunde :-)

det der skete her er at der er visse ord som man ik må bruge som database felter fordi det kager i det.

eks.. du må ik lave felter der hedder "by" .. for "by" er et reserveret ord til "order by feltnavn"

du må heller ik lave felter som hedder "text", "order", "limit" og så en helt masse andre..

så dette er en ret stor fejlkilde.. til tider.. og kan man simpelthen ik finde fejlen, og burde det virke osv. så er det altid en god ide lige at kigge på sine feltnavne.

ovenstående viden er resultatet af mange sure fejlfindingstimer.. hehe

anyway.. takker for points, og mener at vi godt bare kunne have delt de 60 med 15 til mig og resten til eagleeye.
Avatar billede eagleeye Praktikant
10. januar 2004 - 02:23 #16
Angående fejlen er det ikke Dreamweaver der er meget ømfindtlig. Det er databasen og men hvis der viker når du laver kolonnenavnet om så må language være et reserveret ord i access.
Avatar billede eagleeye Praktikant
10. januar 2004 - 02:23 #17
for sent ;O
Avatar billede The Real Yoda Juniormester
10. januar 2004 - 02:29 #18
som en sidste kommentar kan nævnes at hvis du VIL bruge reserverede ord eller beskytte dig mod at lang er reserveret om nogle år, kan du i din sql streng skrive [] rundt om tabelnavnene.. og så er der ingen problemer..

det hjælper jo så også under fejlfinding og rettelse, med at vise om det er feltnavn osv..
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

IT-JOB

Rambøll Management Consulting

Senior Software Engineer

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Capgemini Danmark A/S

Open Application (Denmark)