Avatar billede chrisrj Forsker
11. juli 2002 - 18:25 Der er 18 kommentarer og
1 løsning

At opdatere db vha. dropdown-liste

Ja, som sagt skal jeg opdatere i db på baggrund af et valg i listen, men IKKE før brugeren trykker på knappen.

Min kode indtil videre:

<!-- #include file="databaseconn.asp" -->
<%
Set sr = Server.CreateObject("ADODB.RecordSet")

sql = "SELECT * FROM profiler ORDER BY navn"

sr.Open sql, conne, adOpenKeyset, adLockOptimistic


%>
<SELECT name="profil">
  <option value="">Profil liste
  <option value="">------------------- 
<%if not sr.EOF then
  sr.Movefirst
  do until sr.EOF
%>  <option value="<%=sr("id")%>"><%=sr("navn")%></option>
<%  sr.Movenext
  loop
  sr.Movefirst
  Response.Write("</select>")
end if
%>
</td>
</tr>
<tr bgcolor="#F3F3F3">
  <td colspan=2 align="center">
    <input type="submit" value="Skift månedensprofil" size=20>
    <input type="Reset" value="Slet Alt" name="Reset">
  </td>

</tr>
</table>
</form>

<% end if %>
<% if mode ="tilfojet" then

  sqldel = "DELETE * FROM manedsprofil"
  set rseDelete = conne.Execute(sqldel)
  sqlsel = "select * from profiler where profiler.id="
rse.AddNew
      rse("navn") = Request.form("navn")
      rse("tekst") = Request.form("tekst")
    rse("manedsprofil") = Request.form("manedsprofil")
      rse.Update
%>


Der er så i "sqlsel.." linien jeg mangler noget, jeg kunne forestille mig at det var noget i retning af request.bla bla, eller er jeg hvad galt på den?
Avatar billede hells Nybegynder
11. juli 2002 - 18:33 #1
udskift:
  sqldel = "DELETE * FROM manedsprofil"
  set rseDelete = conne.Execute(sqldel)
med:
  sqldel = "Delete * from manedsprofil Where id = " & Request.Form("profil")

Så sletter den postenh, hvor id er det valgte.
Avatar billede chrisrj Forsker
11. juli 2002 - 19:28 #2
Det er ikke delete delen der er problemet.

Problemet er kommer når brugeren har valgt en profil og denne skal kopieres over i manedsprofil tabellen...
Avatar billede eagleeye Praktikant
11. juli 2002 - 19:39 #3
Er det dette du tænker på:

sqlsel = "select * from profiler where profiler.id=0"
rse.Open, Conne,1,3
rse.AddNew
rse("navn") = Request.form("navn")
rse("tekst") = Request.form("tekst")
rse("manedsprofil") = Request.form("manedsprofil")
rse.Update
Avatar billede chrisrj Forsker
11. juli 2002 - 19:58 #4
id = 0?

Nej, id skal tages fra listen og derefter den profil med det id hentes fra profiler-tabellen og sættes over i manedsprofil-tabellen.
Avatar billede eagleeye Praktikant
11. juli 2002 - 20:01 #5
ikke med?? du hendter data fra en form...

rse("navn") = Request.form("navn")
Avatar billede chrisrj Forsker
11. juli 2002 - 20:03 #6
beklager.. det er levn fra tidligere...

Jeg har KUN en liste med profiler.. :-)
Avatar billede eagleeye Praktikant
11. juli 2002 - 20:05 #7
arh.. nu tror jeg jeg er med ....

Sådan skal SQL'en være:
sqlsel = "select * from profiler where profiler.id=" & Request.Form("profil")
Set rs = Conne.execute(sqlsel)
Avatar billede eagleeye Praktikant
11. juli 2002 - 20:08 #8
Så har du et recordset med den valgte profil.

Sådan kunne SQL som sætter ind i manesprofil tabellen se ud. Jeg ved ikke helt hvor du får dine data fra??

strSQL = "INSERT INTO manedsprofil (navn, tekst, manedsprofil) VALUES ('" & rs("navn") & "','" & rs("tekst") & "','" & rs("manedsprofil") & "')"
Avatar billede chrisrj Forsker
11. juli 2002 - 22:03 #9
De dataer jeg skal have ind i maneds-tabellen er da det der kommer fra den select du lige har lavet!! ;-)
Avatar billede eagleeye Praktikant
11. juli 2002 - 22:06 #10
Ok så blvier det noget i stil med:

