10. januar 2004 - 01:33Der 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????
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..
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
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")
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:
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!
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.
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.
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..
Synes godt om
Ny brugerNybegynder
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.