Avatar billede martin181 Nybegynder
06. februar 2007 - 12:05 Der er 11 kommentarer og
1 løsning

Dynamisk gemning - opbygning af "gemme-koden"

Hejsa,

jeg sidder og roder lidt med noget "dynamisk" gemning osv...

for lige at fortælle lidt om historien bag, så kommer der lige lidt her...

Jeg har en access database, som jeg kalder pilots - den har flg. indhold:
Tabel: Kollektion
Felter:
ID - autonummer
Model - text
Aktiv - text
Farve1 - text
Farve2 - text
Farve3 - text
Farve4 - text
Farve5 - text
Farve6 - text
Farve7 - text
Farve8 - text
Farve9 - text
Farve10 - text
Farve11 - text
Farve12 - text

(engang når jeg har fået min gem til at virke udvider jeg tabellen med det endelige antal felter - ja i min version 2 eller noget kunne det være fedt at den selv oprettede nye felter i tabellen - men det lader jeg ligge i første omgang...)

Jeg har en side, hvorpå jeg jeg udvælger hvor mange kombinationer, jeg har:

Opret.asp

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>Opret kollektion</title>
<meta name="Generator" content="Stone's WebWriter 4">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#660066" alink="#FF0000">
<H1>Opret kollektion</H1>
<br>
Hvor mange farver/størrelser skal der være?
<br><br>
<form action="opretindhold.asp" name="AntalFarveStr"><select name="Antal">
    <option>4</option>
    <option>8</option>
    <option>12</option>
    <option>16</option>
    <option>20</option>
    <option>24</option>
    <option>28</option>
    <option>32</option>
</select><br><br>
<input type="submit" value="Valg" name="Valg">&nbsp;<input type="reset" value="Fortryd" name="Fortryd"><br><br>
<INPUT TYPE="button" VALUE="Tilbage" ONCLICK="window.location.href='admin.asp'">
</form>
</body>
</html>

når jeg har valgt hvor mange jeg skal have, så sender jeg det tal videre til en side, hvor jeg opbygger min formular dynamisk - den hedder

opretinhold.asp og har flg. indhold:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>Opret indhold</title>
<meta name="Generator" content="Stone's WebWriter 4">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#660066" alink="#FF0000">
<H1>Opret indhold</H1>
<% dim farver, opret %>
<% farver = request("antal") %>
Du har valgt at ville have <H1><% response.write (farver) %></H1> farver med i din kollektion - er dette rigtigt?<br>
Så fortsæt bare.<br><br>
- ellers tryk <INPUT TYPE="button" VALUE="her" ONCLICK="window.location.href='opret.asp'">  for at gå tilbage.
<br><br><br>
<H1>Opret kollektionen her</H1>
<form action="opretkollektion.asp" name="Opretkollektion">
<TABLE BORDER = "1">
<TR>
<TD><strong>Model</strong></TD>
<TD><input type="text" size="10" maxlength="25" name="Model"></TD>
</TR>
<%
For opret = 1 to farver %>
<TR>
<TD>Farve/størrelse <% response.write (opret) %></TD>
<TD><input type="text" value="" name="farve<% response.write (opret) %>" size="10" maxlength="25"></TD>
</TR>
<% next %>
<TR>
<TD>&nbsp;</TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TD>Aktiv</TD>
<TD><select name="Aktiv">
    <option>Ja</option>
    <option>Nej</option>
</select></TD>
</TR>
</TABLE>
<input type="submit" value="Gem" name="Gem"><input type="reset" value="Ryd felterne" name="Fortryd">
</form>
</body>
</html>

mit problem kommer så, når jeg vil gemme mit indhold på dynamisk vis...

jeg har lidt forsøgt mig med flg. som jeg har fra et tidligere projekt - men det kan jeg ikke helt få til at virke bare i simpel udgave (hvor jeg kun har valgt 12) - men måske skal det også smides helt væk og der skal laves noget nyt - men der strander jeg lidt... nå, men her er koden til

opretkollektion.asp

<%
RESPONSE.BUFFER="True"

SET CONNECT = SERVER.CREATEOBJECT("ADODB.CONNECTION")
CONNECT.OPEN "DRIVER={Microsoft ACCESS DRIVER (*.MDB)}; DBQ=" & Server.MapPath ("pilots.mdb")

