Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Checkbox

Sivun loppuun

artz86 [22.06.2011 15:15:26]

#

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...

Teuro [22.06.2011 15:19:18]

#

Muista eskapettaa lainaismerkit.

<?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']";
  }
?>

-tossu- [22.06.2011 15:26:45]

#

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.

The Alchemist [22.06.2011 16:38:26]

#

Jospa opetellaan samalla tekemään oikeaoppisia formeja HTML:llä. Ja on se avutonta meininkiä, jossei parse erroria osaa itse korjata.

<?php
$i = 0;
while (...) {
  extract($lajirivi);
  printf(
    '
    <input id="group-%d" type=checkbox id="%s" name="group[]"/>
    <label for="group-%d">%s %s %s</label>
    ', $i, $lajiid, $i, $sarja, $laji, $lajiryhma
  );
}?>

qeijo [22.06.2011 18:16:31]

#

The Alchemist kirjoitti:

Jospa opetellaan samalla tekemään oikeaoppisia formeja HTML:llä.

Hifistelyä..

artz86 [22.06.2011 21:25:09]

#

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.... ??

Hennkka [23.06.2011 08:40:39]

#

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.

artz86 [23.06.2011 15:44:02]

#

Joo voisiko joku antaa hiukan alkuun apua, kun ei nyt oikein aukene koodi? :)

Kokeilin tehdä if-lauseilla, mutta tuloksena vain pelkkä checkbox ei muuta

Hennkka [23.06.2011 16:22:10]

#

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!

artz86 [23.06.2011 20:41:52]

#

Joo kiitoksia hyvin toimii... mitenkäs nyt tuon saisi niin muutettua, että tekisi sarakkeittain tuon lajittelun nyt rivettäin :D

Hennkka [24.06.2011 09:05:26]

#

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.

The Alchemist [24.06.2011 18:30:02]

#

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ä.

Demo

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ä?

artz86 [24.06.2011 19:43:35]

#

No kerroppa sitten Alchemist oma ideasi, kuinka ratkaista... kun näyttää että osaat kaiken

The Alchemist [24.06.2011 19:44:40]

#

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.

artz86 [24.06.2011 19:47:55]

#

No ehkä ei sitten olisi tarvinnut kommentoidakaan :)

The Alchemist [24.06.2011 19:50:09]

#

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?

Yucca [24.06.2011 20:48:17]

#

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.

The Alchemist [24.06.2011 22:17:10]

#

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.

Yucca [25.06.2011 10:20:46]

#

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ä.

The Alchemist [25.06.2011 12:10:30]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta