26. april 2012 - 22:58Der er
14 kommentarer og 1 løsning
Hvordan gemmer variablet antal felter
Håber det er den rigtige kategori - men ellers får jeg det jo nok at vide - og håber i øvrigt at få noget inspiration/hjælp til at komme videre:
Jeg roder lidt med hvordan jeg kan gemme pt. ca. 90 felter fra en formular (spørgeskema) i en mysql-tabel og tage højde for senere ændringer. Dvs at der kan komme flere, færre og andre spørgsmål, som skal gemmes med et sagsnr som key. Det er altså ikke nødvendigvis de samme spørgsmål der skal besvares for sager i dag og sager i fremtiden. tænker noget med et array hvor man gemmer de aktuelle spørgsmål sammen med svarerne. De enkelte sager skal ikke sammenlignes, så det gør ikke noget at der kommer til at ligge forskellige spørgsmål/svar på samme array-adresse (hedder det sådan?).
Spørgsmålene ændre sig ikke særligt ofte - måske årligt - og potentielt besvares de ca. 25.000 gange om året.
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Hvis der er, måske, et par hundrede forskellige spørgsmål hvoraf cirka 90 besvares for en sag, så kunne man måske bruge en database struktur med tre tabeller, (1) spørgsmål, der for hvert spørgsmål indeholder en id og spørgsmålets tekst, (2) sag, der for hvert sag indeholder sagsnummer plus måske yderligere data såsom sagens navn, type, dato, (3) sags_spørgsmål_svar med felterne id, sag_id, sp_id, svar.
Et måske over simplificeret eksempel:
tabellen spørgsmål indeholder tre spørgsmål:
spørgsmål id tekst 1 'din alder' 2 'fødselsdag' 3 'køn'
der er to sager hvoraf første sag bruger spørgsmål 1 og 3 og anden sag spørgsmål 2 og 3
sag id navn 1 jensen's sag 2 sag og behag
sags_spørgsmål_svar id sag_id sp_id svar 1 1 1 '25 år' 2 1 3 'nogenlunde' 3 2 2 '13-4-1944' 4 2 3 'går for at være køn'
Så kan du indrette spørgeskemaet (jeg går ud fra, at det er en html form) således at der for hvert spørgsmål er en <input type="hidden"> der indeholder spørgsmålets id. Når så brugeren sender formen af gemmer du i sags_spørgsmål_svar tabellen, for hvert spørgsmål i den pågældende sag, sagens id, spørgsmåælets id, og svarets ordlyd.
- det er vist noget i den stil jeg forestiller mig.
Lidt uddybende:
Sagstabellen (og en kundetabel) eksistere allerede, så derfor skal jeg bare registrere med sagsnr. I sagstabellen er allerede registreret "grunddata" for sagen (opgaver (1,2,3), adresse o.s.v)
Der skal besvares spørgsmål efter hvilke af tre opgaver der skal udføres - enten opgave 1+2 eller 3 eller 1+2+3.
Spørgsmålene er i stil med "Fungere maskinen?" (ja/nej/ved ikke), "hvis nej, hvad er der galt?"
Måske man kan danne formularen ud fra spørgsmåls-tabellen med en løkke? Dvs. jeg måske skal lave en formular til vedligehold af spørgsmål (grp., løbenr, spørgsmål, svarmuligheder, ekstraspørgsmål afhængigt af svar), men så skal den vist også lave noget javascript for at validere svar. Hmmm!
Jeg forstod problemstillingen som gående ud på hvordan du skulle gemme de svar brugerne gav på formularens spørgsmål, hvor formålet var senere at kunne trække brugernes svar ud. Den forståelse svarede jeg ud fra.
Nu jeg nærlæser, og efter din uddybning, kan jeg se, at hvert spørgsmål kan have forskellige svarmuligheder, såsom spørgsmålet "Virker maskinen?" med svarmulighederne "Ja", "Nej", og "ved ikke", og at formålet er at danne spørgeskemaer. Jeg må nu bede om yderligere uddybning:
(1) Er alle spørgsmål 'lukkede,' altså med bestemte svarmuligheder, eller er der også 'åbne' spørgsmål, hvor brugeren selv må komme med et svar? Et spørgsmål som "hvis nej, hvad er der galt?" ser ud som et åbent spørgsmål, med mindre der er givet bestemte svarmuligheder såsom "Maskinen kan ikke køre forlæns", "Maskinen kan ikke køre baglæns", "Maskinen kan hverken køre forlæns eller baglæns", og "Maskinen kører forlæns og baglæns på samme tid".
(2) Hvis alle spørgsmål er lukkede, har de så alle et bestemt antal, for eksempel 3, svarmuligheder, eller kan et spørgsmål have to muligheder (såsom "Ja" og "nej") eller kan antallet variere?
(3) Siger du, at der er tre forskellige opgaver, og for hver opgave er der et sæt spørgsmål, for eksempel opgave 1 har spørgsmål numre 1 til 30, opgave 2 spørgsmål 31 til 65, og opgave 3 spørgsmål 66 til 92? Og hver sag drejer sig om en enkelt eller en kombination af de tre opgaver? For eksempel at sag nummer 3417 er for opgave 2 alene og skal bruge et spørgeskema med spørgsmålene 31 til 65, sag nummer 7255 er for opgave 1 og 3 og skal bruge spørgsmålene 1 til 30 plus 66 til 92, o.s.v.
(4) Og siger du videre, at spørgsmålene og deres sammenstilling per opgave forbliver konstant for eksempel et års tid, hvorefter du kan foretage ændringer, for eksempel at du ændrer ordlyd eller svarmuligheder for spørgsmål 25, dropper spørgsmål 72, og tilføjer tre nye spørgsmål med svarmuligheder til opgave 2?
Opgave 1 Lige nu kun et spørgsmål med "lukket" svarmulighed "ja/nej"
Opgave 2 Pt 1 åbent spørgsmål "Årgang" (det kan jo så laves lukket men ikke særligt smart med en liste fra 1700-20nn) og 44 lukkede spørgsmål (ja/nej/ved ikke) og afhængig af det lukkede svar skal der uddybes "åbent".
Opgave 3 Kendes pt ikke, men forventes at ligne opgave 2
Et alternativ til at lave det hele i en database, er det at lave et redigerbart (pdf-)dokument, som kunden kan vælge at besvare på skærmen eller udskrive og besvare manuelt. Det sidste må jeg så indscanne. Efter besvarelsen gemmes hele dokumentet som f.eks "Oplysninger-vedr-$sagnr.pdf".
Tillægsspørgsmål: Hvordan får jeg data signeret med kundens NemId?
Skal jeg så ikke først lave en tilsvarende tabel der indeholder tomme skemaer, og hvor jeg kan lave en statuskode så jeg kan bestemme hvilket skema der er gældende?
Jeg er ved at tabe overblikket over spørgsmålet. Det drejer sig om (tror jeg) at folk skal besvare spørgsmål i forbindelse med sager. Men hvad skal der ske, når spørgsmålene er besvarede? Hvad er behovet?
Er de efterfølgende handlinger så få og simple, at det er tilstrækkeligt at have besvarelserne i 'hard copy'i en sagsmappe i et bestemt kontor som man så åbner og læser når der er behov derfor? I så fald er der naturligvis ingen grund til at involvere en database. Tre (redigerbare) word eller pdf spørgeskemaer, et for hver af de tre opgaver, som brugeren kan udfylde on-line og derefter printe ud og underskriver eller som brugeren kan udfylde og underskrive manuelt og som derefter gemmes i sagsmappen kunne i så fald være tilstrækkeligt, som du antyder i #7. I så fald har jeg ikke noget at tilføje.
Eller er det således, at besvarelserne må være tilgængelige forskellige steder og på forskellige tidspunkter, så man ikke kan være afhængig af en fysisk sagsmappe man skal hente på et kontor indenfor åbningstiderne, og at brugerne befinder sig forskellige steder, så det vil være upraktisk at skulle udveksle fysiske dokumenter, og kan der være brug for automatisk behandling af svarene, for eksempel statistikker over, hvor ofte maskinerne ikke virker, så man ikke kan være afhængige af at skulle bruge mennesker til at læse de besvarede spørgeskemaer? I så fald vil jeg meget anbefale at gøre brug af elektronisk processing med html formularer og at bevare besvarelserne i en database. I så fald kan jeg sandsynligvis være med til at foreslå løsninger.
Kan jeg bede dig entydigt at bestemme hvad nu behovet er før jeg går videre? Og hvis behovet er for elektronisk processing, hvordan kender du så en brugers NemId? Skal brugeren logge ind med brugernavn og adgangskode for at få adgang til at besvare spørgsmålene?
1) Mit spørgsmål går dybest set på at finde ud af, om det "bare" er en løsning med nogle redigerbare word/pdf eller en html-formular/mysql-db og om det i det hele taget er noget jeg selv kan lave.
2) Løsningen skal tilgodese, at jeg er "papirløs". Dvs. at papirdokumenter pt. indscannes og gemmes i en sagsmappe (i skyen). Men målet er at blive helt fri for scanningsproceduren.
3) Det udfyldte spørgeskema skal ved en eventuel tvist kunne bruges som dokumentation for kundens afgivne oplysninger - det skal derfor være signeret (NemId!) og gemmes sikkert i et antal år. Det stiller nogen krav til at data ikke kan ændres efter signering. Data skal måske ovenikøbet gemmes hos en trediepart som står inde for ægtheden.
4) Det skal være forholdsvis enkelt at redigere spørgeskemaerne, når kravene til spørgsmålene opdateres af myndighederne (3 forskellige!)
5) De afgivne oplysninger skal være nemt tilgængelige for mig selv og min medarbejder uden at være afhængig af sted (skyen) og må ikke kunne redigeres (men gerne kommenteres) efter signering af kunden.
6) Hvordan får jeg adgang til at kunden kan signere med NemId?
Nej, jeg tror problemstillingen ligger udenfor min ekspertise. Hvis det blot drejede sig om at gemme spørgsmål i databasen, trække disse spørgsmål ud for at generere elektroniske spørgeskemaer, gemme svarene fra databasen, o.s.v., så kunne jeg være med, men din problemstilling går videre end det. Jeg stopper her. Jeg håber for dig på kommentarer fra mere vidende medlemmer.
- det er vel til at have med at gøre, at lave en lidt low-tech løsning (version 1), så lige nu er det min konklusion af ovenstående - Christian, smid et svar, du var den mest aktive.
Version 1: a) html-forms der gemmer data i min mysqlDB indtil kunden har svaret på alle spørgsmål og trykker "godkendt" (så kunden kan gå til-og-fra spørgeskemaet)
b) når kunden trykker "godkendt", laves en udskriftvenlig fil af hvert skema, som sendes til respektive sagsbehandler (og kopi lægges i sagsmappe - unsigned_sagnr_opgavenr).
c) sagsbehandlerne udskriver skemaer [1] og medbringer til kunden for underskrift, hvorefter skemaer indscannes og gemmes i sagsmappe (signed_sagnr_opgavenr).
[1] Jeg tror hvert opgaveskema skal underskrives for sig.
[a][b] Jeg kan et stykke af vejen lave det selv, men har et par detajludfordringer, fx. - hvordan gemmer man værdier for radiobuttons og checkboxe i DB og viser dem igen i formularen - det må vi tage i en anden tråd
Version 2 Kunne så måske være, at skemaer ved kundens tryk på "godkendt" kræver kundens NemId signatur, lægger skemaer i sagsmappe og via email advisere respektive sagsbehandlere om nye skemaer.
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.