Avatar billede kaptajnkemo Nybegynder
22. juni 2002 - 23:18 Der er 6 kommentarer og
1 løsning

gruppere resultatet af form-variabler

I det følgende script generer jeg en form og fylder den med data fra min database, så brugeren kan submitte evt. rettelser.

På asp-siden er det så meningen at alle informationer skal smide tilbage i databasen. Men.... For at det kan lade sig gøre skal form-variablerne jo kunne grupperes, f.eks. efter id (primærnøglen fra databasen). Hvordan kan jeg gemme informationerne rigtigt?

scriptet------------->

sql_kald = "SELECT * FROM hold WHERE holdtype LIKE '" + holdtype + "' ORDER BY holdNr DESC";
                                            result = connection.Execute(sql_kald);
                                            count=0;
                                            //sqltmp = "INSERT INTO hold (holdstart,holdslut,holdtype,pladserLedig,Opdateret) VALUES (date(),date(),'teori b','20',date())";
                                            //tmpres = connection.Execute(sqltmp);
                                           
                                            while(!result.EOF){
                                                    holdNr = result("holdNr");
                                                    start = result("holdstart");
                                                    slut = result("holdslut");
                                                    type = result("holdtype");
                                                    ledig = result("pladserLedig");
                                                    opdateret = result("Opdateret");
                                                    id = result("id");
                                        %>
                                              <tr>
                                                    <td nowrap align="left"><input type="text" name="holdNr" size="3" value="<%Response.Write(""+ holdNr);%>"></td>
                                                    <td nowrap align="left"><input type="text" name="type" size="20" value="<%Response.Write(""+ type);%>"></td>
                                                    <td nowrap align="left"><input type="text" name="start" size="15" value="<%Response.Write(""+ start);%>"></td>
                                                    <td nowrap align="left"><input type="text" name="slut" size="15" value="<%Response.Write(""+ slut);%>"></td>
                                                    <td nowrap align="left"><input type="text" name="ledig" size="3" value="<%Response.Write(""+ ledig);%>"></td>
                                                    <td nowrap align="left"><input type="text" name="opdateret" size="15" readonly="yes" value="<%Response.Write(""+ opdateret);%>"></td>
                                                    <td nowrap align="left"><input type="hidden" name="id" size="15" value="<%Response.Write(""+ id);%>"></td>
                                                </tr>
                                                    <%
                                                result.MoveNext();
                                            }
                                        %>

script slut---------------->
Avatar billede kaptajnkemo Nybegynder
22. juni 2002 - 23:19 #1
fuk der røg formateringen af koden :(

skriv hvis i ikke kan finde rundt i det.....
Avatar billede tmceu Praktikant
23. juni 2002 - 01:58 #2
Hvor forfriskende at se lidt JavaScript :-)

Jeg antager at det er fordi du vil lave én stor form, tillade ændringer i alle poster og så kunne lave en samlet submit ?

I min verden er det lidt noget rod, for det betyder at du enten skal opdatere alle poster i databasen, uanset om de reelt er opdateret i formen eller ej, eller at du skal til at kontrollere for om der er foretaget en opdatering inden du opdaterer databasen. Begge dele er ineffektivt efter min mening.

Jeg laver normalt en seperat form pr. post og tillader kun at opdaterer én post ad gangen (og har dermed ikke behov for at kunne gruppere). Lidt afhængig af situationen, laver jeg så ofte også en redirect tilbage når der er opdateret, så brugeren ender samme sted på siden.

Men jeg kender også mennesker, der eks. postfixer alle feltnavne med ID, så det eks. bliver:

start12, slut12...., id12
start17, slut17...., id17
Avatar billede kaptajnkemo Nybegynder
23. juni 2002 - 05:22 #3
Du har fuldstændig ret i dine antagelser.... Det er præcis det jeg vil :)

Hvad man end gør i den situation bliver det noget rod :)
I denne specifikke situation har jeg valgt at det er vigtigere at brugeren kan ændre alle rækker på én gang. Det gør ikke noget at alle poster gemmes uanset om de er ændret eller ej, der bliver max tale om 5 poster på et givent tidspunkt.

Hvordan gør jeg så?
Avatar billede kaptajnkemo Nybegynder
24. juni 2002 - 12:55 #4
nogen som kan hjælpe??
Avatar billede tmceu Praktikant
24. juni 2002 - 13:18 #5
Jeg kan umiddelbart se 2 løsninger.

1. Du giver de enkelte felter samme navn, på tværs af ID.

Dette betyder at du får alle værdier tilbage i en komma-separeret streng. Denne kan du så smide i et array med split funktionen.

myArr = Split(Request.Form("Felt"), ",")

Værdierne vil herefter ved eks. 5 elementer ligge i myArr(0) - myArr(4)

Kunsten her bliver at holde disse felt-arrays synkrone på tværs af poster og du har et problem hvis der eks. i 3. post ikke skrives noget i et felt. Hermed vil værdierne i dette forskyde sig og du har ingen mulighed for at finde ud af, hvordan værdierne hænger sammen.

Men hvis du beslutter at alle felter altid skal udfyldes for alle poster, kan du lave en kontrol af om alle arrays er samme størrelse med UBound funktionen.

2. Postfixe dine felter med ID, så felterne kommer tilbage som

ID1
ID2
ID3
ID17
ID22

Start1
Start2
Start3
Start17
Start22

o.s.v.

Herefter skal du så have grupperet/parset de enkelte felter ved at kontrollere på de sidste karakterer. Du kunne evt. gøre det en smule nemmere, ved at navngive felterne Start001, Start002 o.s.v. så vil du kunne gruppere/parse med en simpel right funktion.
Avatar billede kaptajnkemo Nybegynder
24. juni 2002 - 13:38 #6
hvis jeg tager udgangspunkt i løsning 1, kan jeg så ikke bare lave et check på om alle felter er udfyldt inden jeg submitter?
Avatar billede kaptajnkemo Nybegynder
28. august 2002 - 10:13 #7
Jeg takker for indsatsen, men det førte desværre ikke til noget brugbart resultat. Jeg har fundet en anden løsning.
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