Avatar billede psyclown Nybegynder
23. januar 2003 - 21:16 Der er 76 kommentarer og
1 løsning

Array eller ?

Jeg har lavet et artikel system.
Når man vil oprette en artikel skriver man først overskriften og derefter en introduktion til artikel også har jeg lavet et felt hvor de kan skrive ind hvor mange sider artiklen skal være på. Når man så trykker submit bliver man smidt videre til en side, hvor man kan oprette de antal sider som man nu har tastet ind, stien ser nogenlunde sådan ud:
opret_sektioner.asp?artid=9&antalsider=3

Så har jeg lavet et loop som udskriver forms, alt efter hvor mange sider man vil have, det ser sådan ud:

For sidenr = 1 To AntalSider
  Her udskrives forms'ne så
Next

Mit problem er så, at alle forms'ne kan jo ikke hedde det samme, hvis man nu har sagt at man vil have 3 sider, så skal forms'ne jo f.eks. hedde:

Sidenavn1
Indhold1

Sidenavn2
Indhold2

osv.

Jeg ved at jeg skal lave en form for array, men jeg synes ikke rigtigt at jeg kan finde den rigtige metode til at gøre det.
Håber at der er en der kan hjælpe.

På forhånd tak!
Avatar billede alrua Nybegynder
23. januar 2003 - 21:18 #1
kald dem sidenavn[] og indhold[]
så får du dem som arrays når de bliver submittet :)
Avatar billede alrua Nybegynder
23. januar 2003 - 21:18 #2
virker i hvert fald i PHP ;)
Avatar billede jespernaur Nybegynder
23. januar 2003 - 21:21 #3
Prøv detteher, så kan du selv tilføje den resterende nødvendige HTML-kode:

For sidenr = 1 To AntalSider
  Response.Write "Sidenavn" & CStr(sidenr) & "<br>"
  Response.Write "Indhold" & CStr(sidenr) & "<br>"
Next
Avatar billede psyclown Nybegynder
23. januar 2003 - 21:33 #4
der er bare et lille problem ved at gøre det på den måde der jespernaur:
Jeg plejer at gøre det sådan her når jeg laver en side hvor man kan submitte noget:

SideNavn = Request.Form("SideNavn")
Indhold = Request.Form("Indhold")

Set conntemp = Server.CreateObject("ADoDB.Connection")
conntemp.open DSN
SQL = "INSERT INTO TABLE (SIDENAVN, INDHOLD) " &_
"VALUES ('"& SideNavn &"', '"& Indhold &"')"
conntemp.execute(SQL)
conntemp.Close´

Noget allá det der også mine forms, ser nogenlunde sådan ud:
<input type="text" name="SideNavn" value=""& SideNavn &"">
<input type="text" name="Indhold" value=""& Indhold &"">

Hvis jeg skal gøre det som jeg vil, kan jeg jo ikke gøre det på den måde der, uden at bruge noget array, for man kan jo ikke sige:

SideNavn & sidenr = Request.Form("SideNavn")
Indhold & sidenr = Request.Form("Indhold")

Håber du forstår hvad jeg mener...
Avatar billede hossein Nybegynder
23. januar 2003 - 21:45 #5
kan du måske hjælpe. Du lægger et til for hver af dem, har ikke prøvet:

<%
for i=1 to Request.Form("n").Count
  Response.Write(Request.Form("n")(i))
next
%>
Avatar billede hossein Nybegynder
23. januar 2003 - 21:46 #6
:) kan du = kan det
Avatar billede psyclown Nybegynder
23. januar 2003 - 21:59 #7
Det ser ikke rigtigt ud til at virke optimalt.
Jeg skal bruge noget alle variablerne og forms'ne kommer til at hedde noget forskelligt, hvis du forstår hvad jeg mener ?
Avatar billede alrua Nybegynder
23. januar 2003 - 22:04 #8
skift til php? ;)
Avatar billede jespernaur Nybegynder
23. januar 2003 - 22:25 #9
Nej, jeg forstår det ikke helt, da det du senest har skrevet indeholder oplysninger, der aldeles ikke fremgår af det oprindelige spørgsmål.

