Jens Jensen skrev:
> Når du opdaterer formen får du en kommasepareret liste af
> id-numre der har betalt. Den er let at bruge i en...
En teknisk note. Det er mig der har skrevet teksten i den første
del af dit indlæg. Det er helt fint at medtage citater - men du
skal huske at markere dem som citater. Normalt vil dit program gøre
arbejdet for dig - du skal bare klippe de ting du ikke har
kommentarer til væk. Hvis du vil medtage tekst fra et tidligere
indlæg (og teksten ikke findes i det indlæg du besvarer) bør du som
minimum huske at skrive at det er et citat - og helst også visuelt
markere at det ikke er din egen tekst. Det kan fx være ved at
indsætte tabulator før (alle) linjer, bruge et citattegn[1] - fx "| "
eller markere start og slut på citatet ved hjælp af en streg [2]. I de
fleste tilfælde vil det dog være lettere bare at svare på et indlæg
der indeholder den tekst man vil citetere - altså i stedet for at
placere dit seneste svar som en opfølgning på dit eget indlæg fra
mandag formiddag kunne (og burde) du have placeret det som svar på mit
indlæg fra i fredags.
Tilbage til dit spørgsmål.
> Ovenstående kan jeg ikke helt gennemskue, det jeg har kastet
> mig ud i er nyt for mig. Vil formularen automatisk generer en
> kommasepareret liste der så kan håndteret med SQL og på den
> måde opdater databasen?
Ja. Det eneste du skal kontrollere er at du ikke sender en tom
liste til databasen - det kan den ikke håndtere.
Hvis du har 10 checkboksfelter med navnet "betalt" og værdierne fra
1-10 vil du få følgende output med forskellige testdata (med
request.form("betalt"))
Jeg bruger tre kolonner til at markere hhv. hvad der er valgt på
formen, hvad indholdet af Request.Form("betalt") bliver og til
sidst hvordan det ser ud med paranteser omkring.
Intet markeret => "" => ()
Hak i nr. 6 => 6 => (6)
Hak i nr. 1, 3, 8 og 9 => 1,3,6,9 => (1,3,6,9)
Bortset fra den første linje vil alle værdier være mulige at bruge
i den nævnte sql-sætning.
"SELECT * FROM tabel WHERE idNr IN (1,3,6,9)" er det samme som
"SELECT * FROM tabel WHERE idNr = 1 OR idNr = 3 OR idNr = 6 OR
idNr = 9"
En update- eller delete-forespørgsel vil fungere på præcis samme
måde.
> SET betalt = True
> Der er en side som fortæller om der er betalt eller ej, så jeg
> kan vel ændre "true" til ja eller giver det problemer?
Der er forskel på et internt format og et vist format. Hvis du
bruger et boolesk felt (ja/nej-felt) til at markere betalingsstatus
så er der kun to gyldige værdier: True eller False. Du kan - både i
Access og på en hjemmeside - vælge mange forskellige måder at vise
disse værdier på - men når du skriver sql-kode må du kun bruge de
"rigtige" værdier - altså SET betalt = True eller SET betalt =
False. Det gælder _kun_ hvis betalt er et boolesk felt (men i og
med at du gemmer sandhedsværdier i feltet er det et meget logisk
valg).
> Jeg har ikke rigtig nogen ide om hvordan jeg klare WHERE id
> IN ( <liste fra formen> ) , kunne jeg få et hint?
Se ovenfor. Du får en liste med et eller flere tal i, adskilt af
kommaer. Det eneste du skal gøre er at sætte paranteser udenom og
så benytte den IN-syntaks jeg har gennemgået længere oppe i
indlægget. Når du opbygger din sqlstreng skal du undersøge om
listen er tom - fordi "IN ()" ikke er et gyldigt kriterium. Hvis
listen er tom behøver du ikke udføre nogen kode - så er der jo
ingen poster at opdatere.
> ASP er en svær en
Det er vist mere sql du har problemer med. Har du prøvet en
databasetutorial?
Noter:
======
[1] Her er det _ikke_ smart at bruge ">" med mindre man har helt styr på
hvor mange man skal bruge. Citattegnet ">" angiver at teksten
stammer fra et indlæg x niveauer før det aktuelle indlæg, hvor x
er antallet af ">"-tegn.
[2] Kan man lave streger i et newsindlæg? Ja det kan man da - fx sådan
__________________________________________
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på
http://usenet.dk/netikette/citatteknik.html