Mika3lMedlem sedan nov. 20013 776 inlägg
Nu hade jag tänkt att försöka mig på att skapa en gästbok i Flash m.h.a ASP och samtidigt för första gången använda en MySQL-databas som inte borde vara så svårt att komma igång med. :)
Men nu har jag fått problem direkt när jag har försökt att skapa ett table i min databas(db) i MySQL-Front. :l
CREATE TABLE `gbook` (`MID` INT (3) DEFAULT '0' NOT NULL, `name` TEXT NOT NULL, `email` TEXT, `homesite` TEXT, `message` TEXT (255) NOT NULL, PRIMARY KEY(`MID`), UNIQUE(`MID`))
Error: 1064 - You have an error in your SQL syntax near '(255) NOT NULL, PRIMARY KEY(`MID`), UNIQUE(`MID`)) ' at line 1
Nu är jag som sagt nybörjare på det här så skrik på mig om mer info behövs! ;)
Mika3lMedlem sedan nov. 20013 776 inlägg
Nu har jag lyckats lösa det!
Jag ändrade namn ifall att något/några av namnen var reserverade och så var fallet så nu fungerar det bra! :)
LarsGMedlem sedan dec. 200012 465 inlägg
Det förstår jag inte att det skulle hjälpa då du använder ` för alla namn. Problemet är att du anger en maxstorlek på en kolumn av text-datatyp.
Det verkar onödigt att använda text på alla kolumner, det borde räcka med varchar(xxx) i de flesta fall. En varchar kan vara högst 255 tecken lång i Mysql. Att ange int(3) är bara en sak som påverkar displayformatet i vissa verktyg och inte vilka tal som kan lagras. Om du lagrar tal > 999 och försöker visa värdet i ett sådant verktyg så blir det bara konstigt så jag tycker att du kan ta bort det.
Sen så behöver du inte ha både unique och primary key på mid. Primary key innebär unique.
Mika3lMedlem sedan nov. 20013 776 inlägg
Ok, jag försökte byta till varchar på message, men då fick jag felmeddelande så jag tror jag struntar i att byta för tillfället, får bli nån annan gång. ;)
Men nu har jag problem när jag ska lägga till data! :l
Jag får detta felmeddelande:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[TCX][MyODBC]Duplicate entry '0' for key 1
/mikael_latmask_com/V2/gbook_sign.asp, line 14
<%
Function fix(str)
str = Replace(str,"'","")
End Function
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver=MySQL;server=localhost;uid=mikael;pwd=pass;database=db"
Dim name, email, homesite, message, date
name = fix(Trim(Request("name")))
email = fix(Trim(Request("email")))
homesite = fix(Trim(Request("homesite")))
message = fix(Trim(Request("message")))
date = now()
SQL = "INSERT INTO gbook(t_name,t_email,t_homesite,t_message,t_date) VALUES('" & name & "','" & email & "','" & homesite & "','" & message & "','" & date & "')"
Connection.Execute(SQL)
Connection.Close
Set Connection = Nothing
%>
Jag antar att det har mer att göra med MySQL än ASP i detta fallet så jag fortsätter därför i denna tråden istället för att skapa en ny i ASP & VBScript-forumet.
pimmeMedlem sedan sep. 2001553 inlägg
Felet är att du har DEFAULT 0 på mid-fältet + att det är PRIMARY KEY och UNIQUE, vilket gör att det inte får finnas två rader med samma mid-värde.
Du anger inget mid-värde i din INSERT INTO..... och då får raden automatiskt värdet 0, men det värdet finns antagligen redan.
Om du sätter mid-kolumnen till auto_increment så kommer den att räkna upp värdena där automatiskt..
CREATE TABLE gbook (MID INT AUTO_INCREMENT......)
LarsGMedlem sedan dec. 200012 465 inlägg
Då du inte anger något värde för MID i din insert så försöker Mysql lagra 0 (defaultvärdet) i stället.
Vid din andra insert så får du alltså duplikat i primärnyckeln.
Jag förmodar att du vill att MID skall vara en räknare? I så fall så måste du ange det när du skapar tabellen
CREATE TABLE gbook (MID INT auto_increment ... )
Du kan inte ändra en befintlig kolumn så att den blir en räknare, så om du inte vill skapa om tabellen så får du ta bort MID och lägga till den igen med auto_increment.
Mika3lMedlem sedan nov. 20013 776 inlägg
Mika3lMedlem sedan nov. 20013 776 inlägg
Men nej, det sparar ju inte allt! :o :l
Det enda som sparas är datumet. :o
Värdena från flashfilen hamnar i ASP-filen, det har jag kollat.
<%
Function fix(str)
str = Replace(str,"'","")
End Function
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver=MySQL;server=localhost;uid=mikael;pwd=pass;database=db"
Dim name, email, homesite, message, date
name = fix(Trim(Request("name")))
email = fix(Trim(Request("email")))
homesite = fix(Trim(Request("homesite")))
message = fix(Trim(Request("message")))
date = now()
SQL = "INSERT INTO gbook(t_name,t_email,t_homesite,t_message,t_date) VALUES('" & name & "','" & email & "','" & homesite & "','" & message & "','" & date & "')"
Connection.Execute(SQL)
Set rs = Server.CreateObject("ADODB.Recordset")
SQL2 = "SELECT * FROM gbook ORDER BY MID DESC"
rs.Open SQL2, Connection
Do Until rs.EOF
Response.Write rs("t_name") & "<br>"
Response.Write rs("t_email") & "<br>"
Response.Write rs("t_homesite") & "<br>"
Response.Write rs("t_message") & "<br>"
Response.Write rs("t_date") & "<br><br><br>"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Connection.Close
Set Connection = Nothing
%>
LarsGMedlem sedan dec. 200012 465 inlägg
Nja, jag tror ändå att du inte får in några värden i dina variabler.
SQL = "INSERT INTO gbook(t_name,t_email,t_homesite,t_message,t_date) VALUES('" & name & "','" & email & "','" & homesite & "','" & message & "','" & date & "')"
response.write "SQL:" & sql
response.end
Connection.Execute SQL
Mika3lMedlem sedan nov. 20013 776 inlägg
Hmmm, det skickas tydligen inte några variabler till ASP-filen nu(fast innan jag började med databasgrejen så fungerade det :l ). :l
Jag får fråga flashkunniga personer om hjälp. :)