Avatar billede starf Nybegynder
24. april 2006 - 12:14 Der er 19 kommentarer og
1 løsning

formsubmit problem..

Hej

Jeg forsøger at lave en form der skal submite noget i en db, dog har jeg lidt problemer med at få alt det form haløj til at virke..

her er den første kode, den der sender dataén

<form method="POST" action="?mode=savenewmail"> 
<b>Add A new user:</b>
<table border="0" cellspacing="2" cellpadding="0">
            <tr>
                <td bgcolor="#999999"><b>Name:</b></td>
                <td bgcolor="#cccccc"><input type="text" name="username" size="15"></td>
                <td bgcolor="#999999"><b>Domain:</b></td>
                <td><%
SQL = "SELECT * FROM domains"
set rs = Conn.execute(SQL)
%>
<select name="domail">
<%
  while NOT rs.EOF
%>
<option value="<% = rs("DomainID") %>"><% = rs("DomainName") %></option>
<%
  rs.MoveNext
  Wend
%>
</select>
<%Conn.close%>
</td>
            </tr>
            <tr>
                <td bgcolor="#999999"><b>MailBox:</b></td>
                <td bgcolor="#cccccc"><input type="text" name="mailbox" size="15"></td>
                <td bgcolor="#999999"><b>Password:</b></td>
                <td><input type="password" name="Mail Password" size="15"></td>
            </tr>
            <tr>
                <td bgcolor="#999999"><b>User Role:</b></td>
                <td bgcolor="#cccccc"><select name="selectName" size="1">
                        <option value="Limited">Limited</option>
                        <option value="Normal">Normal</option>
                        <option value="Design">Design</option>
                        <option value="Sales">Sales</option>
                        <option value="Admin">Admin</option>
                    </select></td>
                <td bgcolor="#999999"></td>
                <td bgcolor="#cccccc"><center><input name="Submit Form" type="submit" id="Submit Form" value="Submit"></center></form></td>
            </tr>
            <tr>
                <td></td>
                <td></td>
                <td></td>
                <td bgcolor="#cccccc"></td>
            </tr>
        </table>

så her er min kode der sætter det ind i databasen (Det gør den så ik lige nu, efter som jeg bare forsøger at printe hva der er skrevet, men der kommer dog intet...

The following has ben added to the system:<br>
<b>FullName:</b><% Request.Form("mailbox") %><br>
<b>Username:</b>
<b>Email:</b>
<b>Domain ID:</b>
<b>Password:</b>
<b>User Role:</b>

hvorfor virker dette ikke?

der kommer ingen fejl, der er bare intet der hvor mailbox sku være!
Avatar billede erikjacobsen Ekspert
24. april 2006 - 12:36 #1
Du ku' jo starte med at skrive det ud:

<b>FullName:</b><%= Request.Form("mailbox") %><br>
Avatar billede ldanielsen Nybegynder
24. april 2006 - 12:41 #2
Der er jo intet af dette der sætter data ind i databasen ...
Avatar billede starf Nybegynder
24. april 2006 - 12:48 #3
<b>FullName:</b><% Request.Form("mailbox") %><br> gør jeg da der
Avatar billede erikjacobsen Ekspert
24. april 2006 - 13:00 #4
Prøv nu lige som jeg skriver. Når du laver en udskrift kan du se om der er noget i Request.Form("mailbox"), og dermed om lidt mere om hvad der kan være galt.
Avatar billede starf Nybegynder
24. april 2006 - 13:07 #5
Hmmm hvis du ser på det jeg har postet som bliver vist når man har submittet så har det jo den kode du skriver der?

altså dette:

The following has ben added to the system:<br>
<b>FullName:</b><% Request.Form("mailbox") %><br>
<b>Username:</b>
<b>Email:</b>
<b>Domain ID:</b>
<b>Password:</b>
<b>User Role:</b>
Avatar billede ldanielsen Nybegynder
24. april 2006 - 13:14 #6
Der skal være noget "INSERT INTO ..." eller "UPDATE DOMAINS SET mailbox = ...." eller noget med rs.AddNew, rs.Update eller ...

Der er ikke noget af det kode du har vist der kan indsætte noget i en database!

Men følg nu bare erikjacobsen. Han er både tålmodig og dygtig, så I skal nok få det til at virke ...
Avatar billede starf Nybegynder
24. april 2006 - 13:21 #7
ldanielsen.. det ved jeg da godt, men hvis du læste efter vil du se at jeg også skrev at jeg for at teste om det virkede i starten bare printe indholdet af disse forme på den side man bliver sendt til via: Request.Form("mailbox") ;)
Avatar billede ldanielsen Nybegynder
24. april 2006 - 13:23 #8
OK

Det erikjacobsen prøver at sige er at du skal have et = med:

<b>FullName:</b><%=Request.Form("mailbox") %><br>

ikke
<b>FullName:</b><% Request.Form("mailbox") %><br>
Avatar billede starf Nybegynder
24. april 2006 - 13:31 #9
<% if mode = "savenewmail" then %>


The following has ben added to the system:<br>
<b>FullName:</b><% Request.Form("mailbox") %><br>
<b>Username:</b>
<b>Email:</b>
<b>Domain ID:</b>
<b>Password:</b>
<b>User Role:</b>
</form>
<% end if %>

der er ik noget = med, det er bare en CP fejl!.... beklager!
Avatar billede ldanielsen Nybegynder
24. april 2006 - 13:44 #10
= er en forkortelse for Response.Write, og den skal med for at du kan se data, Desuden skal mode hentes i querystring:

