webForumDet fria alternativet

Hjälp med For-sats

ASP

7 svar · 267 visningar · startad av Havregryn

Medlem sedan juni 200288 inlägg
Frågan#1

Hej, jag har nu spenderat min morgontid med att försöka lösa så att det ska kunna gå att lägga till x antal länkar i ett länkarkiv. Det har gått ganska bra fram tills nu:

If Request.Querystring("val") = "nyLank" then

Response.Write "<form method='post' action='?val=nyLankSteg2'>" &_
"<br><b>Lägg till nya länkar</b><br><br>" &_
"Hur många länkar vill du lägga till?<br>" &_
"<input type='text' name='antalLankar' size='1'><br><br>" &_
"<input type='submit' value='Skicka'></form>"

ElseIf Request.Querystring("val") = "nyLankSteg2" then

Response.Write "<form method='post' action='?val=nyLankSteg3'>" &_
"<tr><td><b>Skriv in dina länkar</b></td>"

For X = 1 To Request.Form("antalLankar")

Response.Write "<tr><td><b>Namn " & X & ":</b></td><td><input type='text' name='namn' size='50'></td>" &_
"<tr><td><b>Kategori " & x & ":</b></td><td><input type='text' name='kategori' size='50'></td>" &_
"<tr><td><b>URL " & x & ":</b></td><td><input type='text' name='url' size='50'></td>" &_
"</td><tr><td><hr size='1' height='1' color='#eeeeee'></tr></td>"

Next
Response.Write "<tr><td><input type='submit' value='Skicka'></form></tr></td>"

ElseIf Request.Querystring("val") = "nyLankSteg3" then

For Each Value In Request.Form

namn = Request.Form("namn")
kategori = Request.Form("kategori")
url	= Request.Form("url")

objConn.Execute("INSERT INTO lankar (namn,kategori,url) VALUES('"& namn &"','"& kategori &"','"& url &"')") 	

Next
End If

Hmm... det fungerar, men det fungerar inte riktigt så som jag hade tänkt mig. För som det är nu så adderas all data i varje post. D.v.s om jag tex väljer att jag vill lägga till fem länkar, så hamnar alla fem länkarna i alla poster, i samma fält.
Ungefär så här:
Namn | Kategori | Url
a,b,c | k,j,a | f,ma,
a,b,c | k,j,a| f,m,a
Osv.

Jag vill ha det så att det blir så här:
Namn | Kategori | Url
a | k | f
b | j | m

Hoppas någon försår vad jag menar! :p

Medlem sedan jan. 20032 285 inlägg
#2

Kanske så här?

If Request.Querystring("val") = "nyLank" then
  Response.Write "<form method='post' action='?val=nyLankSteg2'>" &_
"<br><b>Lägg till nya länkar</b><br><br>" &_
"Hur många länkar vill du lägga till?<br>" &_
"<input type='text' name='antalLankar' size='1'><br><br>" &_
"<input type='submit' value='Skicka'></form>"
ElseIf Request.Querystring("val") = "nyLankSteg2" then
  Response.Write "<form method='post' action='?val=nyLankSteg3'>" &_
"<tr><td><b>Skriv in dina länkar</b></td>"

  For X = 1 To CInt(Request.Form("antalLankar"))
    Response.Write "<tr><td><b>Namn " & X & ":</b></td><td><input type='text' name='namn" & x & "' size='50'></td>" &_
"<tr><td><b>Kategori " & x & ":</b></td><td><input type='text' name='kategori" & x & "' size='50'></td>" &_
"<tr><td><b>URL " & x & ":</b></td><td><input type='text' name='url" & x & "' size='50'></td>" &_
"</td><tr><td><hr size='1' height='1' color='#eeeeee'></tr></td>"
  Next

  Response.Write "<tr><td><input type='submit' value='Skicka'></form></tr></td>"
ElseIf Request.Querystring("val") = "nyLankSteg3" then
  For Each Value In Request.Form
    intCount = intCount + 1
    namn = Request.Form("namn" & intCount)
    kategori = Request.Form("kategori" & intCount)
    url = Request.Form("url" & intCount)

    objConn.Execute("INSERT INTO lankar (namn,kategori,url) VALUES('"& namn &"','"& kategori &"','"& url &"')") 	
  Next
End If
Medlem sedan juni 200288 inlägg
#3

Hmm... Får följande fel dock:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Fältet 'lankar.namn' får inte vara tomt.
/bhif/admin.asp, line 292

Den pekar på följande rad:

objConn.Execute("INSERT INTO lankar (namn,kategori,url) VALUES('"& namn &"','"& kategori &"','"& url &"')")
Medlem sedan jan. 20032 285 inlägg
#4

Hm... Om du ändrar det blocket till det här då? :)

ElseIf Request.Querystring("val") = "nyLankSteg3" then
  For Each Value In Request.Form
    If intCount Mod 3 = 0 Then i = i + 1

    intCount = intCount + 1
    namn = Request.Form("namn" & i)
    kategori = Request.Form("kategori" & i)
    url = Request.Form("url" & i)

    objConn.Execute("INSERT INTO lankar (namn,kategori,url) VALUES('"& namn &"','"& kategori &"','"& url &"')") 	
  Next
End If
Medlem sedan juni 200288 inlägg
#5

Nu ser det bättre ut, MEN nu skrivs det ut x antal poster med samma innehåll, där X = med så många länkar man valde att lägga till.

Medlem sedan jan. 20032 285 inlägg
#6

Morgontrötthet? :OO

ElseIf Request.Querystring("val") = "nyLankSteg3" then
  For Each Value In Request.Form
    If intCount Mod 3 = 0 Then
      i = i + 1
      namn = Request.Form("namn" & i)
      kategori = Request.Form("kategori" & i)
      url = Request.Form("url" & i)

      objConn.Execute("INSERT INTO lankar (namn,kategori,url) VALUES('"& namn &"','"& kategori &"','"& url &"')")
    End If

    intCount = intCount + 1
  Next
End If
Medlem sedan juni 200288 inlägg
#7

Tack så mycket Sebbe! Nu fungerar det utmärkt!
Vad exakt betyder/gör följande kodsnutt?

If intCount Mod 3 = 0 Then
Medlem sedan dec. 20003 563 inlägg
#8

Det är en matematisk term som returnerar resten vid en division. Modus eller nått.

8 div 3 = 2 * 3 + 2
9 div 3 = 3 * 3 + 0
10 div 3 = 3 * 3 + 1
11 div 3 = 3 * 3 + 2

---

8 mod 3 = 2
9 mod 3 = 0
10 mod 3 = 1
11 mod 3 = 2

osv

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)