Tilgjegelighet av XHTML-forms



Like dokumenter
En enkel while-løkke. 1 of :28. 2 of :28. while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt

while-økker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

while-løkker while-løkker gjentar instruksjonene så lenge en betingelse er oppfylt Eksempel 1: en enkel while-løkke

Introduksjon til beslutningsstrukturer

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 07/ Vi holder orden på verdier med hjelp av variabler

Webprogrammering høsten 2017

Når en bruker skriver sitt navn ("Ole") i et form-element med name="fornavn" som attributt. klikker på submit-knappen

<?php. count tar en array som argument, og returnerer et tall som uttrykker antallet innførsler i arrayen.

Verdier, variabler og forms

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

}?> <!DOCTYPE... <html xmlns=" <head>... </head> <body> <p>nå skal vi printe hallo:</p> <?php //funksjonskall

Et forsøk på definisjon. Eksempel 1

Aritmetiske operasjoner. Litt om forrige times øvelsesoppgaver

Et forsøk på definisjon. Eksempel 1

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

praktiske eksempler DOM Document Object Model DOM og Høst 2013 Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

</html> </head> <form action= rtkst.php > <p> Fornavn? <input type= text name= fornavn <input type= submit />

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

HØGSKOLEN I SØR-TRØNDELAG

Repetisjon Novice Videregående Python PDF

1.2 Dynamiske, tjenerbaserte og interaktive nettsteder

Argumenter fra kommandolinjen

TDT4110 IT Grunnkurs Høst 2014

Mattespill Nybegynner Python PDF

Innføring i bruk av CGI4VB

Klasser. Webprogrammering høsten Objekter. Eksempelklasser og -objekter. 2 of :56. 1 of :56

JS: Grunnleggende JavaScript Nybegynner

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

En liten rekap. Spørrespråk. I dag SELECT

HTML5. Skjemaer på nettsider. Skjemaer med. Informasjonsteknologi 1 og 2. Gløer Olav Langslet Sandvika VGS

HØGSKOLEN I SØR-TRØNDELAG

SELECT DISTINCT Fornavn, Etternavn, Programtittel FROM Program P, Medvirkende M, Deltagelse D. SELECT Tilgjengelighet FROM Program

Communicate SymWriter: R5. Brett og knapper

Sprettball Erfaren ComputerCraft PDF

Webformularer, PHP og databaser

notater Gule lapper Mine Et praktisk eksempel med objekter IT2 Læreplansmål Gløer Olav Langslet Sandvika VGS

OBLIG 2 WEBUTVIKLING

LITT OM OPPLEGGET. INF1000 EKSTRATILBUD Stoff fra uke September 2012 Siri Moe Jensen EKSEMPLER

HØGSKOLEN I SØR-TRØNDELAG

Oppbygging av innhold på responsive nettsider.

DIAGNOSERAPPORT. for. Dato: Utført av: Jon P Hellesvik

Kursdokumentasjon for Dreamweaver

Innføring i bruk av CGI4VB

Kapittel 1. Innledning og motivasjon. 1.1 Innledning. 1.2 Dynamiske, tjenerbaserte og interaktive nettsteder Dynamiske nettsider

Oppsummering - Til nå... (1/ )

Snake Expert Scratch PDF

Oblig 5 Webutvikling. Av Thomas Gitlevaag

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Kanter, kanter, mange mangekanter

KOMME I GANG 2. Logge på 2. I redigeringsvinduet 3 OVERSIKT OVER KNAPPENE SOM LIGGER ØVERST I REDIGERINGSVINDUET 5

Oppsummering fra sist

INF1000 Metoder. Marit Nybakken 16. februar 2004

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Hvordan gjøre fjernhjelp til noen som ønsker hjelp med Hageselskapets portal? Av Ole Petter Vik, Asker Versjon

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

HTML og relasjonsdatabaser med PHP

JS: Grunnleggende JavaScript

INF1040 Oppgavesett 4: CSS

Informasjon Eksamen i IN1000 og IN1001 høsten a) 1 poeng. 1b) 1 poeng. Tid. Oppgavene. Tillatte hjelpemidler. 30. november kl. 14.

UNIVERSITETET I OSLO

Hver ting i en liste kalles et element. En liste lages ved å skrive elementer inni [], med, mellom elementene:

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

SUKKERGRIS. Anita og Silje DAT100

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Systemarkitektur. Webformularer, PHP og databaser et crash-kurs. Hva skal applikasjonsprogrammet gjøre? PHP

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

file:///c:/users/michaelp/sites/dkdm/dw6/dreamweaver6.html

Hvor i All Verden? Del 3 Erfaren Scratch PDF

En bedre verden med AJAX

9. ASP med databasekopling, del II

HØGSKOLEN I SØR-TRØNDELAG

2 Om statiske variable/konstanter og statiske metoder.

Utseende. Lauri Watts Oversettelse: Bjørn Steensrud

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

REFLEKSJONSNOTAT FOR WEBPERIODEN

HØGSKOLEN I SØR-TRØNDELAG

Innhold 1 Universelt utformete og tilgjengelige PDF dokumenter Hvorfor PDF? Gjør det lettere for deg selv Eksporter fra Word

MAT1030 Plenumsregning 1

Oblig 4 Undervisningshefte i grunnleggende JavaScript programmering

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

EKSAMEN. Les gjennom alle oppgavene før du begynner. Husk at det ikke er gitt at oppgavene står sortert etter økende vanskelighetsgrad.

lage og bruke funksjoner som tar argumenter lage og bruke funksjoner med returverdier forklare forskjellen mellom globale og lokale variabler

løsningsforslag-uke5.txt

Oppsummering - Kurset (10/ )

Hjelpemidler: 4 A4-sider (2 to-sidige ark eller 4 en-sidige ark) med egenproduserte notater (håndskrevne/maskinskrevne)

Transkript:

[Kurssidene] [ ABI - fagsider bibin ] Michael Preminger (michaelp@hio.no) 08/02-14 Utvikling av dynamiske nettsteder med PHP og databaser, våren 2014 Eksempel 1: For å lage en liten array (bare 5 innførsler) kan vi bruke følgende PHP-kode: $byer=array("oslo", "Bergen", "Trondheim", "Stavanger", "Kristiansand"); Vi får en sekvensiell array med noen innførsler, hvor hver innførsel automatisk får en indeks. Kan illustreres på følgende måte: Tilgjegelighet av XHTML-forms (+ Løkker, rep. og utvidelse) Tilbakeblikk Byggestein så langt: variabler betinget utføring løkker Med hjelp av disse indeksene kan vi gjennomgå arrayen systematisk. Vi bruker denne arrayen i noen eksempler. Eksempel 2: Skriv alle innførslene til nettleseren I tillegg: Idag: enkle arrayer innebygde funksjoner, slik som print() og count(). repetisjon av løkker og arrayer (med en liten utvidelse) om å lage bedre XHTML-forms Repetisjon: løkker og arrayer - norske byer En løkke: systematisk gjentagelse av en sekvens med instruksjoner Vi bruker løkker når vi skal håndtere grupper av objekter: studenter, databaseposter osv. Vi har sett på while-løkker (fortrinnsvis) og for-løkker. En array: en variabel som kan ha flere verdier til enhver tid. Arrayen kan ha mange innførsler. Hver innførsel kan ses på som en selvstendig variabel som kan ha en verdi. Hver av innførslene har en indeks (foreløpig et nummer). <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN". $byer=array("oslo", "Bergen", "Trondheim", "Stavanger", "Kristiansand"); $antallbyer = count($byer); $i=0;//oppstart while( $i < $antallbyer ){ print("$i: $byer[$i]"); $i = $i + 1 ; //oppdatering 0: Oslo 2: Trondheim 3: Stavanger 4: Kristiansand

Eksempel 3: Skriv bare annenhver innførsel til nettleseren $byer=array("oslo", "Bergen", "Trondheim", "Stavanger", "Kristiansand"); $antallbyer = count($byer); $i=0;//oppstart while( $i < $antallbyer ){ print("$i: $byer[$i]"); $i = $i + 2 ; //oppdatering 0: Oslo 2: Trondheim 4: Kristiansand Eksempel 4: Skriv bare navnet på byen som har indeks 1 til nettleseren. Grupper av "ting" behandles ikke alltid 100% likt. If-tester i løkkens nyttekode kan stå for variert behandling Her kombinerer vi en if-test i en løkke. Hver gang løkkekoden kjøres, blir betingelsen (linje 7) sjekket. Setningen på linje 8 blir bare kjørt når betingelsen stemmer. 1. 2. $byer=array("oslo", "Bergen", "Trondheim", 3. "Stavanger", "Kristiansand"); 4. $antallbyer = count($byer); 5. $i=0;//oppstart 6. while( $i < $antallbyer ){ 7. if($i == 1){ 8. print("$i: $byer[$i]"); 9. 10. print("$i"); 11. $i = $i + 1; //oppdatering 12. 13. Legg merke til at 0 1 2 3 4 bynavnet skrives ut bare én gang, fordi betingelsen stemmer bare en gang indeksen skrives ut hver gang Eksempel 5: En liten rettelse til det foregående eksemplet. 1. 2. $byer=array("oslo", "Bergen", "Trondheim", 3. "Stavanger", "Kristiansand"); 4. $antallbyer = count($byer); 5. $i=0;//oppstart 6. while( $i < $antallbyer ){ 7. if($i == 1){ 8. print("$i: $byer[$i]"); 9. 10. else{ 11. print("$i"); 12. 13. $i = $i + 1; //oppdatering 14. 15. 0 2 3 4 Eksempel 6: Skriv bare navnet til de tre første byene til nettleseren. Også her kombinerer vi en if-test i en løkke. Hver omgang løkken kjøres, blir betingelsen (linje 7) sjekket. Setningen på linje 8 blir bare kjørt de gangene betingelsen stemmer. 1. 2. $byer=array("oslo", "Bergen", "Trondheim", 3. "Stavanger", "Kristiansand"); 4. $antallbyer = count($byer); 5. $i=0;//oppstart 6. while( $i < $antallbyer ){ 7. if($i < 3){ 8. print("$i: $byer[$i]"); 9. else{ 10. print("$i"); 11. 12. $i = $i + 1; //oppdatering 13. 14. 0: Oslo 2: Trondheim 3 4 indeksen 1 skrives (separat) rett at etter bynavnet skrives ut

Assosiative Arrayer Assosiative arrayer indekserer sine innførsler med tekststrenger Så langt har vi sett på, og arbeidet med sekvensielle arrayer (med tallindeks). Innførslene i de assosiative arrayene har tekststreng-indeks. Eksempel 7: fødselsdager Vi ønsker å holde orden på fødselsdagsdatoene til noen av våre venner Med en assosiativ array kan vi gjøre det på følgende måte: //Oppretter arrayen $fodselsdager["niels"] = "11. desember"; $fodselsdager["jens"] = "12. juni"; $fodslesdager["mari"] = "21. oktober"; Assosiative arrayer holder mer informasjon enn de tall-indekserte Arrayen i eksemplet ovenfor gir oss mulighet til å ha to typer informasjon i arrayen samtidig: vennens navn Å legge en innførsel i en assosiativ array kan gjøres som følger: $fodselsdager["niels"]="11.desember"; vennens fødselsdag Dette fordi indeksen er assosiativ (henger sammen med innholdet). De "gamle" sekvensielle arrayene lagrer bare én type informasjon. Der angir indeksen bare rekkefølgen. Hvordan kunne vi brukt våre gamle arrayer til å holde orden på fødselsdagsinformasjonen? ett mulig svar (klikk) (Se også Horgens hjemmeside for en liten videosnutt) Assosiative arrayer brukes mye i forbindelse med databaser!

En kommentar ang. fnutter / hermetegn I PHP kan vi i mange tilfeller bruke fnutter og anførselstegn om hverandre når vi avgrenser tekststrenger Samme tegn må dog stå på begge sider av samme streng. "Niels' går ikke. Et unntak er variabeltolking. Strenger avgrenset av anførselstegn tolker variabler $navn = "Michael"; print ("Mitt navn er $navn"); gir Mitt navn er Michael Strenger avgrenset av fnutter tolker ikke variabler $navn = "Michael"; print ('Mitt navn er $navn'); gir Forms, brukervennlighet og tilgjengelighet Våre forms bør være brukervennlige, innbydende og lette å bruke Forms-standarden har hjelpemidler som bidrar til å gjøre våre former mer innbydende og mer forståelige. Dette går på enkeltelementene, presentasjonen og bruken av dem hele formens struktur Våre forms bør designes slik at de også er tilgjengelige for funksjonshemmede Dette har flere aspekter, bl.a: Formene bør bli lett å bruke for folk som har svekket syn, og allikevel bruker skjermen, tastaturet og musen. Formene bør bli lettere å tolke, slik at skjermlesere, som tilrettelegger formen for blinde, lett kan tolke dem og presentere dem riktig. Dette støttes av at vi unngår bruk av HTML-tabeller forms-utlegg holder oss til noen enkle regler når vi utformer forms. Vi ser på bruken av <fieldset> og <label>, samt noen enkle regler. Vi ser også på kontroll av utlegg og utseende med hjelp av CSS. Mitt navn er $navn $_GET er også en assosiativ array. Verdier fra elementnavn i forms fyller den assosiative array $_GET. Det betyr at stort sett kan, også her, fnutter og anførselstegn brukes om hverandre. Dette har egentlig ikke store konsekvenser, men kan være greit å vite.

