om ni vill ha koden där man matar in svars meddelande så kan jag skicka med det om det skulle vara lite lättare att lösa själva problemet :)
håller på att göra dett forum men behöver lite hjälp
45 svar · 1 844 visningar · startad av Mycodez · sida 2 av 3
Frågan, av Mycodez
Jag håller på med ett forum men behöver lite hjälp med det Detta är koden till att skriva meddelandet till databasen: <% const connstring="provider=SQLOLEDB;Data source=;user id=; password=;initial catalog=" set conn= server.CreateObject("ADODB.CONNECTION") conn.Open(connstring) fran=session("anvnamn") till=request("till") rubrik=replace(request("rubrik"),"'","´") me
Läs frågan i sin helhet →Ett enkelt fel du skrev:
request.form("name")
Det ska nog stå:
request.form("Name")
alltså med stort "N"
"response.redirect request.servervariables("HTTP_REFERER")" skickar tillbaka användaren till föregående sida. du kan läsa mera om server variabler här: http://www.w3schools.com/asp/coll_servervariables.asp
jag rättade till lite fel som jag såg faktiskt men jag fick ett annat felmeddelande som lyder:
ADODB.Recordset error '800a0e7d'
The connection cannot be used to perform this operation. It is either closed or invalid in this context.
/svara.asp, line 22
rad 22 är:
rs.open "svar"
och hela aspkoden är (när jag har ändrat lite men den gamla koden finns ju i svaret över):
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=db;Uid=***;Pwd=****;"
if NOT request.form("name") = "" AND NOT request.form("meddelande") = "" then
set connection = server.createobject("Adodb.connection")
set rs = server.createobject("adodb.recordset")
connection.open connectionString
rs.open "svar"
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
rs.addnew
rs("svarid") = svarID
rs("namn") = namn
rs("email") = email
rs("meddelande") = meddelande
rs.update
rs.close
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
jag jag provade det så fick jag detta felmeddelande
ADODB.Recordset error '800a0cb3'
Current Recordset does not support updating. This may be a limitation of the provider, or of the selected locktype.
/svara.asp, line 28
rad 28 är:
rs.addnew
suck noshornin jag gjorde som du skrev men det blev fortfarande fel.. :( nu fick jag detta fel meddelande
ADODB.Recordset error '800a0e79'
Operation is not allowed when the object is open.
/svara.asp, line 28
raden 28 är. rs.open "svar", connection
hela koden är:
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=db;Uid=******;Pwd=*****;"
if NOT request.form("name") = "" AND NOT request.form("meddelande") = "" then
set connection = server.createobject("Adodb.connection")
set rs = server.createobject("adodb.recordset")
connection.open connectionString
rs.open "SELECT * FROM svar", connectionString
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
rs.open "svar", connection
rs("svarid") = svarID
rs("namn") = namn
rs("email") = email
rs("meddelande") = meddelande
rs.update
rs.close
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
okey!
Skriv så här istället:
sql = "INSERT INTO svar (svarid,namn,email,meddelande) VALUES ('"&svarID&"','"&namn&"', '"&email&"', '"&meddelande&"')"
connection.Execute(sql)
istället för:
rs.open "svar", connection
rs("svarid") = svarID
rs("namn") = namn
rs("email") = email
rs("meddelande") = meddelande
rs.update
rs.close
okej tack! nu funkar det någolunda men när jag ska svara på en tråd mer än en gång så blir det ett fel meddelande till :( Men hoppas ni vill hjälpa mig jag e liten ny på detta
felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.45]Duplicate entry '1' for key 1
/svara.asp, line 29
rad 29 =
connection.Execute(sql)
här är hela koden
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=*****;Uid=******;Pwd=*****;"
if NOT request.form("name") = "" AND NOT request.form("meddelande") = "" then
set connection = server.createobject("Adodb.connection")
set rs = server.createobject("adodb.recordset")
connection.open connectionString
rs.open "SELECT * FROM svar", connectionString
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
sql = "INSERT INTO svar (svarid,namn,email,meddelande) VALUES ('"&svarID&"','"&namn&"', '"&email&"', '"&meddelande&"')"
connection.Execute(sql)
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
tack för ni vill hjälpa mig :)
Varför skapar du ett Recordset som du aldrig använder?
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=*****;Uid=******;Pwd=*****;"
if NOT Len(Request.Form("name")) > 0 AND NOT Len(Request.Form("meddelande")) > 0 then
set connection = server.createobject("Adodb.connection")
connection.open connectionString
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
sql = "INSERT INTO svar (svarid,namn,email,meddelande) VALUES ('"&svarID&"','"&namn&"', '"&email&"', '"&meddelande&"')"
connection.Execute(sql)
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
Räcker om du bara skall göra en INSERT
Det felmeddelande du får är att du försöker sätta ett fält som är unikt
bara en fråga vad menar du med len? som du skriver på en del ställen?
voigtann1 jag ändrade till det du skrev men då kördes bara "else"-satsen och jag har fyllt i allt men vad kan då var fel?
ta bort NOT på båda frågorna, LEN() är en VB funktion för att kolla längden på en sträng.
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=*****;Uid=******;Pwd=*****;"
if Len(Request.Form("name")) > 0 AND Len(Request.Form("meddelande")) > 0 then
set connection = server.createobject("Adodb.connection")
connection.open connectionString
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
sql = "INSERT INTO svar (svarid,namn,email,meddelande) VALUES ('"&svarID&"','"&namn&"', '"&email&"', '"&meddelande&"')"
connection.Execute(sql)
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
jag tog bort NOT från Len() statserna men då ficka jag detta felmeddelande
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.45]Duplicate entry '1' for key 1
/svara.asp, line 26
rad 26 är connection.Execute(sql)
och det är Yoigtann1s kod jag använder som är ovan
Ett av fälten har du sagt att det inte få finnas dubbletter, kontrollera dina databas tabeller och se över din databas design att det stämmer med det du är ute efter.
okej men jag vet inte hur det ska se ut riktigt. Du vet jag sitter och kör i en MySQL databas som jag fick från binero. som jag sen kan styra via PHPmyadmin. så hur kan det se ut? jag vill lära mig men jag förstår mig inte på det alltså inte detta i allafall.
Jag vet inte exakt hur det ser ut i PHPmyadmin. Men om du kollar kolumnens inställningar så borde man typ kunna kryssa för en ruta som heter "unique" eller liknande. Om den är i kryssad, fast än du vill kunna göra dubbletter så är det bara att avkryssa den.
jag gjorde så "SvarID" blev unik och satten primiär nycklen på "Meddelande" men då får jag
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.45]Duplicate entry '1' for key 2
/svara.asp, line 26
i stället
alltså jag förstår mig inte på PHPmyadmin alltså..
eller är det något jag ska ändra i koden ???
<%
connectionString = "Driver={MySQL ODBC 3.51 Driver};Server=mysql26.kontrollpanelen.se;Option=3;Database=web77725_mycodez;Uid=web77725_master;Pwd=flagga;"
if Len(Request.Form("name")) > 0 AND Len(Request.Form("meddelande")) > 0 then
set connection = server.createobject("Adodb.connection")
connection.open connectionString
svarID = request.Querystring("fid")
namn = request.form("Name")
email =request.form("Email")
meddelande = request.form("meddelande")
sql = "INSERT INTO svar2 (svarid,namn,email,meddelande) VALUES ('"&svarID&"','"&namn&"', '"&email&"', '"&meddelande&"')"
connection.Execute(sql)
connection.close
response.redirect request.servervariables("HTTP_REFERER")
else
response.write "Du måste fylla i namn och meddelande för att det ska bli sparat."
end if
%>
rad 26 är connection.Execute(sql)
