Kiel fari TTT-paĝojn

Formularoj

XHTML-aj formularoj estas iloj por kolekti informojn, kiuj poste povas esti sendataj ien.

La temo formularoj estas tre kompleksa. Ĉi tie estos nur mallonga kaj tre baza klarigo.

Jen ekzemplo de simpla formularo:

Testoformularo

Persona nomo:
Familia nomo:

Enskribu vian personan kaj familiajn nomojn, kaj poste aktivigu la butonon “Sendi!”. Vi tiam ricevos raporton pri tio, kion vi enskribis. Poste reiru al tiu ĉi paĝo.

Kiel funkcias formularo? «

Formularo en XHTML-a paĝo havas sencon nur kunlabore kun ia servo, kiu akceptas la sendatajn informojn.

Oni devas en la formulara kodo indiki la adreson de tia servo. Kiam uzanto fine aktivigas la sendobutonon de la formularo, la TTT-legilo forsendas tiujn informojn al tiu servo. La akceptanta servo tiam faras ion per la senditaj datumoj. Eble ĝi plusendas ilin per retpoŝto ien. Eble ĝi konservas ilin en datumbazo. Eble ĝi prilaboras ilin kaj resendas ilin al la persono, kiu uzis la formularon. Eble ĝi faras plurajn tiajn aferojn samtempe, aŭ ion tute alian.

La ĉi-antaŭa testa formularo kunlaboras kun tre simpla programeto, kiun mi instalis en mia servilo. Ĝi nomiĝas “Formularilo”, kaj estas farita per la programlingvo PHP. La Formularilo ne faras multon. Ĝi nur kolektas la informojn, kaj resendas tekstan (ne-HTML-an) paĝon, kiu raportas, kion la Formularilo ricevis.

Formularakcepta servo normale estas programo instalita en TTT-servilo. Ofte oni parolas pri CGI-programoj. Multaj retprovizantoj havas tiajn ĝeneralajn servojn, kiujn oni povas uzi por kelkaj bazaj celoj (demandu al via retprovizanto).

En kelkaj lokoj en la Reto ekzistas serviloj kun tiaj servoj uzeblaj de ĉiu ajn. En The CGI Resource Index” troviĝas listo de tiaj servoj.

Se oni volas mem krei tian servon, oni devas uzi ian programlingvon. (Tio tute ne eblas per XHTML.) Ofte uzataj lingvoj estas Perlo, PHP, Ruby, ASP, JSP kaj multaj aliaj similaj rimedoj.

Ne en ĉiuj serviloj estas permesite instali tiajn programojn. Ĝenerale tio malofte eblas en senkostaj serviloj. Sed se oni pagas monon por sia retspaco, tiam plej ofte oni havas la eblon uzi Perlon aŭ alian tian lingvon. Sed la kondiĉoj tre varias en la diversaj serviloj.

Ankoraŭ unu eblo estas uzi la retpoŝtan programon de la uzanto anstataŭ programon en servilo. Por fari tion oni skribas kiel adreson “mailto:” plus retpoŝtan adreson, al kiu la retpoŝta programo sendu la informojn. Tiu eblo tamen estas tre malrekomendinda, ĉar ĝi ne estas fidebla. Oni ne scias, kian retpoŝtan programon la uzanto havas (se li entute havas repoŝtan programon), kaj oni ne scias, kiel tiu programo reagos. Oni ja povas uzi “mailto:” en ordinaraj ligiloj. Tio estas sufiĉe senriska, sed en formularoj “mailto:” estas evitinda.

Tiu ĉi leciono instruas nur, kiel verki (tre simplan) formularon per XHTML. Se vi volas lerni, kiel fari formularakceptan servon per Perlo, PHP aŭ alia lingvo, vi bedaŭrinde devas tion lerni aliloke.

form kaj input

Formularo konsistas el la elemento form, ene de kiu troviĝas diversaj specialaj formularaj elementoj, precipe input, kaj normale ankaŭ diversaj ordinaraj XHTML-elementoj kiel p, div, strong k.s.

