Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Vinkkejä lomakedatan parsimiseksi

leftover [28.08.2005 20:19:41]

#

En tiedä haukkasinko liian ison palan kun päätin tehdä FiLib-kirjaston alle oman lomakeolion, mutta nyt kun aloitin jo suunnittelun, en varmasti ota takapakkia :)

Lomakedatataulukko (eli taulukko jonka avulla rakennetaan lomake) näyttää nyt seuraavalta (print_r silmistä):

Array
(
    [lomake] => Array
        (
            [nimi] => omaLomake
            [otsikko] => Ensimmäinen testilomake
            [käsittelijä] => testi.php
            [rakenne] => 2
            [metodi] => 1
            [koodaustyyppi] => multipart/form-data
            [tyylit] => Array
                (
                    [otsikko] => Array
                        (
                            [style] => font-size: bigger
                        )

                )

            [HTML] => Array
                (
                    [otsikko] => Array
                        (
                            [0] => <h1>
                            [1] => </h1>
                        )

                    [pakollinenkenttä] => Array
                        (
                            [0] => <b>*
                            [1] => </b>
                        )

                    [virhekenttä] => Array
                        (
                            [0] => <span style="color: red"><b>
                            [1] => </b></span>
                        )

                )

        )

    [rivit] => Array
        (
            [0] => Array
                (
                    [nimi] => nimi
                    [tyyppi] => text
                    [kuvaus] => Nimesi:
                    [attribuutit] => Array
                        (
                            [0] => size="50"
                            [1] => maxlength="255"
                        )

                    [pakollinen] => 1
                    [tarkastus] => 4
                    [minimipituus] => 4
                )

            [1] => Array
                (
                    [nimi] => asia
                    [tyyppi] => Array
                        (
                            [select] => Array
                                (
                                    [Sivusto] => PHP FiLib sivustoa
                                    [Muu] => Jotain muuta
                                )

                        )

                    [kuvaus] => Asia koskee:
                )

            [2] => Array
                (
                    [nimi] => viesti
                    [tyyppi] => textarea
                    [kuvaus] => Viestisi:
                    [attribuutit] => Array
                        (
                            [0] => cols="30"
                            [1] => rows="8"
                        )

                    [pakollinen] => 1
                    [tarkastus] => 4
                    [minimipituus] => 10
                )

            [3] => Array
                (
                    [nimi] => Array
                        (
                            [0] => Array
                                (
                                    [nimi] =>
                                    [tyyppi] => submit
                                    [attribuutit] => Array
                                        (
                                            [0] => value="Lähetä"
                                        )

                                )

                            [1] => Array
                                (
                                    [nimi] =>
                                    [tyyppi] => reset
                                    [attribuutit] => Array
                                        (
                                            [0] => value="Tyhjennä"
                                        )

                                )

                        )

                    [kuvaus] => &nbsp;
                )

        )

)

Lomake joka tuosta pitäisi repiä irti olisi:

<form name="omaLomake" action="testi.php" method="POST" enctype="multipart/form-data">

<div>
    <div style="font-size: bigger">
        <h1 style="font-size: bigger">Ensimmäinen testilomake</h1>
    </div>
</div>

<div>
    <div>
        <b>* Nimesi:</b>
    </div>
    <div>
        <input type="text" name="nimi" size="50" maxlength="255" />
    </div>
</div>

<div>
    <div>
        Asia koskee:
    </div>
    <div>
        <select name="asia">
            <option value="Sivusto">PHP FiLib sivustoa</option>
            <option value="Muu">Jotain muuta</option>
        </select>
    </div>
</div>

<div>
    <div>
        <b>* Viestisi:</b>
    </div>
    <div>
        <textarea name="viesti" cols="30" rows="8"></textarea>
    </div>
</div>

<div>
    <div>
        &nbsp;
    </div>
    <div>
        <input type="submit" value="Lähetä" />
        <input type="reset" value="Tyhjennä" />
    </div>
</div>

</form>

jotakin pientä speksinrankaa löytyy PHP FiLib muutoksista.

Joitakin omia mietelmiä:

Aivan kuten taulukkokin, koostuu lomake selkeästi kahdesta pääosasta: lomakkeesta ja riveistä. Lomake jakaantuu tietoihin, tyyleihin ja HTML-koodiin, rivien jakautuessa periaatteessa nimiosuuteen ja kenttäosuuteen.

Selvää on, että luokkaan on tulossa parseri ainakin lomake-elementeillä, joka laajentaa riviparseria. Myös HTML:n ja tyylien ylläpitämiseksi olisi hyvä tehdä oma parseri. Lopuksi tulee tulostaLomake (tmv.), joka kasaa parserit yhdeksi isoksi kokonaisuudeksi.

Mietintämyssyn alla olisi: olenko unohtanut jonkun tärkeän osa-alueen? Entä tulisiko mieleen yksinkertaistusehdotuksia taulukon suhteen?

Luokkaan olisi tarkoitus upottaa myös validointi- ja muuta kivaa, ja luonnollisesti luokka säilyttäisi lomakkeen tiedot vaikka validointi epäonnistuisi. Eräs mikä mietityttää on PEARin QuickForm jolla saa siistiä jälkeä englanniksi, ja pienellä puukotuksella myös suomeksi. Tosin tarkoitukseni olisi tehdä PEARin pakettiin verrattuna huomattavasti yksinkertaisempi.

Ennen kaikkea kaipaisin kommentteja ja ehdotuksia nykyisestä taulukkorakenteesta, etenkin rakenteen yksinkertaistamisesta. Saa toki myös muuta ehdotella mitä päähän pälkähtää.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta