Avatar billede karsten_larsen Praktikant
13. marts 2003 - 12:27 Der er 5 kommentarer og
1 løsning

Problem med en sql i i forbindelse med form

Jeg har oprettet en side, hvor brugeren indtaster en email. Brugeren får en email med et link som indeholde email og kode.

På link siden tjekkes email og kode med en database om det email og kode er gyldigt samt om brugeren har været der før. Har brugeren ikke været der før får denne nogle valg muligheder, har man været der før for man ingen valgmuligheder.Det virker perfekt.

Problemet er, at når valg mulighederne skal submittes så kan jeg ikke få dataer ind i databasen. Dataerne som skal ind er brugerens valg samt en værdi at brugeren har været der.

Nedenfor er submit delen og request delen

??:-) Karsten_Larsen

SUBMIT DEL
<FORM action="valg.asp?step=2" method="post">

  <tr>
    <td>
        <TABLE width="221" border="0" bordercolor="#FF0000">
      <TR>
          <TD width="137" class="valg">
          <INPUT type="radio" name="valg"  value="1" checked>Valg 1
        </TD>
      </TR>
      <TR>
        <TD><input type="radio" name="valg" value="2">Valg 2 </TD>
     
      </TR>
    </TABLE>   
    </td>
  </tr>


        <input type="hidden" name="email" value="<%Request.QueryString("email")%>">
        <input type="hidden" name="kode" value="<% Request.QueryString("kode")%>">

          <INPUT name="tjek" type="submit" value="Send">
        <INPUT type="reset" name="Submit2" value="Slet">

</FORM>

REQUEST DEL
' her saettes vaerdierne ind i databasen og saa man ikke kan proeve igen
    if Request.QueryString("step") = 2 then
    dim emailsendt,valg_sendt,kode_sendt
   
        emailsendt = Request.Form("email")
        valg_sendt = Request.Form("valg")
        kode_sendt = Request.Form("kode")
%>
        <!--#include file="valg.inc" -->
<%
    Set objRecInd = Server.CreateObject("ADODB.RecordSet")
    objRecInd.open "SELECT * FROM stamoplysninger WHERE email = '" & emailsendt & "'" , objConn, 1, 3
   
    If objRecInd("kode") = kode_sendt then   
            objRecInd("tjek") = 1
            objRecInd("valg") = valg_sendt
            objRecInd.Update
    end if   
       
       
    objRecInd.close
    set objRecInd = nothing
    objConn.close
    set objConn = nothing
    Response.write (Request.Form("Valget er registreret og der kan ikke vælges mere"))
                   
    end if
%>
Avatar billede nuno Nybegynder
13. marts 2003 - 12:43 #1
objRecInd.Update gemmer kun dine ændringer i recordsettet - du skal bruge objRecInd.UpdateBatch for at opdatere dem i databasen.

/nuno
Avatar billede tomh Nybegynder
13. marts 2003 - 12:48 #2
Eller evt. lave det lidt om, så du bruger en SQL-Update sætning.
Avatar billede karsten_larsen Praktikant
13. marts 2003 - 13:36 #3
-> nuno
det vil jeg lige prøve
Avatar billede karsten_larsen Praktikant
13. marts 2003 - 16:26 #4
Efter 2 kopper kaffe fandt jeg ud af, at jeg har blandet recordset og select sammen samtidig med at mine navne på variablerne ikke var stavet korrekt over  hele scriptet.

Til dem der kan bruge løsningen til noget ud over mig - er den:

Set objRecInd = Server.CreateObject("ADODB.RecordSet")
    objRecInd.open "stamoplysninger", objConn, 1, 3
   
        While not objRecInd.EOF
        If objRecInd("email") = emailsendt AND objRecInd("kode") = kode_sendt then   
            objRecInd("tjek") = 1
            objRecInd("valg") = valg_sendt
            objRecInd.Update
        end if   
    objRecInd. movenext
    wend   
       
    objRecInd.close
    set objRecInd = nothing
    objConn.close
    set objConn = nothing

<FORM action="valg.asp?step=2" method="post">

  <tr>
    <td>
        <TABLE width="221" border="0" bordercolor="#FF0000">
      <TR>
          <TD width="137" class="valg">
          <INPUT type="radio" name="valg"  value="1" checked>Valg 1
        </TD>
      </TR>
      <TR>
        <TD><input type="radio" name="valg" value="2">Valg 2 </TD>
     
      </TR>
    </TABLE>   
    </td>
  </tr>


        <input type="hidden" name="email" value="<%Response.Write(email)%>">
        <input type="hidden" name="kode" value="<% Response.Write(kode)%>">

          <INPUT name="tjek" type="submit" value="Send">
        <INPUT type="reset" name="Submit2" value="Slet">

</FORM>
</body>
</html>

->nuno : tak for hjælpen

:-) karsten_larsen
Avatar billede nuno Nybegynder
13. marts 2003 - 16:34 #5
Karsten> du må hellere få dine point tilbage - du løste jo selv problemet.

Jeg lurede lige lidt på .update og .updatebatch, og jeg havde misforstået forskellen mellem de 2. Og nærmere forklaring:

http://www.devguru.com/Technologies/ado/quickref/recordset_updatebatch.html
og
http://www.devguru.com/Technologies/ado/quickref/recordset_update.html

- batchupdate er, hvis recordsettet er i batchupdatemode - så gemmes ændringerne med .update "lokalt" indtil .batchupdate kaldes.

Men opretter som sagt lige et spsm så du kan få dine point igen :)

/nuno
Avatar billede nuno Nybegynder
13. marts 2003 - 16:37 #6
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