sqlsel = "select * from profiler where profiler.id=" & Request.Form("profil")
Set rs = Conne.execute(sqlsel)
'Indsæt i manedsprofil
strSQL = "INSERT INTO manedsprofil (navn, tekst, manedsprofil) VALUES ('" & rs("navn") & "','" & rs("tekst") & "','" & rs("manedsprofil") & "')"
Conne.execute(strSQL)
Avatar billede chrisrj Forsker
11. juli 2002 - 23:12 #11
Det virker ikke...

Den siger "elementet findes ikke" og henviser til "strSQL = ..." linien.

Profil-tabellen ser således ud: navn, adresse, medlemsnr, beskrivelse, erfaring, email, telefonnr, billednavn, headshot, id.

Manedsprofil-tabellen ser således ud: navn, tekst, id, admin, manedsprofil.

det er så navn, id, headshot fra profil-tabellen der skal kopieres over i manedsprofil-tabellen.

Jeg håber at jeg har forklaret mig godt nok nu... :-)
Avatar billede eagleeye Praktikant
12. juli 2002 - 07:44 #12
Så prøve denne linie:

strSQL = "INSERT INTO manedsprofil (Id, navn) VALUES (" & rs("id") & ",'" & rs("navn") & "')"
Avatar billede chrisrj Forsker
12. juli 2002 - 08:18 #13
Det virker... :)

Nu ser min sætning sådan ud:
strwSQL = "INSERT INTO manedsprofil (id, navn, admin, manedsprofil) VALUES ('" & rst("id") & "', 'RET MÅNEDSPROFIL','" & rst("navn") & "','" & rst("headshot") & "')"

Det virker så ikke, den sætter 'RET MÅNEDSPROFIL' ind i "navn"-kolonnen??

Skal man lave en variabel til det?
Avatar billede eagleeye Praktikant
12. juli 2002 - 08:29 #14
Nej det skulle være muligt at skrive det direkte i SQL sætningen.
Får du en fejl eller??
Avatar billede chrisrj Forsker
12. juli 2002 - 08:31 #15
Den skriver det i den forkerte kolonne, den bytter om på navn og månedsprofil...
Avatar billede eagleeye Praktikant
12. juli 2002 - 08:38 #16
Så skal du bytte rundt på enten felter i INSERT IINTO delen eller værdier i VALUE:

Man skriver efter tabelnavnet hvilke koller man vil sætte ind i:

INSERT INTO manedsprofil (id, navn, admin, manedsprofil)

Så skriver man i VALUES hvilke data man vil smide ind i kolonnerne, og data skal komme i samme rækkefølge som kolonnerne er listet. Den 1. i id den 2. i navn, den 3. i admin, den 4. i manedsprofil:

VALUES ('" & rst("id") & "', 'RET MÅNEDSPROFIL','" & rst("navn") & "','" & rst("headshot") & "')"

Men den får du ID->ID, 'RET MÅNEDESPROFIL'->navn. rst("navn")->admin, rst("headshot")->manedsprofil

Jeg vil gætte på  values skal se sådan ud:
VALUES ('" & rst("id") & "', '" & rst("navn") & "','" & rst("headshot") & "', 'RET MÅNEDSPROFIL')"
Avatar billede chrisrj Forsker
13. juli 2002 - 01:12 #17
Jeg har desværre ikke haft tid til at afrve dit foreslag, men i tabellen ( manedsprofil ) er kolonne rækkeføljen således: navn, tekst, id, admin, manedsrofil.

i profiltabellen er rækkeføljen: navn, addresse, medlemsnr, beskrivelse, erfaring, email, telefonnr, billednavn, headshot, id.

Det vil sige at den kan altså godt selv finde ud af at placere NOGLE af dem rigtigt, men ikke alle.

Men som sagt har jeg ikke prøvet dit sidste bud endnu... :-)
Avatar billede chrisrj Forsker
15. juli 2002 - 13:37 #18
Stort!!!!!!!!!!!

Det hjæper at sætte tingene rigtigt sammen... :-)
Avatar billede chrisrj Forsker
15. juli 2002 - 13:37 #19
Der skulle se sådan ud:

sqldel = "DELETE * FROM manedsprofil"
  set rseDelete = conne.Execute(sqldel)
  admin = "RET MÅNEDSPROFIL"
  sqlsel = "select * from profiler where profiler.id=" & Request.Form("profil")
  Set rst = Conne.execute(sqlsel)
  'Indsæt i manedsprofil
  strwSQL = "INSERT INTO manedsprofil (navn, id, admin, manedsprofil) VALUES ('" & rst("navn") & "', '" & rst("id") & "', '" & admin & "','" & rst("headshot") & "')"
  Conne.execute(strwSQL)
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