Sådan som jeg opfattede det, har du brug for at der på en enkelt side bliver oprettet et variabelt antal forme, hvor det ønskede antal kommer ind over en URL-parameter, omtrent som følger:

opret_sektioner.asp?artid=9&antalsider=3

Så kan du indefra opret_sektioner.asp få fat i antallet af sider med

AntalSider = Request.QueryString("antalsider")

Så kommer løkken, den skaber 'antalsider' forme på siden:

For sidenr = 1 To AntalSider
  Response.Write "<form name=""Sidenavn" & CStr(sidenr) & """ method=post>" & vbcrlf
  Response.Write "<input type=text name=Indhold" & CStr(sidenr) & ">" & vbcrlf
  Response.Write "</form> & vbcrlf
Next

Det kan være du skal rette HTML-koden lidt til. Det kan også være vi taler fuldstændig forbi hinanden, men lad os dog give det en chance.

Mvh
Jesper Naur
Avatar billede psyclown Nybegynder
23. januar 2003 - 22:58 #10
Jeg forstår godt hvad du mener med det og det du har skrevet der, har jeg også brugt før dvs. jeg kan godt bruge det der, men jeg skal bruge noget mere:

Den metode som jeg plejer at bruge, den som jeg beskrev længere oppe, skal jeg have lavet lidt om på, sådan at:
SideNavn = Request.Form("SideNavn")
bliver til:
SideNavn1 = Request.Form("SideNavn1")
SideNavn2 = Request.Form("SideNavn2")
osv.

Det er det jeg ville have været frem til fra starten af, men det har været lidt svært at forklarer det ordenligt.
Avatar billede burningice Nybegynder
23. januar 2003 - 23:28 #11
det du skal gøre er egentlig ret simpelt !! du skal lege lidt med collections...

På siden der skal requeste dine forms skriver du

Set conntemp = Server.CreateObject("ADoDB.Connection")
conntemp.open DSN

For each item in Request.Form
If Left(item, 4) = "side" Then
  SQL = "INSERT INTO TABLE (SIDENAVN, INDHOLD) VALUES ('"& Right(item, 1)  &"', Request.Form(item) &"')"
  conntemp.execute(SQL)
Next

conntemp.Close


Denne fremgangmåde kræver at du navngiver dine inputs med dette mønster: side1, side2, side3, side4 osv.
Avatar billede psyclown Nybegynder
23. januar 2003 - 23:29 #12
man må vel kunne lave et array af en art, som ligger inde i det loop som jeg har lavet og laver:
SideNavn1 = Request.Form("SideNavn1")
SideNavn2 = Request.Form("SideNavn2")
alt efter hvor mange sider man vil lave..
Avatar billede jespernaur Nybegynder
23. januar 2003 - 23:29 #13
Det begynder at ligne et tilfælde for 'Execute' funktionen. Execute tillader dig at opbygge en streng med noget kode, og derefter få det udført. Noget i retning af:

For sidenr = 1 To AntalSider
  str = "SideNavn" & sidenr & " = Request.Form(""SideNavn" & sidenr & "")"
  Response.Write "vil nu udføre " & str & "<br>"    ' dette er en testudskrift
  Execute str
Next

Mvh
Jesper Naur
Avatar billede burningice Nybegynder
23. januar 2003 - 23:30 #14
alrua>> bah... php er noget gammelt skidt, ligesom asp. få hellere lært noget JSP eller ASP.Net
Avatar billede jespernaur Nybegynder
23. januar 2003 - 23:34 #15
cyberfessor>> bliv væk hvis du ikke har bedre ting at sige
Avatar billede burningice Nybegynder
23. januar 2003 - 23:36 #16
jespernaur>> ?? bedre at sige? det er dig der ævler om alle mulige kringlede måder der ikke hører hjemme nogen steder.
Avatar billede psyclown Nybegynder
23. januar 2003 - 23:38 #17
jamen cyberfessor, du må da godt komme med en bedre løsning hvis du har det ???
Avatar billede burningice Nybegynder
23. januar 2003 - 23:40 #18
jespernaur>> og hvis det er min kommentar omkring php/asp du hentyder til, så kommer du ikke udenom at det er noget gammelt skidt... ligesom at du ikke vil råde nogen til at lære windows 95.
Avatar billede burningice Nybegynder
23. januar 2003 - 23:40 #19
læs dog min kommentar!!

Kommentar: cyberfessor
23/01-2003 23:28:55
Avatar billede psyclown Nybegynder
23. januar 2003 - 23:49 #20
lol, det må du sq undskylde cyberfessor, jeg havde overset din kommentar
Avatar billede burningice Nybegynder
23. januar 2003 - 23:50 #21
det er ok, det kan jo ske :)
Avatar billede psyclown Nybegynder
24. januar 2003 - 00:06 #22
Det ser lovende ud, men jeg tror ikke at du har forstået hvad jeg mener ellers har jeg bare ikke kunne forklarer det ordenligt...jeg prøver lige engang til:

Først har jeg mit loop:
For sidenr = 1 To AntalSider 'AntalSider for jeg fra Request("AntalSider")

Inde I det loop skal jeg kan lavet et array som kan gøre følgende følgende: (taget fra mit originale script)

ArtikelID1 = Request("artid")
SideNavn1 = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn1"))))
Tekst1 = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst1"))))

Set conntemp = Server.CreateObject("ADoDB.Connection")
conntemp.open DSN
SQL_NY_SEKTION = "INSERT INTO ART_SEKTIONER (SEK_ARTID, SEK_SIDENR, SEK_TITEL, SEK_INDHOLD) " &_
"VALUES ('"& ArtikelID1 &"', '"& sidenr &"', '"& VildereTegn(SideNavn1) &"', '"& VildereTegn(Tekst1) &"')"
conntemp.execute(SQL_NY_SEKTION)

og det samme med de forms som jeg har i mit script: (dette er ikke taget fra mit eget script)

<input type="text" name="SideNavn1" value=""& SideNavn1 &"">
<input type="text" name="Tekst1" value=""& Tekst1 &"">

Det overstående skal laves for det antal sider som der nu er i Request("AntalSider") og for hver side, skal alle variablerne osv. have hvert sit nummer dvs. hvis tallet i Request("AntalSider") nu er 4 skal det se sådan ud:

ArtikelID1 = Request("artid")
SideNavn1 = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn1"))))
Tekst1 = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst1"))))

ArtikelID2 = Request("artid")
SideNavn2 = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn2"))))
Tekst2 = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst2"))))

ArtikelID3 = Request("artid")
SideNavn3 = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn3"))))
Tekst3 = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst3"))))

ArtikelID4 = Request("artid")
SideNavn4 = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn4"))))
Tekst4 = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst4"))))

Og det samme med alle forms'ne og det hele vil jeg gerne have lavet ved hjælp af et array eller hvad der nu kan bruges.

Nu håber jeg at jeg har forklaret det ordenligt, så i kan forstå mig :)
Avatar billede burningice Nybegynder
24. januar 2003 - 00:15 #23
NEJ... du behøver IKKE at hive dine inputs ind i hver sin variabel !!

hvis vi nu tager det fra starten... 1) jeg vil lave det lidt anderledes end du har lavet det... giv mig 5 minutter, så viser jeg dig en side hvorpå det fungerer som jeg tror du vil have det
Avatar billede burningice Nybegynder
24. januar 2003 - 00:32 #24
er det noget i den her retning du søger, evt. med en tekstboks til sidenavnet også?

http://www.burningice.dk/eksperten.dk/308990/?sider=4
Avatar billede psyclown Nybegynder
24. januar 2003 - 00:42 #25
ja, det er nødagtigt det jeg søger, du kan prøve at kigge her:
http://www.cichlide-net.dk/opret_sektioner.asp?artid=10&antalsider=3

Det er sådan som det ser ud nu, input felterne, har bare ikke forskellige navne
Avatar billede burningice Nybegynder
24. januar 2003 - 00:52 #26
koden til siden som jeg lavede er følgende... rimelig enkelt og ligetil, så mon ikke du kan rette den til så den passer til dit behov?

<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    For Each item In Request.Form
        If Left(item, 5) = "Tekst" Then
            Response.Write "Du skrev følgende på side "& Right(item, 1) &":<br />"
            Response.Write Request.Form(item) &"<br /><br />"
        End If
    Next

Else

intPages = Request.Querystring("sider")
If intPages = "" Then
    intPages = 1
Else
    intPages = CInt(intPages)
End If
%>
<form method="post" action="default.asp">
<%
For i = 1 to intPages
    Response.Write "Side "& i &"<br />"
    Response.Write "<input type=""text"" name=""Tekst"& i &"""> <br /><br />"
