<?php $ti1 = $_POST['ti1']; $ti2 = $_POST['ti2']; $ti3 = $_POST['ti3']; ?>
Iso kasa tällaisia muuttujia.
Saisiko tuota miten "supistettua" järkevämmäksi ja tarkistuksen, että jos muuttujan arvo on tyhjä, niin siihen lisätään tyhjä (välilyönti) merkki?
Noita muuttujia on siis määritelty tuolla tavalla 84 kpl, joihin kaikkiin pitäisi myös ko. tarkistus tehdä.
eikö kannattaisi ottaa käyttöön taulukkomuuttuja, jolloin niiden hallinta olisi helpompaa.
"Opettelen ne seuraavaks"
Aku2: todellakin, nyt vain taulukot tutuiksi, niin ei tarvitse miljoonia toistoja kirjoitella.
Tuossahan on jo käytössä taulukkomuuttuja, nimittäin $_POST
:D
Niin no taulukot on tuttuja, mutta tuossa hieman sotkee taulukkoajatteluani se, että tietoa siirretään toiselta sivulta toiselle, joten ei täsmää minun taulukko"oppimiseeni".
Eli jos joku voisi antaa tuosta esimerkin kuinka muuttaa nuo taulukkomuotoon.
Ajatus tuossa siis on se, että ekasivulla on inputteja lähemmäs sata ja jokainen inputti tulostetaan jokainen omaan soluunsa toiselle sivulle.
No mutta tuohonhan ne taulukot on juurikin suunniteltu. Tulostelet silmukassa taulukon arvot oikeisiin soluihin. reilun sadan rivin sijaan pärjännet noin 10 - 15 rivillä koodia riippuen hiukan kuinka paljon erilaisia kenttiä lomakkeella on.
Sekä tiedon käsittely että inputtien tulostus onnistuu helposti silmukoilla. Laita inputeille nimiksi tieto[1], tieto[2] jne., niin $_POST['tieto'] sisältää niiden arvot suoraan taulukkona. Voit tarkastella kyseisen muuttujan sisältöä vaikka funktiolla var_export tai var_dump.
"Laita inputeille nimiksi tieto[1], tieto[2] jne., niin $_POST['tieto']"
Tämä tieto riittäne että ymmärsin tuon kulun.
Testaan vielä ja uskon että nyt meni jakeluun :)
Kiitos.
edit:
Joo, eli noinhan se toimiikin ja loistavasti. Sai karsittua liki 80 riviä koodia :)
Joku voisi vielä oapstaa kuinka saan tarkistuksen, että jos kenttä on tyhjä, niin sille annetaan arvoksi "välilyönti".
Syy yksinkertaisesti siinä, että jos arvo on tyhjä, niin solun sisältö on myös tyhjä eikä tällöin tyylillä tehty solumääritys näy.
Eli solu ei näy. Kun arvoksi saa jotain, niin silloin solunkin saan näkyviin.
Kyllä tyhjätkin solut näkyvät, jos niitä ei ole erikseen piilotettu. Tarkista siis CSS-tyylisi ja tietenkin muusta koodista se, että varmasti tulostat tyhjänkin solun oikein.
<? if (empty($ai[1])) print' '; else print $ai[1]; ?>
Itseasiassa ei hyväksy tyhjää "välilyöntiäkään" vaan soluun piti pistää tuo " " jotta se ymmärsi sisällössä olevan jotain, jotta tyyli nappasi siihen soluun.
<td width="110" align="center" valign="middle" class="t-solu"><? if (empty($ai[1])) print' '; else print $ai[1]; ?></td>
Eli itse solun luotu nyt näin.
.t-solu { background-color: #CCC; border: 1px solid #000; font-family: Tahoma, Geneva, sans-serif; font-size: 14px; font-weight: bold; color: #000; }
Ja tyyli menee näin.
Eli käytännössä homma toimii nyt oikein.
Jatkokysymys.
olettaen että en ole tehnyt nyt jotain jo väärin...
Eli nyt pitäisi käydä kaikki ne 84 solua ylläolevan php koodin mukaisesti läpi jossa tuo tarkistus.
Miten saisin tuon tarkistuksen suoraan tehtyä jo taulukosta jolloin säästyisi taas siltä 84 lisärivin muokkaukselta?
Tyylien emptyselss ei auttanut asiaan.
Jaa, taitaa olla IE käytössä... Meinaan se ei ainakaan tietyissä tapauksissa näytä ollenkaan taulukon soluja, joissa ei ole sisältöä.
Itse olen nykyisin vaan ignoroinut sen -> tulkitsen että jos käyttää IE:tä, niin silloin haluaa nähdä puuttuvia soluja.
Mutta edelleen saat tehtyä sen tuolla aikaisemmin kirjoittamallani esimerkillä kun laitat vaan ' ' tilalle ' ', paitsi jos soluissa ajetaan teksti html-entiteeteiksi. Tietty entiteeteiksi ajaminen kannattaa tehdä tuon tyhjyystarkistuksen yhteydessä.
No niinpä IE tekeekin :)
Firefoxilla solut näkyy tyylein, mutta pystysuunnassa solu on todella kapea kun siinä ei ole sisältöä.
Tuohonkin tosin auttaa ylläkäyttämäni  .
Tai vaihtoehtoisesti tyyleissä määrittelemällä solun korkeuden.
No, tulipa tuokin samalla korjattua.
Tyylillähän voit helposti määritellä minimileveyden solulle (jos selain tukee).
Tosin tuossakin nykyisin yleensä en pakota tyhjiä soluja turhan leveiksi. Aiheuttaa vaan turhaa harmia pienellä näytöllä käyttäville eikä hyödytä mitään. Ja tuleehan siitä joka tapauksessa vähintään otsikon levyinen. Ja kolmas juttu on, että oikein fiksusti toimiva systeemi voisi jättää koko sarakkeen pois taulusta, jos se on täysin tyhjä.
Tässä tapauksessa jokaisella tyhjällä solulla on merkityksensä lopputuloksessa vaikka sisältö onkin tyhjä. Muutoin saisi kyllä jäädä tulostumatta.
Itse soluihin tulee max 6 merkkiä ja taulu on 6(vaaka)x14(pysty).
Itse taulun leveyskään ei ole kuin 700 pikseliä.
Sopii tällöin pienillekin näytöille. Ei ehkä kuitenkaan mihinkään kännyn näytölle, mutta eipä se sellaiselle ole tarkoitettukaan toimivaksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.