La form-elemento enhavas (per atributo) la adreson de la servo, kiu akceptos la informojn.

La specialaj formularaj elementoj reprezentas diversajn formularpartojn, kiujn la uzanto uzas por elekti aŭ enskribi siajn informojn, aŭ por poste ordoni, ke la informoj estu forsenditaj. Ĉi tie estas uzata nur la formulara elemento input.

Jen la XHTML-kodo de la ĉi-antaŭa testa formularo:


<form action="formularilo.php">

  <div>
    Persona nomo:
	<input type="text" name="personanomo" />
  </div>

  <div>
    Familia nomo:
	<input type="text" name="familianomo" />
  </div>

  <div>
	<input type="submit" value="Sendi!" />
  </div>

</form>

Klarigoj

  1. La formularo komenciĝas per <form ...>, kaj finiĝas per </form>. Ne forgesu fermi la form-elementon!

  2. La malferma form-marko enhavas la atributon action, kiu havas la valoron formularilo.php. Tio montras la adreson, al kiu la TTT-legilo sendu la informojn de la formularo. La adreso estas relativa, kaj egalas al la absoluta adreso “http://bertilow.com/html/xhtml/kurso/formularilo.php”. Se vi enskribos ion, kaj alklakos “Sendu!”, la Formularilo respondos montrante, kiujn informojn ĝi ricevis de vi.

  3. La formularo enhavas tri input-elementojn. Ĉiu el ili estas metita ene de div-elemento. La du unuaj div-oj ankaŭ enhavas tekston, kiu indikas la celon de la apuda input-elemento (“Persona nomo:”, “Familia nomo:”).

  4. La du unuaj input-elementoj estas tekstaj. Tion indikas la atributo type="text". Tio signifas, ke la uzanto enskribu iomete da teksto. Ĉiu el tiuj tekstaj enmetiloj havas nomon indikitan per la atributo name (respektive “personanomo” kaj “familianomo”).

  5. La tria input-elemento estas forsendilo. Tion indikas la atributo type="submit". Tia elemento normale prezentiĝas kiel butono, kiun la uzanto povas alklaki por forsendi la informojn. Per la atributo value estas indikite, kiu teksto aperu sur tiu butono, ĉi-okaze la teksto “Sendi!”.

Kion ricevis la Formularilo?

Se vi teste enskribas iom da informoj pri persona nomo kaj familia nomo, kaj forsendas tion al la Formularilo, vi ricevas simplan raporton pri via sendaĵo. Se vi atente rigardas la adreson en la adresokampo de via TTT-legilo, vi tiam kredeble vidos ion similan al la jeno:

http://.../formularilo.php?personanomo=Bertilo&familianomo=Wennergren

Tie vi rimarku la demandosignon post “formularilo.php”. Ĉio antaŭ la demandosigno estas la adreso, al kiu la TTT-legilo sendis la formularinformojn. Ĉio post la demandosigno estas la informoj, kiujn ĝi sendis.

Tiuj informoj konsistas el du partoj: “personanomo=Bertilo” kaj “familianomo=Wennergren”. Inter ili estas la disiga signo “&”. (Kompreneble anstataŭ “Bertilo” kaj “Wennergren” aperos tio, kion vi enskribis.)

La Formularilo ricevas tiujn informojn, prilaboras ilin, kaj respondas al vi, montrante, kion ĝi ricevis.

Iuj signoj aperos en tia kunteksto (en tia adreso post demandosigno) en speciale kodita formo. Se vi ekzemple uzis spacosignojn, ili aperos anstataŭe kiel plus-signoj; aliaj signoj povas aperi kiel %-signo sekvata de du literoj aŭ ciferoj. Servo, kiu akceptas tiajn informojn, devas scii, kiel dekodi tiajn informojn. Sed kiam vi faras ordinaran formularon, vi ne bezonas pensi pri tio. La TTT-legilo mem laŭbezone kodas la aferojn, antaŭ ol ĝi forsendas ilin.