Kiel fari TTT-pagxojn

Formularoj

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

La temo formularoj estas tre kompleksa. Cxi 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 cxi pagxo.

Kiel funkcias formularo? «

Formularo en XHTML-a pagxo 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 gxi plusendas ilin per retposxto ien. Eble gxi konservas ilin en datumbazo. Eble gxi prilaboras ilin kaj resendas ilin al la persono, kiu uzis la formularon. Eble gxi faras plurajn tiajn aferojn samtempe, aux ion tute alian.

La cxi-antauxa testa formularo kunlaboras kun tre simpla programeto, kiun mi instalis en mia servilo. Gxi nomigxas “Formularilo”, kaj estas farita per la programlingvo PHP. La Formularilo ne faras multon. Gxi nur kolektas la informojn, kaj resendas tekstan (ne-HTML-an) pagxon, 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 gxeneralajn 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 cxiu ajn.

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 cxiuj serviloj estas permesite instali tiajn programojn. Gxenerale tio malofte eblas en senkostaj serviloj. Sed se oni pagas monon por sia retspaco, tiam plej ofte oni havas la eblon uzi Perlon aux alian tian lingvon. Sed la kondicxoj tre varias en la diversaj serviloj.

Ankoraux unu eblo estas uzi la retposxtan programon de la uzanto anstataux programon en servilo. Por fari tion oni skribas kiel adreson “mailto:” plus retposxtan adreson, al kiu la retposxta programo sendu la informojn. Tiu eblo tamen estas tre malrekomendinda, cxar gxi ne estas fidebla. Oni ne scias, kian retposxtan programon la uzanto havas (se li entute havas reposxtan programon), kaj oni ne scias, kiel tiu programo reagos. Oni ja povas uzi “mailto:” en ordinaraj ligiloj. Tio estas suficxe senriska, sed en formularoj “mailto:” estas evitinda.

Tiu cxi leciono instruas nur, kiel verki (tre simplan) formularon per XHTML. Se vi volas lerni, kiel fari formularakceptan servon per Perlo, PHP aux alia lingvo, vi bedauxrinde devas tion lerni aliloke.

form kaj input

Formularo konsistas el la elemento form, ene de kiu trovigxas diversaj specialaj formularaj elementoj, precipe input, kaj normale ankaux 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 aux enskribi siajn informojn, aux por poste ordoni, ke la informoj estu forsenditaj. Cxi tie estas uzata nur la formulara elemento input.

Jen la XHTML-kodo de la cxi-antauxa 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 komencigxas per <form ...>, kaj finigxas 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 “https://bertilow.com/html/xhtml/kurso/formularilo.php”. Se vi enskribos ion, kaj alklakos “Sendu!”, la Formularilo respondos montrante, kiujn informojn gxi ricevis de vi.

  3. La formularo enhavas tri input-elementojn. Cxiu el ili estas metita ene de div-elemento. La du unuaj div-oj ankaux 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. Cxiu 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 prezentigxas kiel butono, kiun la uzanto povas alklaki por forsendi la informojn. Per la atributo value estas indikite, kiu teksto aperu sur tiu butono, cxi-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 sendajxo. 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”. Cxio antaux la demandosigno estas la adreso, al kiu la TTT-legilo sendis la formularinformojn. Cxio post la demandosigno estas la informoj, kiujn gxi sendis.

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

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

Iuj signoj aperos en tia kunteksto (en tia adreso post demandosigno) en speciale kodita formo. Se vi ekzemple uzis spacosignojn, ili aperos anstatauxe kiel plus-signoj; aliaj signoj povas aperi kiel %-signo sekvata de du literoj aux 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 lauxbezone kodas la aferojn, antaux ol gxi forsendas ilin.