Next
%>
<input type="submit" value="submit">
</form>

<%
End If
%>


En anden måde at gøre det på er at du giver dine input's navnene sidenavn1, fonttype1, fontstørrelse1, fontfarve1, tekst1 osv... PLUS at du laver et hidden field der f.eks. hedder antalsider, som indeholder værdien på antal sider... på den måde kan du nemlig hente dine felter ud på denne måde:

For i = 1 to Request.Form("antalsider")
    Sidenavn = Request.Form("sidenavn"& i)
    Fonttype = Request.Form("fonttype"& i)
    osv. osv.

    SQL = "INSERT INTO tabel (sidenavn, fonttype...) VALUES ('"& Sidenavn &"','"& Fonttype &"',...)
    Conn.Execute(SQL)
Next


Var det måske en bedre løsning?
Avatar billede psyclown Nybegynder
24. januar 2003 - 01:00 #27
Jeg synes begge løsninger er gode, så jeg vil bare lige teste dem også give dig dine point
Avatar billede burningice Nybegynder
24. januar 2003 - 01:03 #28
du siger bare til hvis du skal have hjælp :)
Avatar billede psyclown Nybegynder
24. januar 2003 - 01:23 #29
Jeg kigger på det imorgen, bliver nød til at smutte i seng nu
Avatar billede psyclown Nybegynder
24. januar 2003 - 18:01 #30
Jeg har lige prøvet dit sidste forslag der, jeg kan se at det burde virke, men den kommer med en fejl længere oppe i mit script, jeg tænkte på om du lige kunne kigge på det, jeg har ikke selv never til at sidde og kigge på det mere.

Hvis du gider, så kan jeg da lige skrive URL'en til dig og fejlmeldelingen selvfølgelig.
Avatar billede burningice Nybegynder
24. januar 2003 - 18:30 #31
du kommer bare med det, så får vi se hvad jeg kan gøre :)
Avatar billede psyclown Nybegynder
24. januar 2003 - 18:42 #32
Hvis du går ind på:
http://www.cichlide-net.dk/opret_sektioner.asp?artid=10&antalsider=3
Prøv at skrive noget i felterne og tryk submit, så kommer der følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ARTID ='.

/opret_sektioner.asp, line 21

Jeg kan ikke se, at det har noget med det at gøre, men du kan prøve at kigge lidt på det her:
http://www.cichlide-net.dk/opret_sektioner.txt <- koden til siden

Håber du kan finde ud af det :)
Avatar billede burningice Nybegynder
24. januar 2003 - 18:54 #33
well.. det er da meget nemt... ArtID er tomt... prøv at skriv Request.Querystring("ArtID") istedet for bare Request
Avatar billede burningice Nybegynder
24. januar 2003 - 18:55 #34
bah... mig der sover...

det som sker er at, når du trykker på submitknappen, bliver du sendt hen til denne side http://www.cichlide-net.dk/opret_sektioner.asp?side=opret, og her er det IKKE noget der hedder artID, og derfor vil den være tom når du executer din sqlstreng.
Avatar billede psyclown Nybegynder
24. januar 2003 - 20:45 #35
Den burde vel slet ikke køre den øverste del af scriptet igennem, den burde vel bare køre den del igennem, som står indenfor:

If Request("side") = "opret" Then

End If

Eller ??
Avatar billede burningice Nybegynder
24. januar 2003 - 20:51 #36
heheh... det gør den også... du skal dog huske på, at vbscript bliver udført fra oven og ned... det har både sine ulemper, og fordele... flest ulemper, hvilket betyder at du skal dele din side op i to, en til hvad der skal køre når side = opret, og en til resten... en bedre måde at gøre det på var måske at tjekke om der bliver postet til siden...

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
'Der er sørme blevet postet til siden, så mon ikke vi skal udføre lidt databasesjov?
Else
'Æv hvor kedeligt... siden bliver bare vist normalt
End If
Avatar billede burningice Nybegynder
24. januar 2003 - 20:53 #37
hmm, det var vist ikke ordenlig dansk... det jeg ville sige var, at IIS sørger for at eksekvere AL koden på siden, med mindre du fortæller den at "det må du ikke"... og siden at du ingen steder har skrevet at

  SQL_FIND_ARTIKEL = "SELECT * FROM ARTIKLER WHERE ARTID = "& Request("ArtID")
  Set rsFindArtikel = conntemp.execute(SQL_FIND_ARTIKEL)

ikke må køre, hvis side = opret, så gør den det, selvom ArtID er tomt
Avatar billede psyclown Nybegynder
24. januar 2003 - 21:00 #38
Jeg har lige prøvet at lave om på det, men den kommer med samme fejl...Jeg ved dog ikke om det er rigtigt sat op, men det kan du jo lige kigge på...

Mon ikke det bare ville være nemmere, hvis jeg satte SQL'en og den løkke efter alle forms'ne også dele siden op i 2 eller sådan noget ??
Avatar billede burningice Nybegynder
24. januar 2003 - 21:17 #39
nu kan jeg selvfølgelig ikke se koden for din side, men det nemmeste ville nok være, at poste fra opret_sektioner.asp til opret_sektioner_nu.asp og så redirecte tilbage til opret_sektioner.asp når du har sat data'erne ind i databasen.
Avatar billede psyclown Nybegynder
24. januar 2003 - 21:30 #40
http://www.cichlide-net.dk/opret_sektioner.txt <-- du kan stadig se koden for siden der...
Nu har jeg gjort som jeg beskrev før, tror du at det er noget som virker eller er jeg helt på den forkerte side ??
Avatar billede psyclown Nybegynder
24. januar 2003 - 21:31 #41
Hvis det der ikke er en god løsning, så vil jeg gøre som du lige beskrev, da det somsagt er den nemmeste løsning
Avatar billede burningice Nybegynder
24. januar 2003 - 21:40 #42
ah... sidst jeg kiggede på siden havde du ikke opdateret den med den nye kode...