<%if Request.Querystring("mode") = "savenewmail" then%>


The following has ben added to the system:<br>
<b>FullName:</b><%Response.Write(Request.Form("mailbox"))%><br>
<b>Username:</b>
<b>Email:</b>
<b>Domain ID:</b>
<b>Password:</b>
<b>User Role:</b>
</form>
<%end if%>
Avatar billede starf Nybegynder
24. april 2006 - 13:49 #11
ok tak så virker det.. lige en sidste ting:

min insert sql statement har lidt problemer:

<% if mode = "submit" then %>
<%

SQL = "Insert into tickets"
set rs = Conn.execute(SQL)

rs.AddNew

if Request.Form("name") <> "" then
rs("user") = Request.Form("Name")
end if
if Request.Form("email") <> "" then
rs("email") = Request.Form("Email")
end if
if Request.Form("isue") <> "" then
rs("headline") = Request.Form("isue")
end if
if Request.Form("desc") <> "" then
rs("msg") = Request.Form("desc")
end if
rs("status") = "Open"
rs("date") = date()
rs("ip") = Request.ServerVariables("REMOTE_ADDR")
rs.Update
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing%>


<% end if %>

den giver bare:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[MySQL][ODBC 3.51 Driver][mysqld-4.1.12a-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

/support_list.asp, line 107

linie 107 er

set rs = Conn.execute(SQL)
Avatar billede ldanielsen Nybegynder
24. april 2006 - 13:55 #12
Du skal ikke bruge INSERT på den måde. Du skal bruge SELECT, så du åbner et recordset med de kolonner du vil bruge (Jeg bruger * her for nemheds skyld). Så tilføjeg du en post med AddNew, fylder ud og gemmer med Update:


SQL = "SELECT * FROM tickets"
set rs = Conn.execute(SQL)

rs.AddNew

if Request.Form("name") <> "" then
rs("user") = Request.Form("Name")
end if
if Request.Form("email") <> "" then
rs("email") = Request.Form("Email")
end if
if Request.Form("isue") <> "" then
rs("headline") = Request.Form("isue")
end if
if Request.Form("desc") <> "" then
rs("msg") = Request.Form("desc")
end if
rs("status") = "Open"
rs("date") = date()
rs("ip") = Request.ServerVariables("REMOTE_ADDR")
rs.Update
rs.Close
Set rs = Nothing
Connect.Close
set Connect = Nothing
Avatar billede ldanielsen Nybegynder
24. april 2006 - 13:57 #13
Det undrer mig egentlig hvorfor du skriver Conn.execute(SQL), men Connect.Close. Hedder din connection Conn eller Connect?
Avatar billede starf Nybegynder
24. april 2006 - 14:05 #14
bare glemt at ændre det.. tnx for hjælpen men nu får jeg dog:


ADODB.Recordset error '800a0cb3'

Object or provider is not capable of performing requested operation.

/support_list.asp, line 109

linie 109 er:
rs.AddNew
Avatar billede ldanielsen Nybegynder
24. april 2006 - 14:18 #15
Du skal åbne dit recordset så det ikke er readonly:

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open , Conn, 3, 3

rs.AddNew

if Request.Form("name") <> "" then
rs("user") = Request.Form("Name")
end if
if Request.Form("email") <> "" then
rs("email") = Request.Form("Email")
end if
if Request.Form("isue") <> "" then
rs("headline") = Request.Form("isue")
end if
if Request.Form("desc") <> "" then
rs("msg") = Request.Form("desc")
end if
rs("status") = "Open"
rs("date") = date()
rs("ip") = Request.ServerVariables("REMOTE_ADDR")
rs.Update
rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing
Avatar billede starf Nybegynder
24. april 2006 - 14:27 #16
det giver mig bare

Microsoft OLE DB Provider for ODBC Drivers error '80040e0c'

Command text was not set for the command object.

/support_list.asp, line 110
Avatar billede ldanielsen Nybegynder
25. april 2006 - 08:56 #17
Undskyld, jeeg plejer at bruge en anden lidt mere besværliag syntaks.

Prøv sådan:

SQL = "SELECT * FROM tickets"

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open SQL, Conn, 3, 3

rs.AddNew

if Request.Form("name") <> "" then
rs("user") = Request.Form("Name")
end if
if Request.Form("email") <> "" then
rs("email") = Request.Form("Email")
end if
if Request.Form("isue") <> "" then
rs("headline") = Request.Form("isue")
end if
if Request.Form("desc") <> "" then
rs("msg") = Request.Form("desc")
end if
rs("status") = "Open"
rs("date") = date()
rs("ip") = Request.ServerVariables("REMOTE_ADDR")
rs.Update
rs.Close
Set rs = Nothing
Conn.Close
set Conn = Nothing
Avatar billede starf Nybegynder
25. april 2006 - 09:19 #18
sådan det virker.. smid et svar og tak for hjælpen!
Avatar billede ldanielsen Nybegynder
25. april 2006 - 09:40 #19
Ok, tak

Og undskyld rod og misforståelser undervejs ...


rs.Open SQL, Conn, 3, 3

3 og 3 er hhv. Cursortype og Locktype (Slå selv værdierne op hvis du vil). Hvis du bruger samme kode, men med:

rs.Open SQL, Conn, 0, 1

- får du et recordset der ikke kan opdateres, men til gengæld kræver det kun meget få ressourcer at åbne det.
Avatar billede starf Nybegynder
25. april 2006 - 09:51 #20
tak for forklaringen og tippet og helt i orden :) forsat god dag!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester