WWW-lomakkeet
- Lomakkeen tekeminen
- Lomake-elementit
- Kentän otsikko - label
- input-elementti
- Tekstialue - textarea
- Valintalista - select
- Lomake-elementtien ryhmittely - fieldset
- Elementtien ryhmän otsikko - legend
- button - yleispainike
- Esimerkkejä
- Lomakkeiden ulkoasu
- Lomakkeen käytettävyyden ja esteettömyyden parantaminen
- Lomaketietojen käsittely
- Lomakkeen tietojen käsitteleminen
- Harjoitustyössä käytettävä CGI-ohjelma
- Hakulomake
Luennolla käsitellään WWW-lomaketekniikoiden nykyisiä mahdollisuuksia ja mahdottomuuksia HTML-dokumenteissa. Katso myös vanha videotallenne.
Kaikki hiemankaan monimutkaisemmat WWW-sovellukset käyttävät lomakkeita. Sovellusten toteuttaminen ei kuulu tämän kurssin aiheisiin vaan vasta esim. TIEA2120 Web-käyttöliittymien ohjelmointikurssille. Tällä kurssilla opetellaan toteuttamaan yksinkertaisia staattisia lomakkeita.
Lomakkeen tekeminen
Lomakelohko sijoitetaan body-elementin sisään form-elementillä:
<form action="http://palvelin/kasittelijaohjelma" method="post">
...
</form>
- action-attribuutti kertoo miten tai millä lomakkeelle syötetyt tiedot käsitellään. Käytännössä se on osoite jollakin palvelimella olevaan ohjelmaan.
- method-attribuutti kertoo tavan, jolla tieto lähetetään käyttäjältä käsittelijälle. Mahdollisia arvoja ovat post ja get. Näiden erot käsitellään muilla kursseilla. Käytä post jos ei muuta neuvota.
- Esimerkki yksinkertaisesta lomakkeesta
- Pelkkiä tekstikenttiä (type="text").
- Lomakkeen oletusarvot lisäävät lomakkeen esteettömyyttä.
- Labelit ennen kenttää lisäävät lomakkeen esteettömyyttä.
- Titlen käyttö lisää lomakkeen esteettömyyttä.
Lomakkeita tehdessä kannattaa pitäytyä pelkistetyissä, yksinkertaisissa muodoissa, eikä alkaa liikaa kikkailemaan elementeillä. Seuraavassa kuvassa on nähtävillä yleisimmät lomakkeella käytettävät elementit sekä osa input-elementin erilaisista tyypeistä. Seuraavassa käydään esimerkkien avulla tarkemmin läpi lomake-elementtejä ja niiden toimintaa.
Lomake-elementit
WWW-lomakkeille voidaan lisätä hyvin monenlaisia elementtejä, joiden avulla lomakkeista saadaan käyttökelpoisia tehtäväänsä. Erilaisia elementtejä käyttämällä lomakkeesta voidaan saada monipuolinen ja pystytään jopa hieman rajoittamaan käyttäjän antamia syötteitä. Varsin usein lomakkeelle tehdään pelkästään erilaisia tekstikenttiä, mutta muitakin mahdollisuuksia kannattaa toki ajatella.
Lomakkeiden muodostamiseen käytetään seuraavia HTML-elementtejä
Kentän otsikko - label
label-elementti toimii lomake-elementtien otsikkona.
<label>Nimi:
<input type="text" name="Nimi" value="Etunimi Sukunimi"
/></label>
for-attribuuttia käytetään yhdistämään otsikko varsinaiseen lomake-elementtiin jos lomake-elementtiä ei voida sijoittaa suoraan labelin sisään. Lomake-elementin id-attribuutin ja otsikon for-attribuutin arvojen on oltava samat. Arvojen on oltava yksikäsitteiset, joten otsikko voi viitata ainoastaan yhteen lomake-elementtiin. Seuraavassa esimerkki label-elementin käytöstä:
<label
for="name">Nimi:
</label><input id="name"
type="text" name="Nimi" value="Etunimi Sukunimi"
/>
Esimerkki label-elementin käytöstä
input-elementti
input-elementti on hyvin monipuolinen lomakkeella käytettävä elementti, jonka type-attribuutin arvoa vaihtamalla saadaan käyttöön erilaisia lomake-elementtejä.
Yleiset ominaisuudet
name-attribuutilla voidaan antaa kontrollille nimi. Nimen antamisen hyöty tulee näkyviin vasta lomakkeen käsittelyn yhteydessä, koska kontrollin arvo lähetetään lomakkeen tiedot käsittelevälle ohjelmalle muodossa name=kentan+sisalto .
value-attribuutilla voidaan kontrollille antaa oletusarvo. Lomakkeen lataamisen yhteydessä value-attribuutin arvo näkyy valmiiksi kontrollissa. Valintaruudun ja valintanapin yhteydessä value-attribuutin arvo välitetään lomakkeen tiedot käsittelevälle ohjelmalle.
Seuraavassa lyhyt esimerkki name- ja value-attribuutin käytöstä. Esimerkissä name-attribuutin arvona on kokonimi ja value-attribuutin arvona on teksti ”Etunimi Sukunimi”.

Kuten oheisesta kuvasta voi päätellä, niin value-attribuutin arvo näytetään oletuksena lomakekentässä.
<input type="text" name="kokonimi" value="Etunimi Sukunimi" />
Jos edellisen esimerkin lomakkeen tiedot lähetetään käsittelevälle ohjelmalle oletusasetuksilla, niin tiedot ovat seuraavaa muotoa (name=value):
kokonimi=Etunimi+Sukunimi
size-attribuutilla voidaan määritellä kontrollille pituus. Pituus annetaan pikseleinä, mutta jos attribuutin type arvona on text tai password, niin arvo tarkoittaa kenttään mahtuvien merkkien lukumäärää.
id-attribuutilla voidaan elementille antaa yksikäsitteinen id-nimi, johon voidaan viitata esimerkiksi label-elementissä.
tabindex-attribuutilla voidaan elementeille määritellä tabulointijärjestys eli järjestys, jossa kentät aktivoituvat painettaessa tab-näppäintä. tabindex-attribuutin arvoksi voidaan antaa numerot välillä 0-32767.
input-elementin tyyppejä
type-attribuutilla määritellään input-elementin käyttötarkoitus. Voit käyttää seuraavia tyyppejä:
- text - Vapaamuotoinen tekstikenttä.
- password - Kuten tekstikenttä, mutta kirjaimet näkyvät "tähtinä".
- checkbox - Monivalintainen valintaruutu. Kätevä pienissä listoissa.
- radio - Yksivalintainen valintakontrolli. Kätevä pienissä listoissa.
- submit - Lomakkeen hyväksymispainike. Lähettää lomakkeen tiedot käsittelijälle.
- reset - Lomakkeen tyhjentämiseen tarkoitettu painike.
- file - Tiedoston lataamista varten.
- hidden - Piilotettua tietoa varten. Voidaan käyttää esimerkiksi lomakkeen käsittelevän ohjelman ohjaamiseen.
- image - Painike, jossa taustalla kuva.
- button - Normaali painike.
- color Värivalitsin
- date Päivämäärä
- datetime-local Päivämäärä ja aika
- email Sähköpostiosoite
- month Kuukausi
- number Numero
- range Lukuväli
- search Haku
- tel Puhelinnumero
- time Aika
- url URL
- week Viikko
input-elementin attribuutteja
input-elementin toimintaan voi vaikuttaa tyypin valinnan lisäksi useilla muilla attribuuteilla. Tässä on lueteltu tämän kurssin kannalta niistä tärkeimmät:
- value - Yleensä oletusarvo elementille. Valintaruudussa ja -napissa valittavissa oleva arvo.
- name - Määrittää elementille nimen.
- size on kentän oletuskoko merkkeinä
- maxlength - Kertoo elementin maksimipituuden merkkeinä (text, password).
- minlength merkkien minimimäärä
- required määrää kentän pakolliseksi
- checked - Kertoo elementin (radio, checkbox) olevan oletuksena valittu (checked="checked")
- max kentän maksimiarvo
- min kentän minimiarvo
- step Esim. jos kentän min = 0 ja max = 100 ja step = 10 niin arvon voi asettaa 10 välein eli 0, 10, 20, 30 jne.
- list viittaa datalist-elementtiin, jonka sisältöä ehdotetaan tähän kenttään
- pattern regexp jota vastaan kenttään syötetty arvo tarkistetaan
- placeholder kentässä oleva malli tai vinkki vaadittavasta syötteestä
- type määrää kentän tyypin. Kts. ylempänä olevat esimerkit eri tyypeistä
- autocomplete määrää voiko selain täyttää kentän sisällön automaattisesti. Arvona voi olla on/off tai sitten jokin valmiista avainsanoista.
- autofocus asettaa kentän oletuksena aktiiviseksi sivun latautumisen jälkeen.
- multiple voiko syöttää useamman arvon. Koskee vain email- ja file-tyyppisiä kenttiä.
- tabindex määrää tabulointijärjestyksen
- Esimerkki yksinkertaisesta lomakkeesta
- Esimerkki valintaruudun (engl. checkbox) ja -napin (engl. radiobutton) käytöstä
- Esimerkki Monimutkaisemmista lomake-elementeistä.
Tekstikenttä - text
text-arvo luo yksirivisen tekstisyöttökentän. Seuraavassa on esimerkki tekstisyöttökentästä.
Syöttökentän pituutta ei ole oletuksena rajoitettu, joten riville voi syöttää tekstiä kohtuullisen paljon. Kentän pituutta voidaan rajoittaa maxlength-attribuutin avulla ja näkyvissä olevan tekstikentän koko lomakkeella voidaan määritellä size-attribuutin avulla. Seuraavassa esimerkissä sotun syöttämistä on haluttu rajoittaa. Sotu sisältää yksitoista merkkiä, joten kenttään halutaan tasan yksitoista merkkiä.
Salasanakenttä - password
password-arvo luo tekstikentän, johon voidaan syöttää merkkejä siten, että näytöllä merkkien kohdalle kirjoitetaan tähtimerkki (asteriski, *). Tämä ei anna oikeasti mitään salausta kirjoitetulle tekstille, koska kenttään kirjoitettu teksti tullaan lähettämään selkokielisenä lomakkeen käsittelevälle ohjelmalle. Oheisessa kuvassa seuraavan esimerkin mukainen salasanakenttä, johon on syötetty jo salasana.
Valintaruutu - checkbox
checkbox-arvo tekee elementistä valintaruudun. Valintaruudut ovat neliön muotoisia kenttiä, joita käyttäjä voi halutessaan valita päälle tai pois päältä. Ruutuja voidaan valita useampiakin, joten ne eivät ole toisensa pois sulkevia, kuten esimerkiksi valintanapit. Valintaruutuja voidaan valita useampia, joten kaikkien valittujen arvot lähetetään lomakkeen lähettämisen yhteydessä. Seuraavassa esimerkissä on oheisen kuvan mukainen valintaruuduilla toteutettu kysymys. Esimerkistä kannattaa huomata, että kaikkien samaan ryhmään kuuluvien valintaruutujen name-attribuutin arvon on oltava sama.
checked-attribuutilla valintaruudulle voidaan määritellä oletusarvo. Tällöin attribuutin arvoksi on laitettava checked.(checked="checked")
Valintanappi - radio
radio-arvo tekee elementistä valintanapin. Valintanappi on pyöreä kenttä. Käyttäjä voi valita saman ryhmän valintanapeista ainoastaan yhden arvon, koska asetettaessa uusi arvo päälle menee entinen valinta pois päältä. Esimerkistä kannattaa huomata, että kaikkien samaan ryhmään kuuluvien valintanappien name-attribuutin arvon on oltava sama. Jos arvo ei ole sama, niin valintanappeja voidaan valita useampiakin ”näennäisesti” samasta ryhmästä.
checked-attribuutilla valintaruudulle voidaan määritellä oletusarvo. Tällöin attribuutin arvoksi on laitettava checked. (checked="checked")
Lähetä-painike - submit, Tyhjennä-painike - reset, Piilokenttä - hidden
submit-arvo luo painikkeen, jolla lähetetään lomakkeen tiedot käsittelevälle ohjelmalle. Painikkeessa lukeva teksti voidaan vaihtaa value-attribuutin arvoa muuttamalla.
<input type="submit" name="laheta" value="Lähetä kommenttisi" />
reset-arvo luo painikkeen, jolla lomakkeen kentät tyhjennetään ja kenttiin sijoitetaan oletusarvot. reset-painikkeen käyttöä lomakkeella kannattaa harkita tarkkaan, koska käyttävä voi vahingossa tyhjentää täyttämänsä lomakkeen ennen lähetystä. Älä laita lomakkeelle reset-painiketta
<input type="reset" name="tyhjenna" value="Tyhjennä lomake"/>
hidden-arvo luo piilotetun kentän, jota ei näytetä käyttäjälle selainikkunassa. Piilotettujen kenttien avulla lomakkeella voidaan välittää tietoa, joka on tarpeellista esimerkiksi lomakkeen käsittelyssä, mutta sitä on turha näyttää varsinaisella lomakkeella. Piilokenttään ei kannata sijoittaa mitään ”salaista” tietoa, kuten esimerkiksi salasanoja tai vastaavia, koska kenttä ja sen arvo nähdään sivun lähdekoodista. Seuraavassa lyhyt esimerkki piilokentän käytöstä.
<input type="hidden" name="ID" value="L0011"/>
Tekstialue - textarea
textarea-elementti mahdollistaa useampirivisen vapaamuotoisen tekstikentän lomakkeella. Elementtiä kannattaa käyttää erilaisten vapaamuotoisten tekstien kirjoittamispaikkana, koska kirjoittaminen useammalle riville on usein mielekkäämpää kuin yhdelle riville.
- Vapaamuotoinen tekstikenttä.
- Pelkästään yleisen tiedon kyselyyn.
- Tekstikentän koko voidaan määritellä tarkkaan.
- Esimerkki laajemman tekstikentän käytöstä
name-attribuutilla voidaan antaa textarea-elementille nimi. Kannattaa huomata, että textarea-elementillä ei ole value-attribuuttia, vaan oletussisältö kirjoitetaan elementin sisään ohessa olevan esimerkin mukaisesti.
rows-attribuutti määrittelee textarea-elementissä näkyvillä olevien rivien lukumäärän. Tämä ei kuitenkaan rajoita rivien lukumäärää, joille käyttäjä voi kirjoittaa. Jos kaikki rivit eivät mahdu kerralla textarea-elementin sisään, luodaan elementin oikeaan laitaan vierityspalkki.
cols-attribuutti määrittelee textarea-elementissä olevan rivin pituuden. Rivin pituudella tarkoitettaan riville mahtuvien ”keskiarvokirjainten” määrää. Arvo ei kuitenkaan rajoita riville kirjoitettavien merkkien lukumäärää. Jos rivi ei mahdu kerralla textarea-elementin sisään, luodaan elementin alalaitaan vierityspalkki.
Valintalista - select
Valintalista on lomakkeella yksi- tai useampivalintainen alasvetovalikko. Valintalistan käyttötilanteet ovat usein samanlaisia kuin radiopainikkeilla ja valintalaatikoilla, mutta valintalistat vievät fyysisesti paljon vähemmän tilaa lomakkeelta. Valintalista luodaan select-elementillä ja sen sisään täytyy laittaa vähintään yksi option-elementti, josta muodostuu varsinainen valinta.
Valintalistojen käytöllä saavutetaan seuraavia hyviä ja huonoja puolia:
- Säästävät tilaa esimerkiksi radio- tai checkbox-elementteihin verrattuna.
- Monivalinnan mahdollisuus, mutta monille käyttäjille hieman vaikea (CTRL-näppäin).
- Listan ryhmittelyä kannattaa käyttää selkeyttämään listaa (optgroup).
- Pitkät valintalistat ovat todella huonoja käytettävyyden kannalta.
- Esimerkki valintalistan käytöstä
select-elementti luo varsinaisen valintalistan rungon, jonka sisään tulevat valinnat toteutetaan option-elementeillä.
name-attribuuttilla voidaan antaa nimi select-elementille.
size-attribuutilla määritellään näkyvissä olevan listan koko. Koko ei ole eri vaihtoehtojen lukumäärä vaan se on pelkästään näkyvillä olevien vaihtoehtojen lukumäärä. Jos vaihtoehtoja on useampia kuin size-attribuutissa on määritelty, niin elementin oikeaan laitaan luodaan vierityspalkki. Jos size on määritelty, niin listaa ei näytetä valintalistana, vaan listaa voidaan ainoastaan vierittää.
multiple-attribuutilla voidaan mahdollistaa elementin useamman vaihtoehdon valinta aktiiviseksi yhtä aikaan. Jos attribuuttia ole määritelty voidaan elementistä kerrallaan valita vain yksi kohta aktiiviseksi.
option-elementti
option-elementillä määritellään valintalistan (select-elementin) sisään tulevat vaihtoehdot. Näkyville tuleva vaihtoehto kirjoitetaan option-elementin sisään eli aloitus- ja lopetus-elementin väliin.
selected-attribuutti ilmaisee onko jokin option-elementillä määritelty kohta valittu aktiiviseksi oletuksena. Attribuutin arvoksi pitää antaa selected. (selected=”selected”)
value-attribuutti antaa oletusarvon kontrollille. Jollei kontrollille ole asetettu mitään arvoa, käytetään sen sisältöä oletusarvona.
Valintalistan ryhmittely - optgroup
Valintalistan ryhmittelyyn voidaan käyttää optgroup-elementtiä. Elementillä saadaan kätevästi ryhmiteltyä valintoja pienempiin ja selkeämpiin kokonaisuuksiin.
label-attribuutilla määritellään otsikko koko optgroup-ryhmälle.
Lomake-elementtien ryhmittely - fieldset
fieldset-elementillä voidaan ryhmitellä lomakkeilla olevia kenttiä loogisiksi kokonaisuuksiksi. Ryhmittelyn tarkoituksena on havainnollistaa käyttäjälle lomakkeella kysyttävien tietojen tarkoitusta.
- fieldset-elementillä määritellään lomake-elementit kuulumaan samaan ryhmään.
- Ryhmiä kannattaa miettiä esimerkiksi lomakkeen kysymyksien aihealueiden mukaisesti.
- Myös sisäkkäiset ryhmittelyt ovat mahdollisia.
- legend-elementillä määritellään lomakeryhmän (fieldset) otsikko.
Seuraavassa esimerkissä on käytetty fieldset-elementtiä lomakkeen tietojen ryhmittelemiseen. legend-elementillä kerrotaan kyseisen elementtiryhmän otsikko, joka on sijoitettu ensimmäiseksi elementiksi fieldset-ryhmään. Lomakkeella voi olla muitakin fieldset-ryhmiä
Elementtien ryhmän otsikko - legend
Elementtiryhmälle voidaan antaa otsikko legend-elementin avulla.
Esimerkki ryhmittelyn käytöstä. Ryhmittelyä on käytetty kaikissa esimerkin kysymyksissä.
button - yleispainike
button-elementti on yleinen painike. Buttonilla voi olla kolme eri tyyppiä (type): submit, joka lähettää lomakkeen palvelimelle, reset, joka tyhjentää lomakkeen sekä button, jolloin painike ei oletuksena tee mitään.
Seuraavassa esimerkissä liitetään submit-painikkeen yhteyteen kuva.
<button name="laheta" type="submit">
<img src="kuva.jpg" alt="Lähetä" />
</button>
Esimerkkejä
| Elementti | Koodi | Esimerkki |
|---|---|---|
| Kentän otsikko ja tekstikenttä | | |
| Salasana | | |
| Valintaruutu | |
|
| Valintanappi | |
|
| Tekstialue |
| |
| Valintalista ryhmittelyillä |
|
|
| Lomake-elementtien ryhmittely | | |
| Kuva-painike | |
|
| Tiedosto-painike |
|
|
| Piilokenttä | | |
| Lähetä-painike | | |
| Tyhjennä-painike | | |
| Hakukenttä | |
|
| Puhelinnumero | |
|
| number | |
|
| range | |
|
| datalist | |
|
| URL | |
|
| Päivämäärä | |
|
| Päivä ja kellonaika | |
|
| Kuukausi | |
|
| Viikko | |
|
| Aika | |
|
| Väri | |
|
| Sähköpostiosoite | |
Lomakkeiden ulkoasu
Lomakkeen käytettävyyden ja esteettömyyden parantaminen
Seuraavaan on koottu erilaisia lomakkeiden tekemisessä huomioitavia asioita lomakkeiden esteettömyyden ja käytettävyyden lisäämiseksi.
- label- ja input-elementtien on yhdistyttävä loogisesti.
- Lomake-elementtien järjestelyssä kannattaa välttää taulukointia, sillä tämä johtaa joskus siihen, että lomakeotsikko ja -elementti eivät yhdisty.
- Ryhmittele samaan asiaan liittyvät kenttäelementit (fieldset ja legend) sekä valintalistan kohdat (optgroup).
- Lomakkeessa eteneminen täyttöjärjestyksessä täytyy olla mahdollista TAB-näppäimen avulla.
- Lomake-elementit kannattaa laittaa siihen järjestykseen kuin missä ne täytetään.
- tabindex-ominaisuudella voidaan tarvittaessa määrittää lomakekenttien läpikäyntijärjestys, esim. jos on useita lomakkeita tai esitysjärjestys dokumentissa ei ole looginen.
- Älä laita lomakkeelle tyhjennä-painiketta (reset)! (Voi käyttää, jos lomake on esim. esitäytetty, mutta silloinkin on miettivä painikkeen sijoittelu tarkkaan.)
- Lomakkeen viimeiseksi elementiksi lähetyspainike (submit).
- Lisää lomakkeen kenttiin oletusarvot.
- Lomakkeeseen (form) vain lomake-elementit ja niihin liittyvät täyttöohjeet.
- Ennen lomaketta on kerrottava kaikki täytössä tarvittavat tiedot.
- Ennen lomake-elementtiä tieto lomakkeeseen syötettävästä tiedosta ja sen muodosta.
- Helposti syötettäviä arvoja (esim. kuukaudet tai päivät) tekstikentiksi valintalistojen sijaan.
- title-elementillä voidaan selventää lomakkeen kentän merkitystä.
Erilaisia ohjeita ja vihjeitä lomakkeiden suunnitteluun
- Esteettömyysopas - TIEKE
- Creating Accessible Forms - WebAIM
- Accessible Forms - James W. Thatcher
Dive Into HTML5 - A Form of Madness: selitystä uusista HTML 5:n lomakeominaisuuksista esimerkkien kera
Lomaketietojen käsittely

- Selainohjelma pyytää palvelimelta lomakesivun.
- Palvelin toimittaa sivun selaimelle.
- Käyttäjä täyttää ja hyväksyy lomakkeen. Selain lähettää lomakkeen tiedot WWW-palvelimella suoritettavalle ohjelmalle.
- Lomakkeelta tuleva data käsitellään ohjelman tekijän haluamalla tavalla.
Ohjelma voi tehdä esimerkiksi seuraavia toimenpiteitä:
- Erikoismerkkien käsittely (esim. ääkköset, rivinvaihdot).
- Tarkistukset syötteelle (esim. onko jokin kenttä oikean muotoinen, onko kaikkiin kohtiin vastattu).
- Tiedot tallennetaan tietokantaan, lähetetään sähköpostitse, tallennetaan suoraan osaksi jotain www-sivua jne.
- Lomakkeen tietojen jatkokäsittelyyn voidaan käyttää monenlaisia erilaisia ohjelmistoja.
- Ohjelma palauttaa käyttäjälle tietoja:
- Varmistuksen tietojen lähetyksen onnistumisesta.
- Tiedon, jos syötteessä oli jotakin virheitä.
- Tilauksen tai palautteen sisällön.
Lomakkeen tietojen käsitteleminen
Lomakkeen tietojen käsitteleminen edellyttää joko oman ohjelman kirjoittamista tai jonkin valmiin lomakekäsittelijän käyttämistä. Tällä kurssilla käytetään vain valmiista lomakekäsittelijää. Omia lomakkeenkäsittelijöitä ohjelmoidaan TIEA2120- ja TIES4080-kursseilla.
Tietojen lähettäminen ohjelmalle
Lomakkeen tiedot lähetetään yleensä www-palvelimella sijaitsevalle ohjelmalle. Lomake on mahdollista käsitellä myös suoraan selaimessa, mutta se opitaan vasta TIEA2120-kurssilla.
<form action="http://palvelin/cgi-bin/kasittelija.cgi" method="post">
...
</form>
Lähettämisessä käytettävät tavat
Lomakkeen tietojen lähettämiseen on kaksi erilaista metodia (post ja get), joilla kummallakin on oma käyttökohteensa. Metodien välinen ero huomioidaan lomakkeen tiedot vastaanottavassa ohjelmassa.
post-metodi
<form action="http://palvelin/cgi-bin/kasittelija.cgi" method="post">
...
</form>
- Käytetään silloin, kun ei haluta tietoja URL:n joukkoon tai kun lähetettävä tietomäärä on suuri.
- Käytetään, jos lomakkeen tiedoilla pyritään muuttamaan / lisäämään / poistamaan jonkin tietovaraston tietoja.
get-metodi
<form action="http://palvelin/cgi-bin/kasittelija.cgi" method="get">
...
</form>
- Käytetään, jos lomakkeella on tarkoitus tehdä haku tai muu toiminto, joka ei vaikuta järjestelmän tilaan.
- Älä käytä tällä kurssilla GET-metodia
Harjoitustyössä käytettävä CGI-ohjelma
Harjoitustyössä käytettävä CGI-ohjelma on asennettu valmiiksi kurssipalvelimelle. Käyttäminen on yksinkertaista. Aseta lomakkeesi action-attribuutin arvoksi: http://appro.mit.jyu.fi/cgi-bin/view.cgi. Käsittelijä näyttää lomakkeelle syötetyt tiedot mutta ei tallenna niitä minnekään.
<form action="http://appro.mit.jyu.fi/cgi-bin/view.cgi" method="post">
Hakulomake
Sivustohaun toteuttaminen vaatii melko hyvää ohjelmointitaitoa. Voimme kuitenkin käyttää hakukoneiden tarjoamia rajapintoja hakulomakkeen tekemiseksi. Tarvitsemme hakupalvelun, joka antaa rajoittaa haun omille sivuillemme. Lähtökohtana voimme tutkia, mitä parametreja osoiteriviltä löytyy tai millainen lomake hakukoneen Advanced search -sivulta löytyy. Näiden tietojen perusteella voimme tehdä oman hakulomakkeen ja laittaa sen käsittelijän osoittamaan hakukoneen ohjelmaan.
Google search basics: More search help
-sivulta löydämme, että jos hakutermissä on site:, niin tällä voi rajoittaa hakua
WWW-osoitteen mukaan.
Search Protocol Reference - Request Format ja
Googlen webbikäyttöliittymän ja haun kielikoodit -sivuilta
löydämme myös, että parametri q on hakutermi. Parametrilla as_q voidaan lisätä myös muita hakutermejä.
Referenssidokumentteja tutkimalla löydämme myös parametrit ie (hakutermien merkistökoodaus),
oe (hakutulosten merkistökoodaus) ja hl (Googlen käyttöliittymän kieli).
Näiden perusteella teemme lomakkeen, joka rajoittuu kurssisivustolle:
Omille sivuille tehtävissä hauissa käy joskus niin, että Google ei löydä yhtään hakutulosta millään hakusanalla. Tähän syynä on se, että Google ei ole vielä indeksoinut sivuasi tietokantaansa. Automaattinen indeksointi vaatii sen, että joltain jo indeksoidulta sivulta on linkki sivullesi. Google tekee indeksoinnin yleensä noin kerran viikossa, eli ihan heti uudet sivut eivät Googlen avulla löydy mitenkään.
Käyttäjien kommentit