19. februar 2014 - 11:55 Der er 9 kommentarer og
1 løsning

Header (Loation: www. xxxx ) spørgsmål.

HEJ,

Skal lave et spørgeskema på nettet for en lille lukket gruppe. Skemaet består af 5 sider med ca. 5-10 spørgsmål hver.

Fra min hoved side (index.php) logger jeg ind SKEMA 1, hvor "bruger" (=en person i målgruppen) svarer på disse spørgsmål og trykker "GEM" (save). Denne GEM submitter alle XX spørgsmåls- data (skema 1) til en 'behandlingsside' (proc1.php), hvor jeg $_POST'er dem allesammen (til rette variable.) Dette fungerer perfekt.

Det er tanken at ville gemme disse svar i en fil (svar1.txt).
Data fra spørgeskeam side 2 gemmes i svar2.txt.
Data fra spørgeskeam side 3 gemmes i svar3.txt. -- (og så fremdeles til alle sider er håndteret. Når alle skemaer er håndteres vil jeg så flette disse filer sammen og lægge ind i den RESULTAT-basen.

Men (og her er problemet:) når jeg vil header'e videre til skema2 får jeg en HEADER (Location -..)  fejl. PHP-fortolkeren (er det en Compiler ??) siger, at den ikke kan finde siden. (Jeg ved den er der, og har læst et eller andet sted at der ikke må være væsentlig aktivitet på PHP-siderne, når HEADER (loc--..) skal bruges.

Så fil-aktiviteten kommer altså i karambolage med denne HEADER..

Spørgsmålet er om jeg må oprette 5 databaser-tabeller (skema 1 .. skema 5) og så "proppe" data ind den vej (skemadata_1 til skematabel_5 -- skemadata_5 til skematabel_5) og så flette disse 5 tabeller sammen til en slut-base, som så kan præsenteres (for rette person(er)) ??

Eller om der er en smartere metode ??

Kristian
Avatar billede Slater Ekspert
19. februar 2014 - 12:12 #1
Normalt bør det ikke være noget problem at have "aktivitet" før en header location, det eneste du ikke må, er at begynde at sende data til klienten før en header.

Har du prøvet at teste med en absolut sti (f.eks. http://www.google.com ) i stedet for din fil, for at se om headeren så virker?
Avatar billede repox Seniormester
19. februar 2014 - 12:48 #2
PHP er en script-fortolker og ikke en compiler.

Det er svært at hvad problemet er når vibikke kan se noget kode eller vi ikke får den reelle fejlmeddelelse fra PHP.

Udover det, så virker det lidt fjollet at du starter med at have data i flade filer for derefter at behandle dem og smide resultatet ind i MySQL. Hvor ikke bare køre det hele i MySQL?
Avatar billede jakobdo Ekspert
19. februar 2014 - 13:37 #3
At skrive til en fil og header() bør bestemt ikke give problemer.
Måske hvis netop skrivningen til filen fejler, så kan det smide noget output til browseren og dermed "ødelægge" dit kald til header().

Men som repox siger. Vis os noget kode.
Evt. bare for siden: proc1.php.
Så kan vi nemmere vejlede.

Og som det også nævnes, smid da alle data i databasen med det samme.
Alternativt "gem" dem i session, indtil side 5 og når der så trykkes afslut, så gemmes det i db.

Kommer lidt an på om du ønsker en bruger skal kunne vende tilbage efter (længere end session-levetid) og færdiggøre sit begyndte skema.

Der er mange løsninger.
Men vi kan bedst hjælpe ved at få flere info.
19. februar 2014 - 16:15 #4
HEJ,

til Repox:

"Udover det, så virker det lidt fjollet at du starter med at have data i flade filer for derefter at behandle dem og smide resultatet ind i MySQL. Hvor ikke bare køre det hele i MySQL? "

Jeg kan ikke være mere enig. Men når skemadata_1 (10 svar) er færdige har jeg brug for at gemme dem midlertidigt, og så "hoppe" til skema_2 (8 svar) (hent skemadata2 - gemme dem) , videre til skema_3 (7 svar), hente data ..... -> skema_5 hente data. 

Lidt firkantet (for ikke at sige meget kvadratisk!) ENIG.., men så vidt jeg ved kan jeg ikke lægge data ind i samme tabel i "klumper" (dvs. lægge de første 10 data ind, lukke basen, hoppe til skema2 hente data, åbne tabellen, lægge data ind som en forlængelse af data1 og gentage det til skema_5.  Derfor overvejede jeg metoden med 5 tabeller (reelt 6 med RESULTAT-tabellen).

Men korriger mig endelig, hvis der er smartere metoder.





Og til ALLE:

Der var et ECHO stattement (et debug statem.) jeg i min totale blindhed havde oveset. Lå lidt øverst. OPdagede den, så lyset (og en mulighed for at det var "fjelen") da jeg skulle kopiere kode ind (som svar). Fjernede den og kørte igen.  Og Heureka og Viola (fransk for Voila). Nu kører det.

MEGET PINLIGT, burde have opdaget den. Havde stirret mig total blind på koden. ! Men ihvertfald, det kører nu så mindst 1 million tak for hjælpen.

KR
Avatar billede repox Seniormester
19. februar 2014 - 16:31 #5
Så vil, som jakobdo er inde på, sessions være en bedre løsning.
19. februar 2014 - 16:45 #6
HJE,

Igen tak for svar:

Sessions  ??

Her er jeg 100,00 % blank.

Hvor kan jeg læse om det ? (og så jeg forstår det - gerne med eksempler..  )

Kr.
Avatar billede repox Seniormester
19. februar 2014 - 17:01 #7
15. marts 2014 - 15:56 #8
HEJ,

Ingen yderligere kommentarer.  Jeg lukker spm.

Hvis nogen føler sig snydt giv en respons og jeg vurderer.

Kr.
Avatar billede jakobdo Ekspert
15. marts 2014 - 16:37 #9
Hvad blev din løsning?
16. marts 2014 - 12:22 #10
HEJ,

"Løsningen" blev egentlig 2 delt.

Jeg læste Artiklen om SESSIONS og indså at mit løsningsforslag kunne forbedres betydeligt. Det gjorde jeg (denne gang med SESSIONS) og det gjorde at (re-)kodningen ikke alene blev nemmere, men også færre linier med kode. (Altså KISS-modellen).

Det slut-brugeren i mellemtiden havde gjort var at han havde sat en anden på sagen, så det jeg havde lavet blev accepteret, men han valgte den anden løsning, så min del blev et sted mellem 75 og 90 pct. færdigt. Og jeg har (som en stille protest) valgt ikke at færdiggøre det... Derfor citations-tegnene i første linie.

KR

Men den tekniske løsning blev gjort ved at anvende SESSIONS i alle skemaerne. 

K
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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