Just nu i M3-nätverket
Gå till innehåll

insert into - mysql


Ringbom

Rekommendera Poster

Hejsan

jag har strul - jag kan inte lägga till poster i min mysql. (kör med ASP)

jag har formuläret som ser ut så här:

 

<form name="insertText" method="POST" action="addkommentar.asp?add=yes">

Skriv en kommentar
<INPUT TYPE=HIDDEN NAME="ID">
Namn:
<INPUT TYPE="TEXT" NAME="namn" SIZE="30" MAXLENGTH="225">
Kommentar:
<TEXTAREA NAME="kommentar" rows="3" cols="50"></textarea>
<INPUT TYPE=HIDDEN NAME="ok" value=0>
<INPUT TYPE=HIDDEN NAME="svar">
<INPUT TYPE=HIDDEN NAME="slottid">
<input type="Submit" value="Skicka">
</form>

 

och sedan filen som skall lägga till allt i mysql:

 

<% If Request.QueryString("add") = "yes" Then
Set Connect = server.createobject("ADODB.connection")
Connect.Open Session("Connection_String")
id = request.Form("id")
namn = request.Form("namn")
kommentar = request.Form("kommentar")
ok = request.Form("ok")
svar = request.Form("svar")
slottid = request.Form("slottid")
strSQL = "INSERT INTO kommentarer (id,namn,kommentar,ok,svar,slottid) VALUES('"& Request.Form("id") &"','"& Request.Form("namn") &"','"& Request.Form("kommentar") &"','"& Request.Form("ok") &"','"& Request.Form("svar") &"','"& Request.Form("slottid") &"')" 
' för att skriva ut SQLfrågan.
Response.Write strSQL
Response.End
Connect.Close
end if
%>

 

När jag kör detta så får jag ett vitt fönster där det står:

INSERT INTO kommentarer (id,namn,kommentar,ok,svar,slottid) VALUES('','Saba ','min söta katt','0','','')

 

- Vad är det som är fel??

jag har fått huvudvärk!

 

Länk till kommentar
Dela på andra webbplatser

Fälten ID, SVAR och SLOTTID har inget värde (alltså inget value="xxx" i HTML-koden)

 

Eller jag kanske missuppfattade? Tror att Thomas Tydal har ett bättre svar :)

 

 

[inlägget ändrat 2008-08-21 23:34:20 av Mr Andersson]

Länk till kommentar
Dela på andra webbplatser

Jag ser ingenstans att du försöker lägga till något i Mysql.

 

Jag kan inte ASP, men enligt Google ska det vara:

 

Connect.Execute(strSQL)

 

Lägg den raden före Connect.Close.

 

 

Länk till kommentar
Dela på andra webbplatser

jag lade till Connect.Execute(strSQL) och fick då:

Incorrect integer value: '' for column 'ID' at row 1

/nina/historia/addkommentar.asp, line 17

 

på rad 17 står det: Connect.Execute(strSQL)

 

Länk till kommentar
Dela på andra webbplatser

ID är väl ändå ett identitesfält i din databas och då skall detta inte anges i insert-queryn. Ändra till:

strSQL = "INSERT INTO kommentarer (namn,kommentar,ok,svar,slottid) VALUES('"& Request.Form("namn") &"','"& Request.Form("kommentar") &"','"& Request.Form("ok") &"','"& Request.Form("svar") &"','"& Request.Form("slottid") &"')" 

 

Länk till kommentar
Dela på andra webbplatser

ändrade som du sa och fick nu

Incorrect integer value: '' for column 'slottid' at row 1

/nina/historia/addkommentar.asp, line 17

 

på rad 17 står

Connect.Execute(strSQL)

 

 

Länk till kommentar
Dela på andra webbplatser

Då har du inte angett något värde på fältet i formuläret.

<INPUT TYPE=HIDDEN NAME="slottid">

 

Dessutom är slottid ett heltal och skall inte anges med enkelfnuttar kring värdet

 

strSQL = "INSERT INTO kommentarer (namn,kommentar,ok,svar,slottid) VALUES('"& Request.Form("namn") &"','"& Request.Form("kommentar") &"','"& Request.Form("ok") &"','"& Request.Form("svar") &"',"& Request.Form("slottid") &")" 

 

Länk till kommentar
Dela på andra webbplatser

hmm - nu börjar det bli krångligt :-/

 

Så här är det, jag skall på mina slott-sidor längst ner ha in det id:et som slotten har som ligger i en annan tabell.

För att du skall förstå vad jag menar så kan du se här:

http://www.historiesajten.se/slottdetalj.asp?id=329

längst ner där skall jag ha en kommentarsruta där folk kan skriva en kommentar om slottet... det är det där id som står där (329) som jag på något vis måste få med så att rätt kommentarer kommer på rätt slott när jag skall rada upp dem under resp. slott..

 

 

 

Länk till kommentar
Dela på andra webbplatser