Bruk av Label-elementet Label: En formell tilknytting mellom et merketekst og et input-element Label-elementet, <label>, er en formell måte å knytte sammen en merketekst og et input-element. Eksempel 9: Tekstelementet med navnet "fornavn" og id'en id_fornavn koblet til et labelelement Fornavn? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN". <form action= "respons_tekst.php"> <label for="id_fornavn"> Fornavn? </label> <input type="text" name= "fornavn" id="id_fornavn" /> <input type="submit" /> <input type="reset" /> </form> Med label-taggen er teksten "Fornavn?" formelt koblet til input-elementet med id=id_fornavn. for-attributtet kobler label-elementet til input-elementet gjennom inputelementets id-nummer. Label-elementet gir oss mer brukervennlige form-elementer Vi kan, for eksempel, klikke teksten "Fornavn?" for å plassere markøren i elementets tekstfeltet. Eksempel 10: Radioknapper og label-elementer Student? ja nei <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN". <form action= "respons_radio.php"> Student? <input type="radio" id="id_es_ja" name="erstudent" value= "ja" /> <label for="id_es_ja"> ja </label> <input type="radio" id="id_es_nei" name="erstudent" value="nei" /> <label for="id_es_nei"> nei </label> <input type="submit"/> </form> Fordelene er enda mer markante med radioknapper. Legg merke til at vi kan klikke tekstene ja og nei for å velge riktig radioknapp. Vi slipper å "treffe" punktet. Bruk av Fieldsets for synliggjøring av struktur Med <fieldset> kan vi dele våre forms inn i meningsfylte avsnitt. Så langt har vi delt våre forms med hjelp av, på en litt tilfeldig måte. Vi kunne også ha brukt <div>, omtrent på samme måte. Det betyr at tekstelementer, radioknapper, avkryssingsbokser osv. ble skrevet inn i hver sine avsnitt. Dermed blir Formene "flate", og strukturen vanskelig å tyde. Noen bruker tabeller, slik at man får en layout-messig fleksibilitet. Dette kan bli unødvendig komplisert, og bør unngås, særlig i enkle tilfeller. fieldsets gir oss en lettvint mulighet til å strukturere våre forms både logisk og visuelt. Enhver fieldset kan ha et legend-element, som brukes til å gi den en overskrift.

Eksempel 11: En XHTML-forms delt med fieldsets Personalia Fornavn? Akademisk status Er du student? Ja Nei Handling!!! <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN". <form action= "respons_stor.php"> <fieldset> <legend> Personalia </legend> <label for="fn">fornavn?</label> <input type="text" id="fn" name="fornavn"/> </fieldset> <fieldset> <legend>akademisk status </legend> Er du student? <input type="radio" name= "erstudent" value="ja" id="es_ja"/> <label for="es_ja"> ja</label> <input type="radio" name= "erstudent" value="nei" id="es_nei"/> <label for="es_nei">nei</label>i </fieldset> <fieldset> <legend>handling!!!</legend> <input type="submit" name="submit2" /> <input type="reset" name="reset2" /> </fieldset> </form> Vi kontrollerer utseendet på <fieldsets> med hjelp av stilark. Følgende stildefinisjon ble brukt på formen ovenfor fieldset{ border:solid; border-color:#000000; border-width:thin; legend{ font-size:1.2em; font-weight:bold; margin-left:auto; margin-right:auto; Utlegg av forms og tekster Ha riktig rekkefølge på tekster og elementer Tekst-input og nedtrekksmenyer: Ha teksten foran input-elementet, enten på samme linje eller linjen foran. Radioknapp og avkrysningsboks: Ha teksten etter selve boksen (gjerne på samme linje) Tabeller bør brukes med forsiktighet Tabeller brukes ofte for å dele opp skjermen og plassere forms-elementer på ønsket sted. Tabeller kan dermed hjelpe med å få en fin, og i og for seg leselig utforming, men kan skape tilgjengelighetsproblemer. Dersom man allikevel bruker en tabell, bør man holde hvert element og sine tekster (for eksempel labels) samlet i samme celle. Slikt unngår man at en skjermleser feilassosierer tekster med element og vise versa. PHP-funksjoner Vi har allerede sett og brukt noen funksjoner i PHP (uten å snakke høyt om det). Eks: print, count. Funksjoner tar ofte argumenter: Ressurser print ("Jeg liker å programmere"): argumentet "Jeg liker å programmere" (en tekststreng) er det som funksjonen print skal printe til nettleservinduet count ($byer) : argumentet $byer (en array), er det som funksjonen count skal telle innførslene i. Finnes mange mange mange mange andre (www.php.net) Mer om forms og brukervennlighet i følgende ressurser: Sauers, Michael P. (2006): XHTML and CSS Essentials for Library Web Design - Neal Schuman Publishers Inc. - 451 s. - ISBN: 1-55570-504-9 (se spesielt kapittel 8) Tilgjengelig innhold Norges Blindeforbund. - URL:https://www.blindeforbundet.no /internett/tilgjengelighet/internett/internett-for-utviklere/tilgjengelig-innhold/ [lesedato 2013-02-08] (Se spesielt under "Skjemaer") Sist oppdatert 08/02-14 av Michael Preminger, michael.preminger@jbi.hio.no