22. juni 2002 - 23:18Der 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);
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
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:
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.
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.
Jeg takker for indsatsen, men det førte desværre ikke til noget brugbart resultat. Jeg har fundet en anden løsning.
Synes godt om
Ny brugerNybegynder
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.