Avatar billede xicrow Nybegynder
25. september 2007 - 11:04 Der er 4 kommentarer og
1 løsning

Tjek ukendt antal input felter

Hey Eksperter.

Jeg sidder og roder lidt med nogle input felter, og har lavet det sådan at jeg ud fra en database lave en form, med et inputfelt for hver række i databasen. Det skal så være muligt at kunne ændre den værdi der står i feltet, (ved alle input felterne), og til sidst submittet de ændringer man har lavet.

Men da jeg ikke ved hvor mange input felter der bliver lavet, hvordan kan jeg så loope igennem dem alle sammen, og gemme eventuelle ændringer i databasen ?

Håber i forstår mit spørgsmål :)
Avatar billede nielle Nybegynder
25. september 2007 - 21:11 #1
En skitse til en mulig løsning:

<%
sql = "SELECT id, forNavn, efterNavn FROM dinTabel ORDER BY efterNavn ASC, forNavn ASC"
Set rs = Conn.Execute(sql)

Do While Nor rs.EOF
%>
<form action="gem.asp" method="post">
<input type="hidden" name="id" value="<% =rs("id") %>">
<input type="text" name="forNavn" value="<% =rs("forNavn") %>">
<input type="text" name="efterNavn" value="<% =rs("efterNavn") %>">
<input type="submit" value="Gem">
</form>
<%
    rs.MoveNext
Loop
%>

Altså en form pr. post i din tabel.

Og i gem.asp :

<%
id = Request.Form("id")
forNavn = Request.Form("forNavn")
efterNavn = Request.Form("efterNavn")

sql = "UPDATE dinTabel SET forNavn = '" & forNavn & "', efterNavn = '" & efterNavn & "' WHERE id = " & id
Conn.Execute(sql)
Avatar billede nielle Nybegynder
25. september 2007 - 21:12 #2
Du kan selvfølgelig også lave det i een stor tabel hvis du insistere, men det vil faktisk blive noget tungere at arbejde med.
Avatar billede xicrow Nybegynder
25. september 2007 - 21:27 #3
Godt bud, men skulle måske have sagt hvad jeg skulle bruge det til, nemlig en webshop...
Kender kun alt for godt løsningen med at lave en form / submit-knap ved hvert felt, og ville helst undgå det når den besøgende skal ind og kontrollere sin indkøbskurv..

Men nu havde jeg jo netop oprettet dette spørgsmål for at undgå at skulle ende med en masse forms / submit-knapper...

Men har dog også selv fundet en løsning, som ser sådan her ud:

<%
'Henter alle felter ved navn ID, og smider dem i et array
arrIDs = split(request.form("id"), ",")
'Henter alle felter ved navn QUANTITY, og smider dem i et array
arrQuantity = split(request.form("quantity"), ",")
'Sætter x til at være 0
x = 0

'Looper igennem arrayet med ID'erne
do while x <= ubound(arrIDs)
  'Tjekker om den pågældende ID skal slettes
  if request.form("remove" &trim(arrIDs(x))) = "on" then
    'Hvis den skal slettes...
    conn.execute("delete from shopping_basket where id=" &trim(arrIDs(x))& "")
  else
    'Hvis den ikke skal slettes
    conn.execute("update shopping_basket set basket_art_quantity=" &trim(arrQuantity(x))& " where id=" &trim(arrIDs(x))& "")
  end if
 
  'Ligger 1 til x
  x = x + 1
loop
%>

/xicrow
Avatar billede nielle Nybegynder
25. september 2007 - 21:34 #4
Fair nok, og så længe vi snakker om en relativt begrænset mængde data er det heller ikke noget problem med performance. Imidlertid kunne dit spørgsmål sagtens læses som om at det f.eks. var din kundebase du ville vedligeholde. Med maaaange rækker er det ikke godt for performance at opdatere samtlige rækker hver eneste gang.
Avatar billede xicrow Nybegynder
25. september 2007 - 21:39 #5
Nej det vil jeg da gerne give dig ret i, men med hensyn til brugervenlighed, vil jeg mene det er nemmere for brugeren at kunne lave alle ændringer og trykke på en knap, i stedet for at ændre en ting af gangen...

Bryder mig heller ikke om at have en masse submit-knapper over det hele :)

Men selvfølgelig går det ud over opdaterings hastigheden, men mener nu alligevel at det er det værd...
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