Ongelma on, että kun haen post-metodilla tietoa php-tiedostosta, niin en voi käyttää tietoa enää oikein. Tiedostosta tulee tekstiä, ja html koodia, esimerkiksi sieltä tulee koodinpätkä:
<input type="button" id="Tallenna" value="Tallenna">
Tämän buttonin klikkausta käsittelee seuraava jQuery pätkä:
$('#Tallenna').click(function(){ $('#Tallennettu').fadeIn("fast"); });
Kun klikkaan tuota buttonia, niin mitään ei kuitenkaan tapahdu, joten arvelin, että vika olisi tiedon muodossa, missä se tulee tuolta tiedostosta.
Tiedon haku:
Käyttäjä valitsee listasta jonkun kohdan, joka sitten lähetetään muuttujana tiedostoon. Sitten tulostetaan sen tiedoston palauttama koodi #Tiedot elementtiin, joka on tällä kertaa div-elmentti. HaeAsiakas.php tiedosto hakee tietokannasta tietoa ja tulostaa sen input-kenttiin.
$('#Asiakkaat').delegate('div.Asiakas', 'click', function() { var Sisalto = $(this).text(); $.post('HaeAsiakas.php', { Asiakas: Sisalto}, function(Data) { $('#Tiedot').html(Data); }); });
Jos yrität ajaa tuon ensimmäisen koodin jo sivun latautuessa, se ei tee mitään, koska elementtiä #Tallenna ei ole vielä olemassa. Aja koodi vasta POST-pyynnön vastauksen käsittelyn lopussa, kun olet lisännyt #Tallenna-elementin dokumenttiin, tai click-metodin sijaan käytä on-metodia, esim. $("body").on("click", "#Tallenna", ...).
Okei, täytyneepä kokeilla tuota on-metodia. Tuo ensimmäinen jQuery pätkä on tuon toisen pätkän jälkeen heti, ja kaikki jQuery koodit on ihan sivun lopussa.
Arvatenkaan jQuery-koodisi eivät ole tämmöisen ehtolauseen sisällä, "your code here" kohdan tilalla:
$(document).ready(function(){ // Your code here });
Just guessin'
Hmm... Pitäisikö? Kyllä mulla kaikki muut jQueryt toimii. Tuokin, kun siirtää tuon input:buttonin samaan tiedostoon, mihin jQuery kooditikin on includetettu.
Edit. Siinä samalla haetaan myös inpu:text kenttiä, ne kyllä toimii ihan oiken.
Edit2. Tosin toi Metabolixin koodi toimii, mutta olisi ihan kiva tietää, jotta miksi tämä ei toimi.
No enkö aika selvästi viestissäni selittänyt, miksi se ei toimi: "koska elementtiä #Tallenna ei ole vielä olemassa".
Aattelin nostaa tämän viestin, kun kysymykseni koskee edelleen tätä jQuery.post:a, en tiedä, onko väärin.
Eli, kun asiakkaan nimi on kirjoitettu ilman ääkkösiä, scripti toimii, mutta kun asiakkaan nimi sisältää ääkkösiä, niin ei toimi. Tuo scripti lähettää asiakkaan nimen palvelin päässä olevalle php scriptille, joka hakee kannasta sen asiakkaan tiedot ja tulostaa ne näytölle. Miten saisin korjattua tuon sillai, että se lähettäisi ääkkösetkin oikeassa muodossa?
$.post('getCustomer.php', {cusromer: customer}, function(Data) { $('#information').html(Data); });
Edit. Esim jos asiakkaan sukunimi on vaikka Peräaho, niin data menee php-scriptille muodossa: Peräaho
No siis toimiihan se sitten. Ainoa vaan että ajax:lla lähetetään aina utf-8 -merkistöllä, jota arvatenkaan ei sinulla ole muualla sivustolla käytössä.
Joo siis toimii, selitin vähän päin mehtiä, mutta siis tuo data pitäisi saada okeaan muotoon. Jo ei ole utf-8 käytössä, on iso-8859-1.
Voithan tietenkin palvelimella aina vaihtaa merkistöä (utf8_decode, utf8_encode), mutta helpommalla pääset kun käytät suosiolla utf-8 -merkistöä, niin ei tarvitse välittää oliko tiedot lähetetty nyt ajaxilla vaiko suoraan html-formilla.
hmm. jos käytän utf8 kaikkialla, niin eihän mulla sitten toimine ääkköset missään?
dartvaneri kirjoitti:
hmm. jos käytän utf8 kaikkialla, niin eihän mulla sitten toimine ääkköset missään?
No, jos jokapaikassa on sama merkistökoodaus käytössä, niin silloinhan ne ääkköset juuri toimiikin loistavasti.
Okei. Näkyy kysymys merkkeinä nuo ääkköset nyt.
Oli aikasemmin metalla asetettu charset, mutta ei enää ole, eikä ole headerilla, eikä htaccessillakaan. Tallensin kaikki tiedostot uudelleen Notepad++:lla, kun se oli oletuksena ANSII, muutin sen utf-8, ilmeisesti siihen BOM versioon, eikä toimi, mitä voin vielä yrittää?
dartvaneri kirjoitti:
Oli aikasemmin metalla asetettu charset, mutta ei enää ole, eikä ole headerilla, eikä htaccessillakaan.
Millä se charset on sitten nyt asetettu?
Talleta tiedostot mieluummin ilman BOM-tietoa.
ei yhtään millään.
No äly hoi. On aika turha valittaa merkistöongelmista, jos itsekin osaa kertoa, että merkistöä ei ole missään määrätty. Lisää oikea HTTP-otsikko ja meta.
Kun ei hirveesti metakaan auta, vaikka tunkisin se joka ainoaan php tiedoston, josta tekstiä haetaan, tai jossa tekstiä on. En tiedä sitten onko tossakaan määritelmät ihan täysin oiken?
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
Edit. Ilmeisesti kukaan ei oikein osaa auttaa.
Ongelma on edelleen ratkaisematta. Mitä pitäisi tehdä jotta saisin? Onko apachessa jotain asetuksia noiden suhteen?
dartvaneri kirjoitti:
Edit. Ilmeisesti kukaan ei oikein osaa auttaa.
No johan tässä on moneen kertaan sanottu mitä tehdä.
Laitat jokaiseen tiedostoon:
header('content-type: text/html; charset=utf-8');
(Tai tietenkin jos palauttaa muuta kuin text/html:ää, esim. jsonia, niin oikean vastaavan)
Sitten huolehdit että kaikki tulostuvat tekstit on UTF8:aa. Jos sinne tulee kysymysmerkkejä, niin tarkoittaa että olet tulostanut ne tekstit väärässä muodossa.
ok. No tietokannasta haku toimii normaalisti, mutta kun tallennan tietokantaan, ä:t tallentuu sinne ä:nä. Lähetän siis ensin datan jQuery.postilla php tiedostoon, joka sitten lisää sen tietokantaan. Molemmissa tiedostoissa on toi header. Miten korjata?
edit. ilmeisesti se on tuo jQuery.post, jossa merkistö ei mene utf-8:na.
Jos kaikki (tallennussivu, näyttösivu, tietokanta) on määritelty käyttämään utf8-merkistöä, niin sitten siellä on jossain kohdassa ylimääräinen utf8_encode tai esimerkiksi tietoa tietokantaan talletettaessa sanotaan että se onkin ISO-8859:ää.
Kylhän tuon pitäisi toimia jos laittaa kaikkialle ISO-8859-1 myös, ja käyttää tietokanta/apachea default asetuksilla. Eipä ole itellä tullut ainakaan ajax postin kanssa tuommosia ongelmia kun olen ISO-8859-1 käytellyt aina.
EDIT: Jaa no testasin samaa systeemiä niin sama ongelma tuli vastaan sittekkin tuolla ISO-8859-1 charsetillä. Pitääpä kattoo miten sais korjattuu. Nähtävästi sitten ei ollutkaan postilla tallentanu tietoo tietokantaa aiemmin.
Grez kirjoitti:
tietoa tietokantaan talletettaessa sanotaan että se onkin ISO-8859:ää.
Nii just, mistä tuon voi sitten muuttaa?
Kun tulostan jotain suoraan php:llä, ääkköset toimii, mutta kun haen sen jQueryllä, niin tulee ?-merkkejä.
No mistäs mä voin tietää mitä sun koodissasi lukee? Vaikea sanoa mitä pitäisi korjata jos ei tiedä mikä on vialla.
Katso selaimen kehittäjätyökaluilla että mitä se serveri missäkin tilanteessa väittää tulevan ja mitä sieltä oikeasti tulee.
Tai laita ne lähdekoodi (php-koodi ja tietokannan luontiskripti), jolla ongelma esiintyy ladattavaksi, niin voin kertoa missä mättää. Tuollaisen ongelman debuggaamiseen menee alle 10 minuuttia, niin turhauttavaa vatvoa asiaa sen pidempään.
Näyttäis olevan ainakin tietokannan taulu luotu latin1_swedish_ci pohjalle.. Täytynee katsoa jos sitä saisi muutettua jostain.
Mitenkä muuten, jos mää luen teksti tiedostosta php tietoa, ja sitten kutsun tuota php scriptiä jQueryllä, niin tulee ?-merkkejä, pitääkö teksti tiedostoon jostain erikseen määrätä, mitä koodausta se käyttää? Mää kuitenkin oon sen koodannut utf-8 muotoon, kun tallensin sen notepad++:lla.
php scripti, jolla luen tiedostoa:
<?php header('content-type: text/html; charset: utf-8'); $title = $_POST['title']; $rows = file("linkInformation.txt"); for($i = 0; $i < count($rows); $i++){ $titles = explode("|", $rows[$i]); if($titles[0] == $title){ $text = $titles[1]; } } echo $text == "" ? "Object not found" : $text; ?>
jQuery koodi, jolla kutsun tuota php scriptiä:
$.post('getLinkInformation.php', {title: title}, function(information) { $("#infoText").html(information); });
Ei tarvitse määritellä erikseen. Tai siis, PHP ei tiedä onko sillä merkkijonossa millä koodauksella olevaa tekstiä, mutta jos tiedostossa on UTF8 ja se antaa ulos UTF8:aa, eikä tee mitään muutoksia, niin silloinhan kaikki menee kivasti.
No sillä sai ainakin tuon toimimaan että postauksessa php puolella muuttaa tiedot utf-8:sta iso-8859-1 muotoon, headerilla tuossa sivulla ei ole väliä, toimi jos oli utf-8 ja toimi myös jos oli iso-8859-1. Eli seuraavasti:
Ajax posti:
$(document).ready() { $.ajax({ data: {txtdata: "ääDatwaööääpååääåäåä123123123"}, url: "postdata.php", type: "POST" }); };
Sivu jolle postaus tapahtuu:
$yhteys = DB::Open(); $kysely = $yhteys->prepare("insert into postdata(text) values(?)"); $tulos = $kysely->execute(array(mb_convert_encoding($_POST['txtdata'], "ISO-8859-1","UTF-8")));
Tietokantaan jne ei tarttenu tehdä muutoksia ja kaikki encoudaukset asetettu iso-8859-1.
Edit:
Niin onhan tuolla ko PDOlla avataan tietokanta yhteys, niin kans tuo merkistö:
// merkistö: käytetään latin1-merkistöä; toinen yleinen vaihtoehto on utf8. $yhteys->exec("SET NAMES latin1");
dartvaneri kirjoitti:
Näyttäis olevan ainakin tietokannan taulu luotu latin1_swedish_ci pohjalle.. Täytynee katsoa jos sitä saisi muutettua jostain.
Mitenkä muuten, jos mää luen teksti tiedostosta php tietoa, ja sitten kutsun tuota php scriptiä jQueryllä, niin tulee ?-merkkejä, pitääkö teksti tiedostoon jostain erikseen määrätä, mitä koodausta se käyttää? Mää kuitenkin oon sen koodannut utf-8 muotoon, kun tallensin sen notepad++:lla.
No et varmasti ole tallentanut UTF-8:na. Ääkkösten tilalle tulee kysymysmerkkejä juuri silloin, kun lähetät selaimelle ISO-8859-1-sisältöä muttat väität sen olevan UTF-8:a.
Suosittelen siirtymistä/pysymistä UTF-8:n puolella ihan jo siitäkin syystä, että nykyään kaikki uudet (isommat) softat käyttävät sitä. Muutenkin edut on selkeät kun kaikki Unicoden tukemat merkit kelpaa, ei tarvitse kärsiä sillisalaattiongelmista jos tarvitsee jotakin eksoottisempaa merkkiä syystä tai toisesta.
Tietokannan yhteys pitää vaihtaa UTF-8:ksi heti yhteyden alussa, tai magiat ei toimi. Tietokannan tauluissa oleva merkistöasetus taas vaikuttaa merkittävimmin lähinnä aakkosjärjestykseen, jonka mukaan rivit lajitellaan. Se on toki erittäin hyvä vaihtaa utf8_swedish_ci:ksi kaikkialla, jotta ääkköset sun muut menevät suomalaisruotsalaisen aakkosjärjestyksen mukaisesti. Nykyään MySQL:ssä on myös utf8mb4, joka tarkoittaa täyttä UTF-8:n ja Unicoden tukea tietokannan puolella, muistaakseni aiemmin tuki rajoittui 10000 ensimmäiseen merkkiin.
Yhteyden muuttaminen UTF-8:ksi tapahtuu MySQLi:tä käyttäessä komennolla set_charset. Ennen tähän käytettiin erillistä kutsua SET NAMES UTF8
, mutta erillinen funktio on nykyään suositeltu tapa: https://www.php.net/manual/en/mysqli.set-charset.php (kutsuu heti kun yhteys on muodostettu niin se on sillä selvä).
Lisäksi jos UTF-8 -merkkijonojen pituuksia tarvitsee PHP:ssa käsitellä merkkitarkkuudella (esim. mb_strlen palauttaa pituuden merkeissä, strlen taas tavuissa!), niin mb_internal_encoding('UTF-8');
hoitaa sen puolen kuntoon. Tämä tietysti kannattaa kutsua mahdollisimman varhaisessa vaiheessa ohjelman suoritusta.
Muoks!
Laitetaan nyt vielä selkeä listaus kaikesta, jolla saa UTF-8:n toimimaan mahdollisimman kivutta:
1) Sivun merkistö pitää olla UTF-8 (esim. meta-tagi).
2) Kaikki teksti- ja kooditiedostot tallennettu UTF-8:na ilman BOMia (byte-order mark).
3) mb_internal_encoding('UTF-8');
ohjelman alussa.
4) mysqli_set_charset($db, 'UTF8');
kun yhteys tietokantaan muodostettu.
5) Tietokannan tauluissa utf8_swedish_ci tai utf8m4_swedish_ci (suomalaiset ohjelmat).
Tämä ei varmaan ole ongelma, mutta kannattaa muistaa, että jos muutat Notepad++:lla merkistökoodauksen ISO:sta UTF-8:iin, niin kaikki ä:t ja ö:t, jotka on tiedostoissa itsessään kirjoitettuna, muuttuu vääriksi, eli parasta tapa tehdä muutos UTF-8:siin, on painaa CTRL + a ja CTRL + c, sen jälkeen tehdä merkistömuutos ja sen jälkeen painaa CTRL + v. Eli aika monesti et voi suoraan tuosta noin muuttaa sitä merkistökoodausta, koska tiedosto hajoo jos siinä on ääkkösiä.
EDIT:
Ja jos et millään meinaa saada niitä tiedostoja samaan muotoon, voit aina encodata base64:llä ja decodata sitten seuraavassa paikassa. Tietty merkistökoodaukset pitää olla kunnossa.
Siellä Notepad++:ssa on kyllä ihan vaihtoehdot:
1) "Muunna koodaukseen UTF8", jolloin se muuttaa auki olevan tiedoston ja siinä jossain muussa koodauksessa olevat ä:t ja ö:t UTF8:ksi.
2) "Koodaus: UTF8", jolloin se toimii kuten Paulus edellä selitti.
Eli ei tarvitse kikkailla leikepöydän kanssa kun vaan valitsee tuon vaihtoehdon 1.
Tuosta base64 -vinkistä en osaa sanoa missä yhteydessä sitä oli tarkoitus hyödyntää. Tarvettahan on nykyisin lähinnä sähköpostissa.
Tuolla "Muunna koodaukseen UTF8" sain tekstitiedoston näkyyn oikein, mutta kaikki muu meni muotoon ä, kokeilin myö UTF8 ei bom koodaustakin, ei toiminut. Tiedostossa on edelleen:
header('content-type: text/html; charset: utf-8');
En enää ymmärrä.
Typotit headerin, joten selaimesi luultavasti fallbackaa ISO-8859-1:een.
header('Content-Type: text/html; charset=UTF-8')
No niinpäs näyttää.
Edit. Nyt ne toiminee aika pitkälti. Tosin ääkköset tallentuu kantaan väärin, mutta taas haettaessa ne muuttuu normaaleiksi.
Ongelmia jälleen postin kanssa. Eli en voi ymmärtää, miksi seuraava post koodin pätkä ei toimi. Olen sitä pari tuntia yrittänyt pohtia ja pähkäillä, mutta mitään vikaa en ole löytänyt, enkä ole saanut toimimaan, alkaa pikku hiljaa tympäsemään, kun kolme riviä koodia ja kaks tuntia.
Eli siis lähetän kyselyn getFile.php tiedostoon, jossa sitten tulostetaan tietoa, jonka pitäisi tulostua #document diviin. Kehittäjä konsolista katoin, jotta se käy kyllä tuossa postin kohdalla, mutta koskaan se ei mene tuolle toiselle riville. Kokeilin myös alertilla, että mihin asti se menee, ennen postia se tulosti vielä oikein, kun tulostin file muuttujan arvon, mutta postin sisällä se ei tulostanut edes alert("testi"):llä mitään.
En voi ymmärtää mikä tässä menee pieleen. Tiedosto nimen olen tarkistanut ehkä noin viisi kertaa, samoin muuttujat(ei niitäkään montaa ole). Olen myös yrittänyt katsoa muista posteista, mitä olen käyttänyt eroavaisuuksia, mutta mitään merkittävää en ole löytänyt.
Nyt apu olisi kyllä tarpeen.
Post koodi:
$.post('getDocument.php', {file: file}, function(Data) { $("#document").html(Data); });
jQuery koodit kaikkineen:
$('.file').click(function() { var file = $(this).attr('title'); $.post('getDocument.php', {file: file}, function(Data) { $("#document").html(Data); }); });
getDocument.php testauksen aikana:
<?php echo $_POST['file']; ?>
Ja muodon vuoksi vielä vähän htmlää:
<a href="" title="file1.txt" class="file">file1</a><br> <a href="" title="file2.txt" class="file">file2</a><br> <div id="document"></div>
Onko ihan mahdottoman vaikeaa tehdä, kuten on monta kertaa eri yhteyksissä ehdotettu, eli hankkia kehittäjäkonsoli (Operan tai Chromiumin oma tai Firefoxiin Firebug) ja lukea sieltä Script- ja Net-välilehdiltä, mitä oikeasti tapahtuu?
dartvaneri kirjoitti:
Kehittäjä konsolista katoin, jotta se käy kyllä tuossa postin kohdalla, mutta koskaan se ei mene tuolle toiselle riville.
Onkohan niin mahdottoman vaikeaa lukea koko viesti ennen kuin postaa?
Luin viestisi vielä suurennuslasilla. Ehkä yhdys sana virhe filtteri ohitti kehittäjä konsoli maininnan, kun et kertonut yhtään niistä asioista, joita sillä pitäisi tutkia. Kai nyt ilman konsoliakin pitäisi ymmärtää, että se "käy kyllä tuossa postin kohdalla". Katso konsolista, lähteekö POST-pyyntö, mihin se lähtee, mitä pyynnössä lukee, tuleeko siihen vastaus ja mitä vastauksessa lukee. Katso myös, ilmoittaako konsoli jostain virheestä.
Huomasin nyt sellaisen aika triviaalin virheen, että viestissäsi puhut getFile.php:stä mutta koodissa on getDocument.php. Jos virhe on todella tämä, kannattaa oikeasti lukea tarkemmin sitä kehittäjäkonsolia.
Sori kirjoitusvirheet. Ei lähde minkäänlaista post-pyyntö ainakaan network osion mukaan.
Ei johdu, tullut vain pieni ajatuskatkos, sillä nuo file ja document liittyy aika paljon tässä tapauksessa yhteen.
Edit. Ja siellä network osiossa ei tule kuin tuo jquery.js ja documents.php tiedostot. documents.php tiedosto sisältää edellä mainitut koodin pätkät, pois luettuna php pätkä.
Ok. Onko mahdollista saada linkkiä sivustolle?
Se ei tällähetkellä ole minkään osoitteen takana, mutta voin nopeasti heittää sen johonkin, ja laitan sitten linkin tänne.
Unohtui mainita, että myös palvelimen lokitiedostoa kannattaa lukea. Sieltä näkisit nykyisen vian: POST-pyyntö lähtee ihan oikein, mutta koska et missään vaiheessa estä linkin normaalia toimintoa, sivu latautuu myös uudestaan, joten tulos ei ehdi näkyä. Eli olisikin tällä kertaa pitänyt ajatella tarkemmin sitä viimeistä HTML-koodilistausta, jonka ylle kirjoitit, että on vain "muodon vuoksi". :)
Ratkaisu: linkkeihin href="#" tai JS:ään näin:
$(...).click(function(event) { // ... event.preventDefault(); });
Itse laittaisin oikeastaan tuon tiedostonimen href-attribuuttiin, niin tulisi näennäisesti eri osoitteet eri linkeille.
Metabolix kirjoitti:
sivu latautuu myös uudestaan, joten tulos ei ehdi näkyä. Eli olisikin tällä kertaa pitänyt ajatella tarkemmin sitä viimeistä HTML-koodilistausta, jonka ylle kirjoitit, että on vain "muodon vuoksi". :)
Näemmä näin pääsi käymään. :)
Nyt toimii, kiitos! Pari tuntia aikaa yhden merkin takia, mutta tässä sitä oppii. :)
Minä en ymmärrä, miksei suoraan href-attribuuttiin voi määritellä toimivaa linkkiä niin kuin oikeasti pitäisi tehdä. Tai että miksi title-attribuutissa on näennäisen turhaa roskaa, joka ei kerro linkistä (jota ei ole) yhtään mitään.
Linkkiä klikatessa vain noudat href-attribuutin osoittamasta urlista sisällön ja näytät sen haluamallasi tavalla kuten nytkin.
Mm.. en vain ole aikasemmin hoksannut. Täytynee tehdä sillai.
edit.
Korjaus edelliseen:
Tai olenhan toki yrittänyt, onnistumatta, ja näin ollen huomattuani tuon title jutun toimivaksi käyttänyt sitä.
Tämä näyttäis toimivan odotetulla tavalla.
$('.file').click(function(event) { event.preventDefault(); var file = $(this).attr('href'); });
edit3. Muutin muuten tuossa getDocument.php tiedostossa kovakoodatut polut pois ja tilalle laitoin 6 riviä koodia, jotka hajauttavat postin lähettämän polun(linkin sisältö), kahteen muuttujaan, esim documents.php?file=document/file1.txt, niin path = document/file1.txt ja fileName = file1.
edit2.
Heitin tuohon document diviin tälläisen koodin:
<?php $file = $_GET['file']; $rows = file($file); for ($i = 0; $i < count($rows);$i++){ echo $rows[$i]; } ?>
ja linkit on nykyyän muotoa:
<a href='documents.php?file=documents/file1' class='file'>file1</a>
Näinollen toimii ilman javascript tukeakin. En tiedä toteutuksesta, miten järkevää se on, mutta toimii ainakin.
Linkki on järkevä mutta PHP-toteutus ei.
Muista aina tarkistaa, että tiedostonimi on kunnollinen. Tuolla nimenomaisella koodilla kuka tahansa voi lukea mitä tahansa tiedostoja palvelimeltasi. Esimerkiksi tietokantasi tunnus ja salasana löytyvät hetkessä, ja index.php:ssä sisällytät tiedoston nimeltä yhteys.php, jota ei ole. Kannattaa muuten laittaa palvelimelta kehitysvaiheessa kaikki varoitukset ja huomautukset käyttöön.
Tiedoston voi lukea ja tulostaa funktiolla readfile. Jos tiedoston ei ole tarkoitus sisältää HTML-koodia, käytä tulostusvaiheessa htmlspecialchars-funktiota; silloin tiedosto kannattaa lukea funktiolla file_get_contents. Silmukan käyttö pelkkään tiedoston tulostamiseen on purkkaratkaisu, joka kertoo jo paljon tekijästään.
Joo huomasin tuon itsekkin, ja korjattu on, tuo on vaan alku systeemiä, sillä tuohon on tulossa/melkein valmis, sellanen haku systeemi, että kun kirjoitat haku kentään sanan, se hakee kaikki sanan ilmentymät tekstistä.
Tiedän, että selaimessa on oma sellainen, kätevämpi, mutta harjoitus projekti vain.
Edit. Eikös myös tuossa jquery koodissa ole myös aukko? Ja täytynee myös päivittää se tuohonkin koodiin, joka on kaikkien nähtävissä, siis korjaus.
Edit eikö tämä ole ihan riittävä, tosin työläs ylläpitää:
Aihe on jo aika vanha, joten et voi enää vastata siihen.