Huomio! Tämä projekti on siirretty automaattisesti vanhasta projektijärjestelmästä. Aloitusviesti on projektin kuvaus sellaisena, kuin se oli 19.12.2008, ja seuraavat viestit siirtoon saakka ovat kommentteja.
Versio/vaihe: Alpha V0.01
Vaatii: PHP 5.1 (PDO enabled)
WebComponent on luokkakirjasto, joka on tarkoitettu PHP-pohjaisten tietokantasovellusten toteuttamiseen.
19.12.2008
- Ensimmäinen versio on nyt ladattavissa lähdekoodeineen täältä: V0.01
- Mukana koodiesimerkkejä, sekä yritys- ja henkilörekisteri
- CSS:n generointi toimii nyt kaikille pääkomponenteille
- Tietokannan käyttäjä joutuu tekemään vielä itse
7.12.2008
- Lisätty WebPage-komponentti, johon voidaan lisätä rajaton määrä muita WebComponentteja
- CSS:n generoinnin toteutus on nyt hyvässä vaiheessa
- Koodi rupeaa menemään XHTML-validaattorista läpi
- Uutta versiota voi testata täällä
WebComponent
Kirjaston avulla sovelluskehittäjä voi hetkessä toteuttaa tietokantasovelluksen, koskematta itse ohjelmakoodiin tai tietokantaan. Nämä kirjasto piilottaa rajapintansa taakse.
Sovelluskehittäjän harteille jää (kirjaston käytön lisäksi) vain sovelluksen ulkoasun toteuttaminen valmiiksi generoituun CSS-aihioon. Myös tietokannan kirjasto osaa pian luoda itse.
Kirjaston käyttö todella nopeuttaa web-pohjaisten tietokantasovellusten tekoa. Sitä käyttämällä säästyy esimerkiksi aina kirjoittamasta samaa koodia uudelleen jokaista eri lomaketta varten (HTML-lomake, lomakkeen käsittely, kenttien arvojen tarkistus, arvon muotoilu SQL-formaattiin, SQL-lauseen kirjoittaminen, SQL-kyselyn tekeminen, SQL-formaatista ihmisen ymmärtämään muotoon muuntaminen, kannasta haetun arvon sijoitus HTML-kenttään, virheilmoitusten näyttäminen...).
Esimerkkitapaus:
- Tehdäänpä käyttövalmis henkilötietojenmuokkaustoiminto henkilörekisteriä varten:
Kuva
<?php // Sisällytetään kaikki WebComponentit require_once("WebComponents.php"); // Luodaan muokkauslomake ja liitetään se Henkilo nimiseen tietokannan tauluun. $lomake = new UpdateForm("Henkilo"); // Asetetaan henkilön yksilöiväksi avaimeksi henkiloID. // Arvo saadaan parametrina urlissa. Yleensä sama kuin perusavain. $henkiloID = (int)$_GET['henkiloID']; $lomake->AddKey("henkiloID", $henkiloID); // Lisätään tekstikentät etunimelle ja sukunimelle, // sekä päivämääräkenttä syntymäpäivälle. $lomake->AddField( new TextField("enimi", "Etunimi") ); $lomake->AddField( new TextField("snimi", "Sukunimi") ); $lomake->AddField( new DateField("spvm", "Syntymäpäivä") ); // Lisätään pudotusvalikko, joka saa arvonsa tietokannan taulusta // Paikkakunta, ja näyttää tietokannan sarakkeen, paikkakunta, // arvon. $lomake->AddField( new ListField("paikkakuntaID", "Kotikunta", array("paikkakunta"), "Paikkakunta") ); // Tulostetaan XHTML-koodi (hoitaa myös lomakkeen käsittelyn, nykyisten arvojen hakemisen tietokannasta HTML-kenttiin, uusien arvojen päivittämisen tietokantaan jne.) echo $lomake; ?>
- Nyt meillä on valmis henkilötietojenmuokkaustoiminto, joka osaa päivittää tietyn (parametrina saadun) henkilön tietoja tietokannasta. Linkki tähän toimintoon (tälle sivulle) olisi voinut olla esimerkiksi toisella PHP-sivulla sijaitsevalla henkilöidenselauslomakkeella.
PowerPoint-esitys WebComponentista
Alphaversiolla tehty muotoilematon yritys- ja henkilörekisteri
Hieman uudempi versio, jossa CSS-aihiot generoituna
Mielenkiintoisen oloinen järjestelmä.. Pitääpä testata.
Laittakaa ihmeessä kommenttia, mitä toimintoja/komponentteja haluaisitte tähän systeemiin saada jatkossa.
Createman kirjoitti:
Laittakaa ihmeessä kommenttia, mitä toimintoja/komponentteja haluaisitte tähän systeemiin saada jatkossa.
Haluaisin linkin lähdekoodien ja dokumentaation lataukseen :) Vai olenko nyt aivan puusilmä kun en näe missään linkkiä mistä projektin voisi ladata?
Ensimmäinen julkaisukelpoinen versio tulee toivottavasti tämän viikonlopun aikana.
Edit: Venähtää kouluhommien takia jonkin verran.
Edit2:
CSS-generointi aiheutti hieman muutoksia kirjaston rakenteeseen. Tarvittiin esimerkiksi uusi komponentti, WebPage, CSS-generoinnin avuksi.
Eka versio julkaistaan heti, kunhan olen saanut CSS-generoinnin tehtyä kaikille komponenteille ja jotain dokumentaatiota laadittua.
Hyvältä vaikuttaa. Innolla odotan julkaisua.
Koeviikosta taas selvitty ja lomille päästy...
Jos joku viitsii tuota palvelimellaan testata, niin oisin kiitollinen kaikesta palautteesta.
Createman kirjoitti:
Laittakaa ihmeessä kommenttia, mitä toimintoja/komponentteja haluaisitte tähän systeemiin saada jatkossa.
Voisi panna ettei syntymävuoden pudotusvalikosta voi valita yli nykypäivää, vaikka php-koodi sen lähettämisen jälkeen tosin validoikin.
Olen kokeillut tuota omalla palvelimellani ja hyvin toimii. Todella hyvä kirjasto. Ehdotukseni olisi, että voisi muuttaa esim. noita ListFieldejä siten, että 'liitoskentät' voisivat olla eri nimisiä. Taitaa olla kuitenkin vähän makuasia miten tuon haluaa tehdä. Olisi kuitenkin hyvä jos olisi mahdollisuus käyttää myös toista nimeämistapaa. Itse olen käyttänyt tietokannan taulukoissa nimeämistapana esimerkiksi: '.. WHERE henkilo.id = yritys.henkilo ..'. Mikähän on 'virallisin' tapa?
Itse en ainakaan tykkää että tämä suoraan käsittelee tietokantaa luoden ylimääräisen yhteyden. Jotenka mahdollisuus käyttää jotain hienoa wrapperia datan hakuun olisi ihan kiva.
Kiitos testailusta ja palautteesta.
Olen tässä ollut kipeenä melkein koko joululoman, mutta jatkan taas kehitystä, kunhan koodauskipinä iskee.
Täytyisi itsellekin keksiä joku järjestelmä, jonka tällä WebComponentilla tekisi, jotta saisi jonkun 'oikean syyn' tehdä tätä innolla eteenpäin. Tällä hetkellä ohjelmointi-into on taas tuolla peliohjelmoinnin puolella, jota olen harrastanut enemmän. Laittakaa ehdotuksia, jos tulee mieleen ideaa jollekin järjestelmälle, jonka tekemiseen WebComponenttia voisi käyttää (mutta jonka tekemiseksi WebComponent ei vielä ole riittävän laaja).
jo123, erilaisia 'rajoituksia' tulee jossain vaiheessa lisää.
nax, tuommoisen voin tuohon jossain vaiheessa lisätä.
NiLon, voisitko tarkentaa?
Ei saisi hyväksyä henkilötietojen lisäämistä ilman nimeä.
Kehittäminen jatkuu taas, löytyi koodauskipinä ja konkreettista tarvetta paremmalle versiolle.
Aihe on jo aika vanha, joten et voi enää vastata siihen.