Ok, om 329 är slottid:t så bör följande fungera (samt ändringen jag gav i inlägget innan, där jag tog bort enkelfnuttarna (') kring Request.Form("slottid")

 

I formuläret skall du ändra till:

<INPUT TYPE=HIDDEN NAME="slottid" VALUE="<%= Request.Querystring('id') %>">

 

Länk till kommentar
Dela på andra webbplatser

JAAAAA nu kommer det in i db i alla fall :-)

fast sen kom jag till en tom sida men det måste ju bara vara någon slags redirect eller vad det heter. Jag vill ju vara kvar på samma sida.

 

Sen skall jag godkänna inläggen först, för det är för många ungar som skriver en massa snusk :-(

När jag väl har godkänt inlägget skall det visas under samma slott som inlägget handlar om.

 

Jättetack - du jobbar med sånt här va? eller annars är du jäkligt smart!! nu kommer jag kunna sova inatt!!

 

Länk till kommentar
Dela på andra webbplatser

men det måste ju bara vara någon slags redirect eller vad det heter. Jag vill ju vara kvar på samma sida.

 

I slutet av koden gör du följande ompekning:

 
Response.Redirect "slottdetalj.asp?id=" & request.Form("slottid")

 

du jobbar med sånt här va?

Jodå, sen 90-talet.

 

Sen skall jag godkänna inläggen först, för det är för många ungar som skriver en massa snusk

Du skulle ju kunna skriva ett enklare filter som kontrollerar postningen efter ett antal förvalda "snuskord" som då låter bli att lägga in inlägget i databasen.

[inlägget ändrat 2008-08-22 00:21:25 av Anjuna Moon]

Länk till kommentar
Dela på andra webbplatser

jo det funkade det med :-)

nu måste jag gå och lägga mig!

jättetack för allt.

 

Imorgon får jag fundera ut hur jag skall göra resten.

sätta en 1:a i ok-rutan för att inlägget skall synas på rätt slott.

Om jag inte får till det så kanske jag kan höra av mig?

jättetack för allt.

 

Länk till kommentar
Dela på andra webbplatser

jo nu såg jag att du hade skrivit mer. en "snuskfiltrerare" alltså :-) hehe

jo en sån skulle vara bra. För om man tänker efter så kan det bli lite svårt att veta vilka slott som någon har skrivit något på. Jag har skrivit om över 140 stycken nu och det blir ju flera hela tiden.

 

 

Länk till kommentar
Dela på andra webbplatser

Om jag inte får till det så kanske jag kan höra av mig?

Bara att återkomma om det behövs. Tack för poängen!

 

Länk till kommentar
Dela på andra webbplatser

jo nu har jag kört fast igen :-/

jag har fått till det så att jag får in namn och inlägg och kan visa upp det under slottet. Men hur gör man för att få in datumet och tiden? Det verkar vara någon annan kod än den jag har i access till min gästbok.

Det är tomt i datumkolumnen i mysql.

 

Länk till kommentar
Dela på andra webbplatser

jag har försökt med datum = date()

och med

RecSet("Datum") = date()

RecSet("Tid") = FormatDateTime(Now, 4)

men då blir det bara fel.

Så jag tog bort det.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Lägg in datumet direkt i din INSERT istället

 

strSQL = "INSERT INTO kommentarer (namn,kommentar,ok,svar,slottid,datum) VALUES('"& Request.Form("namn") &"','"& Request.Form("kommentar") &"','"& Request.Form("ok") &"','"& Request.Form("svar") &"',"& Request.Form("slottid") &",'" & now & "')" 

 

Länk till kommentar
Dela på andra webbplatser

Nu fick jag ett fel:

 

MySQL server version for the right syntax to use near '2008-08-22 20:40:14')' at line 1

/nina/historia/addkommentar.asp, line 13

På rad 13 är det Connect.Execute(strSQL)

 

 

jag har tagit bort "svar" och "ok" eftersom jag tänkte jag skulle försöka få till sån där filtergrej. Och då är det ju onödigt med ok, och svara kan jag ju göra (om jag skall) genom att lägga in ett eget inlägg. :-)

 

Så nu ser min sträng ut så här, och antagligen den det är fel på då:

 

strSQL = "INSERT INTO kommentarer (namn,kommentar,slottid,datum) VALUES('"& Request.Form("namn") &"','"& Request.Form("kommentar") &"','"& Request.Form("slottid") &",'" & now & "')" 

 

jag hittade det - det saknades en fnutt

[inlägget ändrat 2008-08-22 20:46:21 av Ringbom]

Länk till kommentar
Dela på andra webbplatser

Har du verkligen satt datatypen i mySql till DateTime eller är den bara satt till Date?

 

Jag är ingen mySql-expert så någon annan kanske kan hjälpa till här?

 

Länk till kommentar
Dela på andra webbplatser

datumet funkar lokalt nu men inte när jag sänder upp allt till loopia. Då blir det bara nollor i db och det visas inte upp

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...