01. februar 2005 - 14:43Der er
13 kommentarer og 4 løsninger
Problemer med INSERT INTO
Hej
Jeg har denne asp side, hvor jeg gemmer oplysninger om hvilke varer en bruger har lagt i sin vogn.
::::KODE:::: <%@ Language=VBScript %> <!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil--> <!-- #include file="db.asp" --> <% Sub CreateNewOrder() Application.lock if Application("orderID") = "" then Application("orderID") = 1 end if
Application("orderID") = Application("orderID") + 1 Application.Unlock End Sub
Sub AddToOrder(nOrderID, nVareId, nQuant) sqlText = "INSERT INTO ordrelinie " _ & " (orderID, vareid, antal) values " _ & " ("&nOrderID&", "&nVareId&", "&nQuant&")" 'response.write "SQL: "& sqlText Conn.Execute(sqlText) End Sub
'Main program intVareId = Request.form("intVareId") intAntal = Request.form("intAntal")
set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConString
intOrderID = cstr(Session("orderID")) if intOrderID = "" then CreateNewOrder end if
sqlText = "SELECT * FROM ordrelinie WHERE orderID =" & intOrderID & " AND vareid =" & intVareID set rsOrder = Conn.Execute(sqlText)
if rsOrder.EOF then 'meddelelse som popper op når brugerne lægger en vare i inskøbsvognen txtInfo = "<p>Den valgte vare er tilføjet til din indkøbsvogn.</p>" AddToOrder intOrderID, intVareId, intAntal else txtInfo = "<p>Varen er allerede i din indkøbsvogn.<br>Vil du købe flere af varen, kan antallet ændres i indkøbsvognen.</p>" end if
<% ' Luk forbindelse fra dbconn.inc Conn.Close Set Conn = Nothing %>
</body> </html> ::::KODE::::
Nu er mit problem bare at jeg gerne vil gemme nogle flere oplysninger i tabellen ordrelinie end jeg gjorde opringeligt. Derfor har jeg forsøgt at tilføje oplysningerne til mit INSERT INTO men det virker ikke.
::::NY KODE:::: <%@ Language=VBScript %> <!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil--> <!-- #include file="db.asp" --> <% Sub CreateNewOrder() Application.lock if Application("orderID") = "" then Application("orderID") = 1 end if
'Main program intVareId = Request.form("intVareId") intAntal = Request.form("intAntal")
set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConString
intOrderID = cstr(Session("orderID")) if intOrderID = "" then CreateNewOrder end if
sqlText = "SELECT * FROM ordrelinie WHERE orderID =" & intOrderID & " AND vareid =" & intVareID set rsOrder = Conn.Execute(sqlText)
if rsOrder.EOF then 'meddelelse som popper op når brugerne lægger en vare i inskøbsvognen txtInfo = "<p>Den valgte vare er tilføjet til din indkøbsvogn.</p>" AddToOrder intOrderID, intVareId, intAntal, strTitel, strBeskriv, strModel, intPris else txtInfo = "<p>Varen er allerede i din indkøbsvogn.<br>Vil du købe flere af varen, kan antallet ændres i indkøbsvognen.</p>" end if
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
Du skal have plingere rundt teksten i din INSERT INTO statement. Nu ved jeg ikke helt hvilke felter der er tekst, og hvilke felter der har tal, men prøv med noget lignende dette:
Her har jeg sat ind enkeltplinger rundt felterne nTitle, nBeskriv og nModel. Hvis der er nogle andre tekstfelter, må du gøre tilsvarende her, og hvis f.eks. nModle ikke er tekstfelt, må du fjerne plingerne her.
Har prøvet det I skrev - men får stadig samme fejl. Så har jeg prøvet at skrive min sql ud - ser ud som om jeg ingen værdier får puttet i de sidste felter
Her er koden fra den side brugeren vælger varen på (altså siden før den med fejlen på) ::::KODE:::: <%@ Language=VBScript %> <% Option Explicit Dim Conn, DSN, sltid, strSQL, rs, column, vareID, intVareId Response.Buffer=True %> <!--#include file="dbconn.inc"--><!-- Database forbindelse oprettes via ekstern fil--> <!-- #include file="adovbs.inc" --> <html>
<head> <title>Vis varer</title> <Link Rel="stylesheet" href="datronic.css" Type="text/css" > <!-- link til ekstern style sheet -->
<script LANGUAGE="JavaScript"><!--tjekker om indtastede tal er et tal og om det negativt/blank
function AbortEntry(sMsg, eSrc) { window.alert(sMsg); // set focus and highlight to the offending error eSrc.focus(); //eSrc.select(); }
function HandleError(eSrc) { // make sure the input is a numeric value var val = parseInt(eSrc.value); if (isNaN(val)) { return AbortEntry("Du skal indtaste antal varer.", eSrc); }
// make sure the value is not negative if (val <= 0) { return AbortEntry("Du skal indtaste antal varer.", eSrc); } }
Problemet er måske heller at der ikke kommer nogen værdi i de sidste 4 felter. Der er faktisk 7 'værdier' også da pris bare er tom, og derfor er der ikke noget efter det sidste komme.
Kan du checke hvorfor der ikke er nogen værdi i de sidste 4 felter?
Din udskrift af sql sætningen viser at der ikke er nogle værdier i de sidste 4 felter: SQL: INSERT INTO ordrelinie (orderID, vareid, antal, titel, beskriv, model, pris) values (10, 79, 1, '', '', '', )
<script LANGUAGE="JavaScript"><!--tjekker om indtastede tal er et tal og om det negativt/blank
function AbortEntry(sMsg, eSrc) { window.alert(sMsg); // set focus and highlight to the offending error eSrc.focus(); //eSrc.select(); }
function HandleError(eSrc) { // make sure the input is a numeric value var val = parseInt(eSrc.value); if (isNaN(val)) { return AbortEntry("Du skal indtaste antal varer.", eSrc); }
// make sure the value is not negative if (val <= 0) { return AbortEntry("Du skal indtaste antal varer.", eSrc); } }
Har selv fundet problemet - jeg havde fået sat mine hidden fields udenfor min <form> og derfor kom oplysningerne ikke med over til næste side.
Lukker derfor spørgsmålet nu men giver nogle point til lorentsnv - da lorentsnv var den første der gjorde mig opmærksom på at jeg skulle huske '' omkring min tekst.
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.