jo, sådan er den mest normale måde at gøre det på.. HUSK dog at redirecte brugere tilbage til opret_sektioner.asp, ellers vil han bare blive præsenteret for en blank side :(
Jeg vil også anbefale dig, nej... nærmest tvinge dig til, at bruge det REQUEST_METHOD tjek, da man ellers bare kan gå ind på opret_sektioner.asp?side=opret, og på den måde få en træls fejl.

så
    ElseIf Request("side") = "opret" And Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        For i = 1 To Request.Form("AntalSider")
            ArtikelID = Request("artid")
            SideNavn = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn"& i))))
            Tekst = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst"& i))))
       
            Set conntemp = Server.CreateObject("ADoDB.Connection")
            conntemp.open DSN
            SQL_NY_SEKTION = "INSERT INTO ART_SEKTIONER (SEK_ARTID, SEK_SIDENR, SEK_TITEL, SEK_INDHOLD) " &_
            "VALUES ('"& ArtikelID &"', '"& sidenr &"', '"& VildereTegn(SideNavn) &"', '"& VildereTegn(Tekst) &"')"
            conntemp.execute(SQL_NY_SEKTION)
            conntemp.Close
        Next
    End If
Avatar billede psyclown Nybegynder
24. januar 2003 - 21:45 #43
Det virker da sådan nogenlunde, men den kommer med en fejl:

Microsoft VBScript runtime error '800a000d'
Type mismatch: '[string: "2, 2"]'

/opret_sektioner.asp, line 226

Du kan selv lige prøve hvis det er, jeg tror det er fordi den løkke der bliver lavet, ikke funker ordenligt, for den indsætter nogle tal, isteder for teksten som man skriver ind.
Avatar billede psyclown Nybegynder
24. januar 2003 - 21:50 #44
linie 226 er:

For i = 1 To Request.Form("AntalSider")
Avatar billede burningice Nybegynder
24. januar 2003 - 22:02 #45
prøv at converter din Request.Form("AntalSider") til et tal...

CInt(Request.Form("AntalSider"))

det er nok en af de mest trælse ting i scriptsprog, at alle variabler er af typen variant... dette gør at du skal være ekstra påpasselig med at tjekke om de inputs du får er af den rigtige type... tal, streng eller noget tredie
Avatar billede psyclown Nybegynder
24. januar 2003 - 22:04 #46
Nu brokker den sig bare over CInt, som jeg lige satte ind :(
Avatar billede burningice Nybegynder
24. januar 2003 - 22:16 #47
hmm... sikker på at du ikke har lavet en lille stave fejl eller noget, for det skal den ikke brokke sig over...
Avatar billede psyclown Nybegynder
24. januar 2003 - 22:20 #48
Du kan kigge i koden, efter hvad jeg kan se så er der ikke nogen stavefejl
Avatar billede burningice Nybegynder
24. januar 2003 - 22:30 #49
fårk... nu er jeg sq rundforvirret....

<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
    For Each item In Request.Form
        If Left(item, 5) = "Tekst" Then
            Response.Write "Du skrev følgende på side "& Right(item, 1) &":<br />"
            Response.Write Request.Form(item) &"<br /><br />"
        End If
    Next
    For i = 1 To CInt(Request.Form("AntalSider"))
        Response.Write i
    Next

Else

intPages = Request.Querystring("sider")
If intPages = "" Then
    intPages = 1
Else
    intPages = CInt(intPages)
End If
%>
<form method="post" action="default.asp">
<%
For i = 1 to intPages
    Response.Write "Side "& i &"<br />"
    Response.Write "<input type=""text"" name=""Tekst"& i &"""> <br /><br />"
Next
%>
<input type="hidden" name="AntalSider" value="<%= intPages %>">
<input type="submit" value="submit">
</form>

<%
End If
%>

det virker... nøjagtig samme kode http://www.burningice.dk/eksperten.dk/308990/?sider=4
Avatar billede psyclown Nybegynder
24. januar 2003 - 22:42 #50
Okay, men det der har jeg aldrig leget med før..så hvordan skal jeg sætte min SQL op, så den smider det ind i db'en ??
Avatar billede burningice Nybegynder
24. januar 2003 - 22:54 #51
som sagt, så kan du se at koden ( For i = 1 To CInt(Request.Form("AntalSider"))) er nøjagtig samme som din, og det er det hidden field også (<input type="hidden" name="AntalSider" value="<%= intPages %>">) så med mindre at du har to navne der hedder AntalSider, så forstår jeg ikke hvorfor at den ikke kan køre en CInt på værdien
Avatar billede psyclown Nybegynder
24. januar 2003 - 23:02 #52
Jamen der er jo mere en et felt der hedder AntalSider, men det er jo den løkke der går det, det kan jeg jo ikke undgå...men jeg ved jo ikke om det har noget med det at gøre.

Hvis vi nu kunne få det andet forslag til at virke, så ville det jo være noget smartere.
Avatar billede burningice Nybegynder
24. januar 2003 - 23:07 #53
uhm.. kan du prøve at skrive Request.Form("AntalSider") ud på siden, før at du begynder at køre den For Next løkke?
Avatar billede psyclown Nybegynder
24. januar 2003 - 23:12 #54
Tror vi har fundet problemet måske...hvis du kigger på siden(lige ovenover submit knappen) der har jeg skrevet Request.Form("AntalSider") ud og der står 0.
Avatar billede burningice Nybegynder
24. januar 2003 - 23:19 #55
halloo... du kan ikke skrive Request.Form("AntalSider") ud FØR at siden er postet !!

skriv hellere sådan her

ElseIf Request("side") = "opret" And Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Response.Write Request.Form("AntalSider")
        For i = 1 To CInt(Request.Form("AntalSider"))
Avatar billede psyclown Nybegynder
24. januar 2003 - 23:27 #56
ups, sider og sover...er rimeligt træt af at sidde og fumle med det samme og det samme hele tiden....
Men nu skulle den være der
Avatar billede psyclown Nybegynder
25. januar 2003 - 01:53 #57
Det er altid dejligt når exp lige er nede en times tid :)
Avatar billede burningice Nybegynder
27. januar 2003 - 17:31 #58
det er ikke bare dejligt, det er superdejligt ;)... helt vildt dejligt...

fandt du ud af hvad der gjorde, at siden troede at Request.Form("AntalSider") absolut skulle indeholde "2, 2" ??
Avatar billede psyclown Nybegynder
27. januar 2003 - 18:28 #59
Nej, jeg forstår ikke at den det...det må vel være fordi at den tallet ind i Request.Form("AntalSider"), efter hvor højt tallet er. Hvis det havde været 3, så havde den skrevet 3, 3, 3..
Avatar billede psyclown Nybegynder
27. januar 2003 - 21:28 #60
Det er jo godt at jeg kan snakke dansk...

Nej, jeg forstår ikke at den gør det...det må vel være fordi at den sætter tallet ind i Request.Form("AntalSider"), efter hvor højt tallet er. Hvis det havde været 3, så havde den skrevet 3, 3, 3..
Avatar billede burningice Nybegynder
27. januar 2003 - 23:02 #61
Det virker meget meget absurd, for det burde den slet ikke... :( du kunne evt. prøve at sende antal sider som querystring istedet.... altså opret_sektion.asp?mode=opret&sider=4, og så requeste det med Request.Querystring("sider") istedet for Request.Form("AntalSider")... hvis det HELLER ikke virker, så er jeg helt på bar bund
Avatar billede psyclown Nybegynder
27. januar 2003 - 23:37 #62
Der var da noget der virkede, men jeg ville ønske at jeg ikke havde flere problemer (det ville du nok også :D), men prøv at kig lidt på det den skriver en i database, ligemeget hvad man skriver i forms'ne:

SEKID    SEK_ARTID    SEK_SIDENR    SEK_TITEL    SEK_INDHOLD
4    10    1    1    1
5    10    2    2    2
6    10    3    3    3
Avatar billede burningice Nybegynder
28. januar 2003 - 08:44 #63
uhm... prøv at lav en Response.Write på din sql, istedet for at execute den, så kan vi se hvad der står i den :)
Avatar billede psyclown Nybegynder
28. januar 2003 - 15:29 #64
tjaa, det var en god idé, men den nægter at skrive den ud...den skriver simpelhent ikke noget, ligemeget hvor jeg skriver det.
Avatar billede burningice Nybegynder
28. januar 2003 - 16:12 #65
hmm... altså... det her virker ikke?

For i = 0 to AntalSider
  SQL = "INSERT INTO..."
  Response.Write(SQL)
Next
Avatar billede burningice Nybegynder
28. januar 2003 - 21:57 #67
hehe... kære psyclown... da jeg skrev at du kunne bruge For i = 0 to Request.Querystring("AntalSider") lå det implicit i mit indlæg, at du også skulle rette

<form action=""opret_sektioner.asp?side=opret"" method=""POST"" name=""SkrivEmne"">"& vbCrLf

til

<form action=""opret_sektioner.asp?side=opret&antalsider "& AntalSider &""" method=""POST"" name=""SkrivEmne"">"& vbCrLf

... som det er nu er AntalSider jo tom (http://www.cichlide-net.dk/opret_sektioner.asp?side=opret indeholder ikke nogen AntalSider-querystring), så løkken ser derfor sådan her ud når du poster:

For i = 0 to 0

og den vil jo derfor ikke køre igennem en eneste gang
Avatar billede psyclown Nybegynder
30. januar 2003 - 00:53 #68
Okay, nu er det rettet, nu kan man da se hvad der sker...den skriver alle felter i en SQL, jeg har dog heller ikke forstået hvorfor alle felterne skulle hedde SideNavn1, Tekst1 osv.
Avatar billede burningice Nybegynder
30. januar 2003 - 09:03 #69
psyclown>> det skulle de fordi at vi skal kunne skelne mellem hvilket felt der hører til hvilken side...

jeg kan se på din side at du har kaldt alle dine felter for Navn1... det var jo ikke det du skulle... du skal kalde den første for Navn1, den næste for Navn2 og så fremdeleds
Avatar billede psyclown Nybegynder
30. januar 2003 - 16:57 #70
okay, men det var ikke sådan jeg havde forstået det du havde skrevet, men nu er det rettet.
den kommer med denne fejl, hvis jeg sætter SQL'en til at virke igen:

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/opret_sektioner.asp, line 235

Nu har jeg sat det sådan at du kan se SQL'en
Avatar billede psyclown Nybegynder
30. januar 2003 - 17:02 #71
linie 235 er selvfølgelig SQL strengen
Avatar billede burningice Nybegynder
30. januar 2003 - 23:08 #72
det er fordi at datatyperne ikke stemmer overens med dem databasen forventer at få... tjek dem, og husk at der ikker skal '' omkring tal.
Avatar billede psyclown Nybegynder
31. januar 2003 - 18:16 #73
aaaarrrrrrggggggggg, nu troede jeg lige at jeg havde fået det hele til at virke, men den opretter kun en side, men det siger vel sig selv...den skal vel redirecte til siden hvor den opretter siderne, men hvordan skal det se ud..skal det bare være den sti som jeg submitter til eller ??
Avatar billede burningice Nybegynder
01. februar 2003 - 16:36 #74
ElseIf Request("side") = "opret" And Request.ServerVariables("REQUEST_METHOD") = "POST" Then
        For i = 1 To Request.Querystring("AntalSider")
            ArtikelID = Request.Querystring("artid")
            SideNavn = Trim(RemoveHTML(HTMLConv(Request.Form("SideNavn"& i))))
            Tekst = Trim(RemoveHTML(HTMLConv(Request.Form("Tekst"& i))))
       
            Set conntemp = Server.CreateObject("ADoDB.Connection")
            conntemp.open DSN
            SQL_NY_SEKTION = "INSERT INTO ART_SEKTIONER (SEK_ARTID, SEK_SIDENR, SEK_TITEL, SEK_INDHOLD) " &_
            "VALUES ('"& ArtikelID &"', '"& i &"', '"& VildereTegn(SideNavn) &"', '"& VildereTegn(Tekst) &"')"
'            Response.Write (SQL_NY_SEKTION)
            conntemp.execute(SQL_NY_SEKTION)
            conntemp.Close
              Next
                    Response.Redirect "opret_sektioner.asp?side=opret&artid="& Request.Querystring("artid") &"&antalsider="& Request.Querystring("AntalSider") &""
    End If
Avatar billede psyclown Nybegynder
01. februar 2003 - 17:57 #75
weeeeeeee, endeligt virkede det.
Nu mangler jeg bare at du lige svarer, så du kan få dine meget velfortjente point også vil jeg bare sige tak for hjælper og tak for din store tålmodighed :D
Avatar billede burningice Nybegynder
01. februar 2003 - 19:46 #76
:) det var dejligt at du (endelig) fik det til at virke :)
Avatar billede psyclown Nybegynder
01. februar 2003 - 19:50 #77
det kan jeg godt forstå du siger :D
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