Hei!
Kuinkas menee php:llä tulostus, jos haluaa tehdä checkbox valintakentät. Arvot tulisivat tietokannasta....
<?php $query = mysql_query('SELECT lajiid, sarja, laji, lajiryhma FROM laji'); while($lajirivi = mysql_fetch_array($query)) { print <input type="checkbox" id=\"$lajirivi['lajiid']"> $lajirivi['sarja'].' '.$lajirivi['laji'].' '.$lajirivi['lajiryhma'].'<BR>'."\n"; } ?>
Itse sain tuohon malliin, mutta valittaa nyt tuosta ensimmäisestä '<' ??
Kiitokset jo etukäteen...
Muista eskapettaa lainaismerkit.
Teuronkin koodi näyttää olevan väärin värityksestä päätellen. Tämän pitäisi olla oikein:
<?php print "<input type=\"checkbox\" id=\"{$lajirivi['lajiid']}\"> {$lajirivi['sarja']} {$lajirivi['laji']} {$lajirivi['lajiryhma']}<BR>\n"; ?>
Edit: Putkan php-väritystä voisi parantaa siten, että lainausmerkkien välistä muutettaisiin siniseksi muuttujat ja escapetetut merkit niin kuin KDE:n KatePart tekee.
Jospa opetellaan samalla tekemään oikeaoppisia formeja HTML:llä. Ja on se avutonta meininkiä, jossei parse erroria osaa itse korjata.
The Alchemist kirjoitti:
Jospa opetellaan samalla tekemään oikeaoppisia formeja HTML:llä.
Hifistelyä..
Kiitokset neuvoista... ja vaikka en nyt osannukaan korjata itse parse erroria niin voi voi :)
Mutta mitenkäs tuohon saisi tehtyä niin, että laitettaisiin checkbox:t taulukkoon lajiryhmittäin sarakkeet.... ??
artz86 kirjoitti:
Mutta mitenkäs tuohon saisi tehtyä niin, että laitettaisiin checkbox:t taulukkoon lajiryhmittäin sarakkeet.... ??
Vaikka laittamalla kyselyn loppuun ORDER BY lajiryhma
. Sitten looppaat niitä läpi kuten ennenkin ja aina kun lajiryhma on eri kuin edellisessä sarakkeessa, lisäät uuden rivin.
Joo voisiko joku antaa hiukan alkuun apua, kun ei nyt oikein aukene koodi? :)
Kokeilin tehdä if-lauseilla, mutta tuloksena vain pelkkä checkbox ei muuta
Tarkoitin jotain tällaista:
$query = mysql_query('SELECT lajiid, sarja, laji, lajiryhma FROM laji ORDER BY lajiryhma'); //ORDER BY: järjestetään lajiryhmän mukaan echo '<table><tr>'; //Taulukon alku $edellinen_lajiryhma = null; while($lajirivi = mysql_fetch_array($query)) { if ($lajirivi['lajiryhma'] === null) $edellinen_lajiryhma = $lajirivi['lajiryhma']; //Asetetaan eka rivi oikein if ($lajirivi['lajiryhma'] != $edellinen_lajiryhma) { echo '</tr><tr>'; //Siirrytään seuraavalle riville $edellinen_lajiryhma = $lajirivi['lajiryhma']; //Muutetaan edellinen lajiryhmä nykyiseksi } print "<td><input type=\"checkbox\" id=\"{$lajirivi['lajiid']}\"> {$lajirivi['sarja']} {$lajirivi['laji']} {$lajirivi['lajiryhma']}</td>\n"; } echo '</tr></table>'; //Taulukon loppu
Testaamaton!
Joo kiitoksia hyvin toimii... mitenkäs nyt tuon saisi niin muutettua, että tekisi sarakkeittain tuon lajittelun nyt rivettäin :D
Se meneekin jo hankalammaksi. Yksi vaihtoehto olisi koota ne ensin kaksiuloitteeseen taulukkoon, sitten flipata ulottuvuudet ja tulostaa vaikka kahdella sisäkkäisellä foreach:illa. Valitettavasti en nyt pääse koodia kirjoittamaan yli viikkoon, joten enempää en voi auttaa nyt.
Eihän tuon tekemiseen edes tarvitse PHP:tä. Kyse on täysin tiedon esitysmuodon manipuloinnista, joten sen voi toteuttaa CSS:llä. Opetellaanpas jälleen tekemään niitä formeja niin kuin ne pitäisi tehdä.
P.S. En ymmärtänyt yhtään mitään ongelmasta. Ensin Artsi kyseli sarakkeittain lajittelun perään ja Henkan vastaus demosi riveittäin lajittelua, mutta tuntui kelpaavan. Mitä tuossa jälkimmäisessä kysymyksessä (?) edes yritettiin kysyä?
No kerroppa sitten Alchemist oma ideasi, kuinka ratkaista... kun näyttää että osaat kaiken
Juurihan linkkasin demoon siitä, miten saman formin voi asetella kahdella eri tavalla. Minä en ole täällä jakaakseni ilmaista koodia kelle hyvänsä, mutta esimerkkejäni saa vapaasti soveltaa. Sanoin myös, etten edes ymmärtänyt kysymystä, joten ei ole mitään ongelmaa ratkaistavaksi.
No ehkä ei sitten olisi tarvinnut kommentoidakaan :)
Kyllähän tuosta esimerkistä on paljonkin hyötyä, kun vastapuolella on tarjota vain taulukkotaitto.
Sinulla tuntuu olevan nyt jokin muukin ongelma kuin tuo sarakkeiden rivien lajittelu riveihin nyt sarakkeisiin?
The Alchemist kirjoitti:
Kyllähän tuosta esimerkistä on paljonkin hyötyä, kun vastapuolella on tarjota vain taulukkotaitto.
Mitähän hyötyä on siitä, että taulukko pitää väkisin toteuttaa jotenkin muuten kuin taulukkona? Lomakkeen kenttien ja niiden selitteiden joukko on ihan luonnostaan ja loogisesti taulukko. Vain ötaulukkotaitonö irrationaalinen pelko saa ihmiset keksimään (tai vaatimaan muita keksimään, eihän tässä sanottu muuta kuin öCSS:lläö) kikkailuja, joilla kokonaisuus saadaan vain näyttämään taulukolta ilman että se on taulukko.
Tuossahan tuota on ylempänä loistava esimerkki siitä, mitä etua oikein tekemällä saa. Tämänkin ongelman ratkaiseminen purkalla eli taulukoilla ja PHP:llä vie tuhottomasti aikaa ja siitä on kaiken lisäksi pelkkää haittaa.
Lomakkeet eivät ole luonnostaan taulukoita, ihmiset vain ajattelevat niitä luonnostaan taulukoina. Ja kun mitään muuta toteutustapaa ei osata, niin hyvin usein niistä myös tehdään taulukoita. Ota silmä käteen ja katso vaikka Putkan omien tietojen muokkaamiseen käytettävää lomaketta. Ei siinä mitään taulukkorakennetta ole.
The Alchemist kirjoitti:
Tuossahan tuota on ylempänä loistava esimerkki siitä, mitä etua oikein tekemällä saa. Tämänkin ongelman ratkaiseminen purkalla eli taulukoilla ja PHP:llä vie tuhottomasti aikaa ja siitä on kaiken lisäksi pelkkää haittaa.
PHP:tähän tässä joka tapauksessa oli tarkoitus käyttää. Kysymys oli nyt siitä, miksi pitää dogmaattisesti kieltää taulukoiden käyttö HTML:ssä ja vaatia asettelun tekemistä hankalasti CSS:llä. Dogmaattista oli vaatimuksen tuominen esiin sen jälkeen, kun kysyjä oli erikseen pyytänyt taulukkoa, ja oli yritetty opastaa siinä.
lainaus:
Ota silmä käteen ja katso vaikka Putkan omien tietojen muokkaamiseen käytettävää lomaketta. Ei siinä mitään taulukkorakennetta ole.
Kukaan ei ole sanonut, että kaikkeen pitäisi käyttää taulukoita. Mutta hyvin monelle lomakkeelle taulukko on luonnollinen rakenne. Putkan omien tietojen muokkaamisen lomake ei kelpaa esimerkiksi hyvin tehdystä lomakkeesta. (Ei se erityisen huono ole, mutta ei esimerkillinenkään.) Syntymäajan vaatiminen muodossa VVVV-KK-PP ehkä vielä menettelee, kun käyttäjät ovat nörtähtäviä, mutta miksi sellaiselle kentälle, johon pitää kirjoittaa tasan 10 merkkiä, erikseen asetetaan leveydeksi 30 merkkiä? Ja kokonaisuus olisi siistimpi ja toimivampi taulukolla tehtynä.
Sulle on ilmeisesti semmoinen termi kuin purkkakoodi aivan tuntematon käsite? Ei ole pääasia, että asiat toimivat vaikka ne olisikin tehty tarpeettoman huonosti. Monille se tietysti kelpaa.
Mainitsemani Putkan lomake olisi siistimpi monellakin eri tavalla tehtynä, ei sillä ole mitään tekemistä sen kanssa ,käyttääkö taulukoita vai ei. Tekstikentän enimmäispituudella ei muuten ole mitään vaikutusta lomakkeen taulukkomaisuuteen. Ihmeellisesti loikitaan aiheesta toiseen.
Aihe on jo aika vanha, joten et voi enää vastata siihen.