Olen tuolta Antti Laaksosen kirjoittaman php-oppaan innoittamana viritellyt (lähinnä luvssa 6 esimerkkinä olevaa vieraskirjasivustoa hyväksi käyttäen) eräänlaista ilmoittautumissivustoa. Lomaketietojen keruu .txt-tiedostoon onnistuu mainiosti (tieto1|tieto2|tieto3|tieto4).
Tietojen lukemisessa nettisivulle olen yrittänyt sellaista, että riippuen tieto2:n arvosta (kullakin rivillä) tulostetaankin arvon sijasta tietty pieni gif kuva. Mahdollisia arvoja muuttujalle 'tieto2' on 3 (joo, ei, ehka). Tätä olen yrittänyt for-silmukan (joka siis lukee ja tulostaa tietoja) sisällä olevalla if-rakenteella, jota en kuitenkaan saa toimimaan. Olen yrittänyt jos vaikka minkälaista aaltosulkeiden sijoittelua ynnä muuta, mutta en saa tätä toimimaan. Muuten koodi tuntuu toimivan ok, mutta haluttujen kolmen eri vaihtoehdon sijaan tulostaa vain ekan ja tokan kuvan (alla olevassa koodissa arvot joo/ehka), kolmannen kohdalle jättää tyhjää (ei ole mitään väliä, missä järjestyksessä arvoja sattuu olemaan tekstitiedostossa tai missä järjestyksessä ehdot testataan, aina tulostaa vaan kaks ekaa). Osaisiko joku auttaa, missä vika???
Ja koodi on tässä:
<?php //luetaan viestit taulukkoon $viestit = file("ilmolista.txt"); //viestien määrä on suoraan taulukon rivien määrä $viestimaara = count($viestit); //jos viestimäärä on nolla, tulostetaan viesti if ($viestimaara == 0) echo "<br><font face=\"Helvetica,Arial,sans-serif\"><small>Kukaan ei ole ilmoittautunut peleihin.</small><br><br>"; //käydään jokainen viesti läpi for ($i = 0; $i < $viestimaara; $i++) { //$viestit[$i] on merkkijono, joka sisältää viestin $i tiedot //pystyviivoilla erotettuna; jaetaan viestit $tiedot-taulukkoon $tiedot = explode("|", $viestit[$i], 4); //erotellaan tiedot omiin muuttujiinsa $nimi = $tiedot[0]; $arvo = $tiedot[1]; $viesti = $tiedot[2]; $aika = $tiedot[3]; //tulostetaan viesti echo " <font face=\"Helvetica,Arial,sans-serif\" size=\"2\"> <table width=\"640\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> <tr> <td width=\"100\" height=\"20\">$nimi</td>"; /*tässä kohtaa olisi tarkoitus testata muuttujaa $arvo ja tulostaa kuva sen mukaan, mutta kun ei toimi, tai kaksi ekaa näyttää toimivan mutta kolmatta ei tulosta*/ if ($arvo == "joo") echo " <td width=\"50\"><img src=\"hymy.gif\" alt=\"Joo\"></td>"; elseif ($arvo == "ehka") echo " <td width=\"50\"><img src=\"hullu.gif\" alt=\"Ehkä\"></td>"; else echo " <td width=\"50\"><imc src=\"suru.gif\" alt=\"Ei\"></td>"; //tässä taaas tulostetaan muuttujat $viesti ja $aika ongelmitta echo " <td width=\"250\">$viesti</td> <td width=\"100\">" . date("d.m.Y H:i", $aika) . "</td> </tr> </table> </font>"; } ?>
Sen enempää jaksamatta paneutua koodiin...
Itse tykkään käyttää yhden rivin if-lauseissakin aaltosulkeita.
if ($viestimaara == 0){ echo "<br><font face=\"Helvetica,Arial,sans-serif\"><small>Kukaan ei ole ilmoittautunut peleihin.</small><br><br>"; }
...
if ($arvo == "joo"){ echo " <td width=\"50\"><img src=\"hymy.gif\" alt=\"Joo\"></td>"; } elseif ($arvo == "ehka"){ echo " <td width=\"50\"><img src=\"hullu.gif\" alt=\"Ehkä\"></td>"; } else { echo " <td width=\"50\"><imc src=\"suru.gif\" alt=\"Ei\"></td>"; }
Joo-o; olen mä totakin kokeillut (eli sijottanut aaltosulkeet yllä esitetyllä tavalla), mutta ei toimi koodi sittenkään oikein, vaan sama virhe aina vaan...
Viimeisessä kohdassa tagina on imc eikä img - olisiko vika tässä?
Samsu: kai muistit tutkia sivusi html-lähdekoodin ennen kysymyksen lähettämistä? ;)
Antti Laaksonen kirjoitti:
Viimeisessä kohdassa tagina on imc eikä img - olisiko vika tässä?
Kas perkele, tota se just on kun vääntää hommia tunteja putkeen niin tulee sokeaksi omille kirjotusvihreilleen. Eilen yöllä yritin kyllä lukea vaikka kuinka monesti tota koodia läpi.
Lebe80 kirjoitti:
kai muistit tutkia sivusi html-lähdekoodin ennen kysymyksen lähettämistä? ;)
Niin, miten sen nyt ottaa =) Muilta osin tuntu toimivan, mutta mutta...
Perkele, että nyt vähän hävettää; tolla korjauksellahan se lähti toimimaan!!! Jee, kiitos!!!
Nyt on parin tunnin virittämisen jälkeen vihdoin sivu toimintakelpoinen, mutta yks kyssäri olis vielä.
Saisko tosta jotenkin helposti, ennen kun tota ilmottautumisdataa aletaan tulostaa sivulle ulos, järjestettyä noi rivit (tai siis ulostulotulosteen) aakkosjärjestykseen???
Villi veikkaus, "sort($viestit);"
https://www.php.net/sort
Kiitokset taas; sortti toimii ja sivuston toimivuus eikun paranee.
Aihe on jo aika vanha, joten et voi enää vastata siihen.