| sidst rettet 27. september, 2002 |
Ved gradueringen lægges der bl.a. vægt på:
Du skal i denne opgave konstruere et spørgeskema: - et php-script som
skal kunne generere et HTML-dokument, hvori der er en HTML -formular. Spørgeskemaet
skal genereres v.hj. a. en funktion - denne funktion er spørgeskemageneratoren.
Det færdige output skal svare til browservinduet i nedenstående
illustration.
Ex:
Find på en undersøgelse du gerne vil foretage og formuler en række spørgsmål (mindst tre) som du ønsker din bruger skal svare på.
Overvej hvilken type formelement brugeren skal præsenteres for, for at kunne svare på hver af spørgsmålene.
Et todimensionalt array har denne form:
$arrToDimensionaltArray[1.index][2.index]
########################################################
Eks
$arrQuestion[0]["name"]=""; $arrQuestion[0]["question"]=""; $arrQuestion[0]["inputtype"]=""; $arrQuestion[0]["value"]=""; $arrQuestion[1]["name"]=""; $arrQuestion[1]["question"]=""; $arrQuestion[1]["inputtype"]=""; $arrQuestion[1]["value"]="";
e.t.c.
########################################################
Konstruer et todimensionelt array magen til det ovenstående. Kopiér gerne eksemplet og sæt det ind i en fil du benævner questionaire.php. Udvid arrayet så det bliver så stort som du har brug for i din undersøgelse.
Gem filen questionaire.php i
H:\public_html/W2/oevelse5
Det næste du skal gøre er at indsætte værdier i arrayet.
Se forklaringer nedenfor:
$arrQuestion[x]["name"]=""
; skal rumme et navn som senere vil optræde som formelementets name-attribut,
$arrQuestion[x]["question"]=""
; skal rumme spørgsmålet du gerne vil stille til brugeren,
$arrQuestion[x]["inputype"]=""
; skal rumme formelementets typeangivelse ("text", "radio", "checkbox"),
$arrQuestion[x]["value"]=""
; skal rumme en streng som senere vil optræde som formelementets value-attribut.
Du skal også finde på en overskrift til din undersøgelse. Den skal du lægge lægge i:
$strHeader
Og du skal skrive et par sætninger som forklarer brugeren, hvad spørgeskemaet drejer sig om. Denne streng lægger du i:
$strDescription
$strHeader og $strDescription -variablerne placerer du i questionaire.php
ovenover arrayet $arrQuestion.
Du skal nu konstruere en funktion writeQueryForm (i filen
functions.inc),
som ved et kald kan generere dit spørgeskema indsat i en tabel.
Funktionen writeQueryForm skal altså kunne:
- generere en HTML-table, som rummer felter til overskrift, forklaring og fomularfelter.
Husk også formularknapperne!
- generere spørgeskemaet således at det får et layout der
svarer til illustrationen vist i begyndelsen af opgavesættet.
writeQueryForm skal modtage variablerne og arrayet du satte
i opg. A1. Arrayet skal altså have parametrene
$strHeader
$strDiscription
$arrQuestions
Funktionen writeQueryForm skal rumme en for-løkke, som for hver iteration (gentagelse) kalder funktionen writeFormelement, som du tidligere har konstrueret i opgavesæt 4, opgave B:
##############################################
writeFormelement($strName,$strValue, $strType)
; som udskriver ét formelement med navnet strName, typen strType og defaultværdien strValue.
##############################################
- spørgeskemaet skal kunne rumme så mange spørgsmål
som der nu bliver sendt til funktionen,
- funktionen skal altid udskrive en send-knap og en slet-knap. Disse formelementer
skal ikke optræde i arrayet $arrQuestions
Opbyg en HTML-side ved at foretage en række funktionskald til de funktioner du allerede har konstrueret, deriblandt et til din nye writeQueryForm. Funktionskaldene udfører du i filen questionaire.php nedenunder $arrQuestion, $strHeader og $strDescription. Husk at inkludere functions.inc i toppen af dette script.
Funktionskaldene i questionaire.php kan være således:
writeHTMLheader("$Title");
writeQueryForm($strHeader,$strDiscription,$arrQuestion);
writeHTMLFooter();
Arbejd evt. med HTML-fladens udseende. Spørgeskemaet skal være enkelt og brugervenligt og gøre det attraktivt for brugeren at deltage i undersøgelsen.
Du har nu et spørgeskema som alverdens brugere kan udfylde. Du er også
i stand til at modtage de indsendte besvarelser, men du mangler at kunne indsamle
den enkelte brugers svar på spørgsmålene. Om nogle uger vil
du kunne konstruere en database, hvori du kan gemme i tusindvis af brugeres
besvarelser (du bestemmer selv, hvor mange du inviterer!). Inden du når
dertil vil det være vigtigt at overveje kvaliteten af de data som vil
strømme ind, og det er en god idé at teste de indsendte data,
straks webserveren modtager dem.
Hvis du tester umiddelbart efter at brugeren har indsendt materiale, kan du
straks gøre brugeren opmærksom på at du ikke er tilfreds
med det indsendte - og bede om mere præcise data.
Du skal nu få din Spørgeskemagenerator til at generere endnu et
spørgsmål (hvor du spørger om brugerens emailadresse) og
et formularfelt. Det gør du ved at føje endnu en linie til dit
array $arrQuestion.
Kald feltet email
Opgaven er at checke det indsendte formularindhold fra feltet email.
Du skal foretage dette check ved hjælp af disse linier: (Se evt s. 250
i "Beginning PHP..")
#######################################################################################
if ($email!="") {
$bResult = ereg("^[^@ ]+@[^@ ]+\.[^@ \.]+$", $email);
if ($bResult) {
//skriv til brugeren at den indsendte email var i orden.
} else {
//giv brugeren besked om at den indsendte emailadresse ikke er korrekt.
}
}
///Det regulære udtryk, "^[^@ ]+@[^@ ]+\.[^@ \.]+$", består af disse dele:
// 1) ^ = Testen skal gælde fra og med den første karakter
// 2) [^@ ]+ = Der skal være en række karakterer som ikke er et snabel-a
// 3) @ = Der skal være et snabel-a
// 4) [^@ ]+ = Der skal være en række karakterer som ikke er et snabel-a
// 5) \. = Der skal være et punktum (Bemærk: escaped)
// 6) [^@ \.]+ = Der skal være en række karakterer som ikke er et snabel-a,
// en space eller et punktum
// 7) $ = Der må ikke forekomme yderligere tegn i strengen.
/////////////////////////////////////////////////////////////////////////
##########################################################################################
Indsæt dette emailcheck i toppen af din fil questionaire.php
Tilføj endnu et felt til dit spørgeskema hvor du beder brugeren om at oplyse postnummeret for sin bopæl. (Se s. 243- i "Beginning PHP..")
Konstruer et check, der afgør om der virkelig er fire og kun fire talkarakterer
i indholdet fra dette postnummer-formfelt, hvor et postnummer er blevet indtastet.