SQL = "INSERT INTO kollektion (Model, Farve1, Farve2, Farve3, Farve4, Farve5, Farve6, Farve7, Farve8, Farve9, Farve10, Farve11, Farve12, Aktiv)" & " VALUES ('" & REQUEST.form("Model")& "','" & request.form("Farve1")&"','" & REQUEST.form("Farve2")&"','" & REQUEST.form("Farve3") & "','" & REQUEST.form("Farve4") & "','" & REQUEST.form("Farve5") & "','"  & REQUEST.form("Farve6") & "','" & REQUEST.form("Farve7") & "','" & REQUEST.form("Farve8") & "','" & REQUEST.form("Farve9") & "','" & REQUEST.form("Farve10") & "','" & REQUEST.form("Farve11") & "','" & REQUEST.form("Farve12") & "','" & REQUEST.form("Aktiv") & "') "
Connect.Execute(SQL)
%>
<%
RESPONSE.REDIRECT("admin.asp")
%>

Så spørgsmålet er...

Er der nogen af jer derude, som kan hjælpe mig med at få opbygget den side, som jeg skal bruge til at gemme med?
Avatar billede fennec Nybegynder
06. februar 2007 - 12:38 #1
Problemet er altså at du nogen gange skal gemme 4 farver andre gange 32 farver?
Avatar billede martin181 Nybegynder
06. februar 2007 - 12:40 #2
jeps - det er forskelligt hvor mange gange jeg skal gemme - så det er der krøllen er...
Avatar billede martin181 Nybegynder
06. februar 2007 - 12:41 #3
hov ikke hvor mange gange... men hvor meget...
Avatar billede martin181 Nybegynder
06. februar 2007 - 12:42 #4
jeg har variablen "farver", der angiver hvor mange farver jeg skal have gemt... det er den jeg også har brugt på siden, hvor jeg opbygger min "input form"
Avatar billede fennec Nybegynder
06. februar 2007 - 12:48 #5
Jeg vil som det først ændre database opbygningen:

[Kollektion]
ID - autonummer
Model - text
Aktiv - text

[KollektionFarver]
ID - autonummer
kolID - tal (fremmednøgle til Kollektion.ID)
FarveNr - tal
farve - text

Data ville så se sådan ud:
[Kollektion]
1, 'Model 1', 'Aktiv 1'
2, 'En ny model', 'Nyt Aktiv'

[KollektionFarver]
1, 1, 1, 'rød'
2, 1, 2, 'blå'
3, 1, 3, 'rød'
4, 1, 4, 'grøn'
5, 2, 1, 'rød'
6, 2, 2, 'blå'
7, 2, 3, 'rød'
8, 2, 4, 'grøn'
Avatar billede martin181 Nybegynder
06. februar 2007 - 12:53 #6
så du mener at jeg skal have mine farver i tabel for sig?

og så have et andet sted, hvor jeg vedligeholder disse...

ja, det giver da faktisk mening...

starter med at ændre min database og venter så spændt på mere fra dig :-)
Avatar billede fennec Nybegynder
06. februar 2007 - 13:12 #7
Så skal du bare tilføje et lille hidden felt til din form på opret siden:

...
<H1>Opret kollektionen her</H1>
<form action="opretkollektion.asp" name="Opretkollektion">
<input type="hidden" name="farver" value="<%= farver %>"> <-- Indsæt denne linje
<TABLE BORDER = "1">
...

Også skal vi have tilpasset dint gem script. Det kommer om 5 min.

LOADING...
Avatar billede martin181 Nybegynder
06. februar 2007 - 13:15 #8
Så er den første rettelse taget med - venter spændt på det næste...
Avatar billede fennec Nybegynder
06. februar 2007 - 13:20 #9
...DONE

<%
'Indsæt kollektion
Connect.Execute("INSERT INTO kollektion (Model, Aktiv) VALUES ('" & REQUEST.form("Model")& "','" & REQUEST.form("Aktiv") & "') ")
'Hent ID'et på den oprettet kollektion
set rs = Connect.Execute("select @@identity as thisID")
ID = rs("thisID")
'Indsæt farver
farver = cInt(request.form("farver"))
for f=1 to farver
    Connect.Execute("insert into KollektionFarver(kolID,FarveNr,farve) values("& ID &","& f &",'"& request.form("farve"& f) &"')")
next
RESPONSE.REDIRECT("admin.asp")
%>

også manglede der lige en method="post" på formen:
<form action="opretkollektion.asp" name="Opretkollektion" method="post">
Avatar billede martin181 Nybegynder
06. februar 2007 - 14:09 #10
jeg får denne fejlmelding:

Microsoft VBScript runtime error '800a01a8'

Object required: 'Connect'

/pilots2/opretkollektion.asp, line 3

kan du gennemskue den?
Avatar billede martin181 Nybegynder
06. februar 2007 - 14:16 #11
min fejl... havde glemt selve connection til databasen...

nu virker det - mange tak for hjælpen - smider du et svar, så du kan få point?
Avatar billede fennec Nybegynder
06. februar 2007 - 14:30 #12
.o) <-- One Eyed Jack
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