Heippa! Taas pitää kysästä yksi kysymys.
Kuten jotkut varmaan tietävätkin (Ovat huomanneet), niin teen vieraskirjaa. Nyt pitäisi tehdä vielä vastaus systeemi. Tämän hetkinen systeemi on tyhmä, koska se luo jokaiselle vastaukselle oman tiedoston.
Tämän hetkiset koodit näyttävät tältä:
EDIT: Poistin koodit 25.4. ettei kukaan käytä niitä :)
Eli, tämä siis toimii muuten, mutta huono puoli on, että se luo jokaiselle vastaukselle oman tiedoston.
Viestit.txt näyttää seuraavalta:
lähettäjä|aika|viesti|id lähettäjä|aika|viesti|id lähettäjä|aika|viesti|id jne...
Voisiko tehdä tämän vastaus systeemin samalla tavalla (tuon vastaukset.txt), että yhdellä rivillä olisi aina vastaus?
vastaus 1 vastaus 2
Ensiksi ájattelin, että koodi poimisi jokaisen viestin id:n (jos id vaikka 6) ja poimisi rivin 6 ja tulostaisi viestin loppuun. Kuitenkin tulin ajatelleeksi, että se ei ehkä ole paras vaihtoehto.
Niimpä kysyn, miten tämä kannattaisi tehdä?
Onko mahdollisuutta MySQLiin?
Sillä asia hoituisi helpommin kuin tiedostoilla, koska voi käyttää vastaamiseen helpommin id:tä.
Esimerkiksi: lähettäjä|aika|viesti|id|vastaus
Kyselyllä: INSERT INTO table(vastaus) VALUES ('Seuraavasta asiattomasta bannia!') WHERE id = '69'
Eikös se oiski tolleen yksinkertasempaa? Eikä mysqli oo omalle servulle kovin vaikeeta asentaa.
Mutta jos tähän sun tiedostojuttuun palataan, niin tee:
<?php $msg = explode("|", $viestit); $msg[4] = $vastaus; ?>
En tiiä toimiiko tolleen, mut viisaammat korjaa. :)
Jos ja kun mysqliä alkaa käyttämään, niin kannattaa alusta asti opetella suunnittelemaan tietokanta rakenne kunnolla. Eli tuossa ankzillan esimerkki taulurakenteessa voi tulla toistoa ja mm. vastaus kohtaan tyhjiä kenttiä aina kun kyseessä on ensimmäinen viesti. Eli jotain tyyliin näin:
kayttajat
---------------
kayttaja_id
nimi
viestit
---------------
viesti_id
viesti
aika
kayttaja_id (viittaa kayttajat taulun kayttaja_id:seen)
vastaukset
---------------
vastaus_id
vastaus
aika
kayttaja_id (viittaa kayttajat taulun kayttaja_id:seen)
viesti_id (viittaa viestit taulun viesti_id:seen)
Varmaankin ihan harjotusmielessä tehtävästä vieraskirjasta kyse, jossa flatfilujen käyttö on perusteltua. Ja jos käyttövolyymit eivät ole massiivisia niin tuskin se ihan heti käsiinkään hajoaa, ns. — näitähän näkee tehtävän esim. ilmaishosteille, joilla ei ole tietokantatukea.
Asiaan: Teoreettisella tasolla vähintäänkin mielenkiintoinen kysymys. Heti alkuun suosittelisin yleisessä tapauksessa käyttämään tiedostojen lukemiseen ja kirjoittamiseen uudempia funktioita file_get_contents
ja file_put_contents
. Mutta tiedostokoiden kasvaessa edellä mainitut funktiot voivat ruveta hidastelemaan, ja tällöin suositellaan palattavaksi fopen
+fgets/fwrite
-komboihin. Ja tähän väliin T.M. tulee kertomaan, että flock
on hänen mielestään särki :).
Array_reverseä
nopeampi tapa on käydä viestit läpi käänteisessä järjestyksessä. Viestimäärän kasvaessa joutunet kuitenkin vaihtamaan file
-funktion tilalle edellä mainitun tiedostonlukuun käytettävän funktioyhdistelmän fopen
+fgets
+fclose
, joten halunnet kirjoittaa uudet viestit tiedoston alkuun jo tallennusvaiheessa. Mitä vastauksiin tulee, veikkaisin, että yhden tiedoston malli käy nopeammin ongelmalliseksi monen tiedoston malliin verrattuna: ison tiedoston lukeminen vie aikaa ja tuhlaa resursseja, kun halutaan käydä vain tietyn viestin vastaukset. Pienet tiedostot taasen syövät turhaan levytilaa, kun tiedostojärjestelmä varaa minimissään esim. vaikkapa sen 4 kB tiedostoa kohti. Jotkin tiedostojärjestelmät voivat myös oikutella suurien tiedostomäärien kanssa. Suosittelisinkin kokeilemaan kompromissia: jokaiselle viestille oma vastaustiedosto mallia vastaukset_$id.txt.
Summa summarum: Jos tiedostoilla haluaa ottaa huomioon suuret viesti- ja käyttövolyymit, niin tietokanta alkaakin vaikuttamaan siltä yksinkertaisemmalta ratkaisulta.
Alkuperäisen koodin luo.php sisältää ajatuserheen: haet $vastaus_kasittele
-muuttujan sisällön kahteen kertaan eri lähteistä. Niin ja header
-funktiolle tulisi antaa speksin mukaan absoluuttinen URL (ei sillä, että yksikään valtavirran selain tästä välittäisi :p), tässä esim:
<?php header("http://{$_SERVER['SERVER_NAME']}/?sivu=turinapalsta"); ?>
Kiitos jo vastauksista, vaikkei ihan sitä ole tullut vastaan mitä hain.
TeNDoLLA ja ankzilla: Ei satu olemaan omalla serverillä MySQL:ää, kun ei satu menemään asennus läpi.
tsuriga: Kiitos huomautuksista. Noista uusista funktioista en ole kuullutkaan, koska olen lukenut aikas vanhoja oppaita. Nämä eivät varmaan paljoa vaikuta, koska en usko että moni kirjoittaa. Tällä hetkellä vain perheellä on pääsy sinne.
Ensiksi ájattelin, että koodi poimisi jokaisen viestin id:n (jos id vaikka 6) ja poimisi rivin 6 ja tulostaisi viestin loppuun. Kuitenkin tulin ajatelleeksi, että se ei ehkä ole paras vaihtoehto.
Tässä kun mainitsin, että tuo ei ehkä ole paras vaihtoehto, niin tulin toisiin aatoksiin, että voisihan se harjoitus projektina toimia.
Mutta, jos joku voisi kertoa, miten voin tiedostosta, mikä näyttää tältä:
tekstiä rivi1 tekstiä rivi2 jne...
Poimia koodilla vaikka rivin numero 2 ja tulostaa sen.
Siitä saisin väännettyä tuon systeemin mitä käyttäisin.
Yksi mahdollisuus on myös käyttää MySQL:n sijaan tiedostopohjaista sqlite-tietokantaa, jos PHP:ssäsi on sille tuki.
Pakko vielä päästä pätemään, vaikka en mistään mitään tiedäkkään:
<?php $nick = htmlspecialchars($_POST['nick']); $msg = htmlspecialchars($_POST['viesti']); $filu = "viestit.txt"; $viestit = file_get_contents($filu); $viesti = explode("<br />", $viestit); if($nick && $msg) { unlink($filu); $open = fopen($filu, "w"); fwrite($open, $msg."<br />\n".$viestit); fclose($open); } $list = 0; while($list < 30) { echo $viesti[$list]; ++$list; } if($_SERVER['REMOTE_ADDR'] == "IB-OZOITEH") { echo '<form action="" method="post"> Viestin id, jonka haluat poistaa: <input type="text" name="id" size="5" /> <input type="submit" name="submit" value="Poista" /> </form>'; $id = $_POST['id']; if($id) { $poisto = explode("<br />", $viestit); $poisto = str_replace($poisto[$id], "", $poisto); unlink($filu); $open = fopen($filu, "w"); // HUOM, SEURAAVASTA KOHDASTA EN OLE VARMA!! fwrite($poisto, $open); fclose($open); }} ?> <form action="" method="post"> Nick:<br /> <input type="text" name="nick" size="20" /><br /> Viesti:<br /> <textarea cols="50" rows="5" name="viesti"></textarea><br /> <input type="submit" name="submit" value="Lähetä" /> </form>
Nyt tuli parempi olo :)
Eipä toimi.
Mutta, siis miten pystyn echottamaan tiedostosta tietyn rivin? :)
Rocceri kirjoitti:
Eipä toimi.
Mutta, siis miten pystyn echottamaan tiedostosta tietyn rivin? :)
$rivi = 4; $viestit = file_get_contents("viestit.txt") $explode = explode("\n", $viestit); echo $explode[$rivi];
Huom: Ensimmäisen rivin numero on 0
Edit: Aika jännää pitkästä aikaa päästä pätemään vaikka koodit ei toimikkaa :D
ankzilla kirjoitti:
Edit: Aika jännää pitkästä aikaa päästä pätemään vaikka koodit ei toimikkaa :D
Juuri niin. Tuo äskeinen explode juttukin heittää 500 erroria
Tämä ainakin toimii:
edit: kyllä se toimii tuo ankzillankin antama ihan hyvin.
edit2: En ole tarkemmin kyllä perehtynyt noiden eri file -funkkareiden nopeuksiin, mutta php.netistä kopioitua, jonka mukaan ainakaan mitään isoja eroja ei olisi noiden nopeuksissa:
lainaus:
I tested fgets(), file_get_contents(), and file() on PHP 4.3.2 and PHP 5 and timed each to be under a second with over 200,000 lines. I do not know if he was testing extremely long lines or what, but I could not duplicate the difference that he mentioned.
Kiitos TeNDoLLA! Tästä saan tehtyä sen vastaus systeemini.
Rocceri, olen pahoillani, mutta epähuomiossa jätin file_get_contentsin perästä ;n pois. ^^ Mut hyvä et toi tendollan toimi.
Ohho :D En huomannutkaan tollasta pikku virhettä ollenkaan.
EDIT: Muuten on hyvä, mutta tämä ei tottele käskyäni:
echo $lines[$id];
Mistäköhän kiikastaa? Jos laittaa numeron $id:n tilalle, niin toimii, mutta tuo ei toimi. :o
Rocceri kirjoitti:
Ohho :D En huomannutkaan tollasta pikku virhettä ollenkaan.
EDIT: Muuten on hyvä, mutta tämä ei tottele käskyäni:
echo $lines[$id];Mistäköhän kiikastaa? Jos laittaa numeron $id:n tilalle, niin toimii, mutta tuo ei toimi. :o
Ookko varmasti määritelly sen id:n?
Kyllä on määritelty!
Voiko se johtua jostain, kuten että se kuuluisi olla lainaus merkeissä tai jotain?
En nyt keksi mitään järkevää syytä, mutta kokeile seuraavia:
1. settype($id, "integer");
2. Kokeile <pre>#<?php echo $id>#</pre>
niin näet, mitä muuttuja todella sisältää. Jos näkemäsi teksti on esim. # 4 #
niin vika on siinä. Jos se on se, mikä pitäisi olla, eli #4#
niin...en tiedä.
(edit: tsekkasin php.netistä ja siellä joku oli käskenyt tehdä ykköskohdan mukaan)
Kiitos Juhko, tuo settype juttu toimii mahtavasti :)
Hyvä että täällä on asiansa osaavia auttajia. Mitenköhän pärjäisin jollei tätä Ohjelmointiputkaa olisi? :D
Rocceri kirjoitti:
Kiitos Juhko, tuo settype juttu toimii mahtavasti :)
Hyvä että täällä on asiansa osaavia auttajia. Mitenköhän pärjäisin jollei tätä Ohjelmointiputkaa olisi? :D
Opettelisit varmaan ite sit lukemaan netistä ohjeita?
Marbo kirjoitti:
Rocceri kirjoitti:
Kiitos Juhko, tuo settype juttu toimii mahtavasti :)
Hyvä että täällä on asiansa osaavia auttajia. Mitenköhän pärjäisin jollei tätä Ohjelmointiputkaa olisi? :DOpettelisit varmaan ite sit lukemaan netistä ohjeita?
Hehe ;D Kyllähän mä niitäkin luen, mutta niissä on paljon turhaa joukossa.
Rocceri kirjoitti:
Marbo kirjoitti:
Rocceri kirjoitti:
Kiitos Juhko, tuo settype juttu toimii mahtavasti :)
Hyvä että täällä on asiansa osaavia auttajia. Mitenköhän pärjäisin jollei tätä Ohjelmointiputkaa olisi? :DOpettelisit varmaan ite sit lukemaan netistä ohjeita?
Hehe ;D Kyllähän mä niitäkin luen, mutta niissä on paljon turhaa joukossa.
Sillähän ei ole mitään merkitystä.
Tähän vieraskirjaan liittyen yksi juttu vielä:
Koodissa kiellän html merkinnät, mutta kuitenkin tarvitsen niitä erikoisefekteissä:
EDIT: Poistin koodit 25.4. jottei kukaan käytä omiin tarkoituksiin
Tässä ainoana ongelmana jää se, että htmlspecialchars kieltää myös " merkit.
Tuolla aikaisemmassa aiheessani Str_replace ja <br> tagi oli vastaava ongelma, mutta tuo ei näyttänyt vaikuttavan tähän vieraskirjaan.
Koitin htmlspecialchars korvauksen jälkeen laittaa str_replacella " merkit uudelleen " merkeiksi. (Joskus toiminut, mutta tässä tapauksessa ei)
Ehdottaisin kyllä tekemään bbtagien korvauksen säännöllisillä lausekkeilla.
Joskus käytin jossain bbcodea ja tein sen tällä tavalla.
<?php function BBCODE($content){ $content = nl2br($content); //rivinvaihdot korvataan <br>:llä $match = array( '#\[b\](.*?)\[\/b\]#se', '#\[i\](.*?)\[\/i\]#se', '#\[u\](.*?)\[\/u\]#se', ); //bbtagit $replace = array( "'<b>\\1</b>'", "'<i>\\1</i>'", "'<u>\\1</u>'", ); //muunnetaan html:ksi return preg_replace($match, $replace, $content); } ?>
Mitä eroa käytännössä on preg- ja str replaceilla?
str_replace
on tavallinen korvaus. preg_replace
on semmoinen jännä juttu.
Mutta, jos asiassa pysyttäisiin, niin miten voin sallia " merkit ja kieltää HTML:n?
PHP:n dokumentaation mukaan näin:
$viesti = htmlspecialchars($viesti, ENT_NOQUOTES);
Mahtavaa, kiitos!
Hitto en itekkää tienny tota :D
Tähän vielä pitää lisätä, kun en samasta aiheesta halua uutta aihetta aloittaa.
Niin, kun minullahan on tuossa nuo bbcodet, niin jos kirjoittaa viestiin
ja linkki teksti eikä laita päätöstagia , niin se laittaa viestin jälkeenkin olevista asioista linkkejä.
Eli, miten voin kieltää bbcode tagit joissa ei ole päätöstageja?
Jos kirjoittaisi Moi eikä laita päätöstagia, niin tämä tulostuisi normaalina tekstinä?
-Rocceri
Noilla mainituilla säännöllisillä lausekkeilla ja preg_replace-funktiolla.
Hmm.. Niinhän sen voi niillä tehdä, mutta ongelmana on se, etten tiedä miten näitä pitäisi käyttää tähän tarkoitukseen.
Ylempänä on jo niistä esimerkkikin. Lisäksi voisit vähitellen harkita sitä itsenäistä opettelua, nimittäin käytössäsi on jopa Ohjelmointiputkan mainio opas aiheesta.
Metabolix kirjoitti:
Ylempänä on jo niistä esimerkkikin. Lisäksi voisit vähitellen harkita sitä itsenäistä opettelua, nimittäin käytössäsi on jopa Ohjelmointiputkan mainio opas aiheesta.
Ai, tuo Smuulin versio? Ei se sen paremmin toiminut.
Miten oikein yritit käyttää sitä, jos se ei kerran toiminut? Tai siis miten väärin?
Metabolix kirjoitti:
Miten oikein yritit käyttää sitä, jos se ei kerran toiminut? Tai siis miten väärin?
Tiedän, että tei väärin: Copy pastetin sen omaan koodiini, koska en ole opetellut käyttämään arrayta. :P
Jos tuon saa toimimaan, niin voisitko ystävällisesti kertoa miten? Oppisin samalla vähäsen lisää.
Rocceri kirjoitti:
Tiedän, että tei väärin: Copy pastetin sen omaan koodiini, koska en ole opetellut käyttämään arrayta. :P
Kuten varmaan huomaat, Smuliiin esimerkissä ei edes muuteta linkkejä, joten copy-pastella se ei tule toimimaan. Olisit siis joutunut soveltamaan oppimaasi.
Rocceri kirjoitti:
Jos tuon saa toimimaan, niin voisitko ystävällisesti kertoa miten? Oppisin samalla vähäsen lisää.
Tässä nyt kuitenkin Smuliiin esimerkistä muokattuna:
<?php function BBCODE($content){ $content = nl2br($content); //rivinvaihdot korvataan <br>:llä $match = array( '#\[b\](.*?)\[\/b\]#se', '#\[i\](.*?)\[\/i\]#se', '#\[u\](.*?)\[\/u\]#se', '#\[linkki url="(.+?)"\](.*?)\[\/linkki\]#se', ); //bbtagit $replace = array( "'<b>\\1</b>'", "'<i>\\1</i>'", "'<u>\\1</u>'", "'<a href=\"\\1\">\\2</a>'", ); //muunnetaan html:ksi return preg_replace($match, $replace, $content); } /* Esimerkki käytöstä: * * var_dump(BBCODE('[linkki url="http://osoite.fi"]päätöstagi puuttuu')) * Tulostaa: string(52) "[linkki url="http://osoite.fi"]päätöstagi puuttuu" * * var_dump(BBCODE('[linkki url="http://osoite.fi"]päätöstagi on[/linkki]')) * Tulostaa: string(47) "päätöstagi on" */ ?>
trilog kirjoitti:
Rocceri kirjoitti:
Tiedän, että tei väärin: Copy pastetin sen omaan koodiini, koska en ole opetellut käyttämään arrayta. :P
Kuten varmaan huomaat, Smuliiin esimerkissä ei edes muuteta linkkejä, joten copy-pastella se ei tule toimimaan. Olisit siis joutunut soveltamaan oppimaasi.
Hmm.. Ehkäpä koitin testata noilla valmiiksi määritellyillä tageilla tai lisäsin itse?
No, kuitenkin:
Tuo Smuulin versio ei toiminut oikein, koska kaikki tulostui tekstinä.
Sinun versiosi taas teki errorin 500
EDIT:
Oisko PHP:n jotain 'mutta' kaltaista lausetta?
Eli, jos voisi tehdä tähän tyyliin:
Jos viesti on [linkki url=" mutta ei [/linkki] niin tulostetaan [/linkki]
Samalla tavalla kuin täällä Putkassa. Jos aloittaa [koodi] -tagilla eikä laita päätöstagia, niin se ei myöskään tee tätä koodiboxia
xor? or?
Mieti itsekkin. Niin minullekin sanotaan.
Rocceri kirjoitti:
EDIT:
Oisko PHP:n jotain 'mutta' kaltaista lausetta?
Eli, jos voisi tehdä tähän tyyliin:Jos viesti on [linkki url=" mutta ei [/linkki] niin tulostetaan [/linkki]Samalla tavalla kuin täällä Putkassa. Jos aloittaa [koodi] -tagilla eikä laita päätöstagia, niin se ei myöskään tee tätä koodiboxia
Ihan if-lauseella tuollaisen voi tehdä.
Rocceri kirjoitti:
Sinun versiosi taas teki errorin 500
Lue niitä error-logeja tai tulosta virheet näytölle. Jos/kun liität tuon sinne sinun oman koodisi joukkoon niin jotain todennäköisesti hajoaa.
trilog kirjoitti:
Rocceri kirjoitti:
Sinun versiosi taas teki errorin 500
Lue niitä error-logeja tai tulosta virheet näytölle. Jos/kun liität tuon sinne sinun oman koodisi joukkoon niin jotain todennäköisesti hajoaa.
Tuo sun koodisi ei herjaa, mutta kun sen laittaa sinne se sanoo, että rivillä 222 on virhe, ja rivi on tämmöinen: else {
Tuolla ei ole bbcodejen kanssa mitään tekemistä, vaan se aloittaa kirjoittamaan lähetettyä viestiä.
Mutta, miten sinä Smuuli saat if lauseilla tuollaisen? :O
Ja siitä ekasta versiosta, niin mitenköhän Antti on sen tänne Putkaan hoitanut? Tämä ainakin toimii mukavasti :)
Rocceri kirjoitti:
Tuo sun koodisi ei herjaa, mutta kun sen laittaa sinne se sanoo, että rivillä 222 on virhe, ja rivi on tämmöinen: else {
Tuolla ei ole bbcodejen kanssa mitään tekemistä, vaan se aloittaa kirjoittamaan lähetettyä viestiä.
Se on funktio, laita se minne haluat ja kutsu sitä sopivalla hetkellä.
Rocceri kirjoitti:
Ja siitä ekasta versiosta, niin mitenköhän Antti on sen tänne Putkaan hoitanut? Tämä ainakin toimii mukavasti :)
Varmaan aika samalla periaatteella kuin jo edellä mainittu.
trilog kirjoitti:
Rocceri kirjoitti:
Ja siitä ekasta versiosta, niin mitenköhän Antti on sen tänne Putkaan hoitanut? Tämä ainakin toimii mukavasti :)
Varmaan aika samalla periaatteella kuin jo edellä mainittu.
Ehkä, ehkä ei.
trilog kirjoitti:
Se on funktio, laita se minne haluat ja kutsu sitä sopivalla hetkellä.
Voin siis laittaa tuon erilliseen PHP tiedostoon ja laittaa include käskyllä sen pääkoodiin, vai mitä tarkoitit?
Rocceri kirjoitti:
trilog kirjoitti:
Rocceri kirjoitti:
Ja siitä ekasta versiosta, niin mitenköhän Antti on sen tänne Putkaan hoitanut? Tämä ainakin toimii mukavasti :)
Varmaan aika samalla periaatteella kuin jo edellä mainittu.
Ehkä, ehkä ei.
trilog kirjoitti:
Se on funktio, laita se minne haluat ja kutsu sitä sopivalla hetkellä.
Voin siis laittaa tuon erilliseen PHP tiedostoon ja laittaa include käskyllä sen pääkoodiin, vai mitä tarkoitit?
Eih.
Kirjoitat
$viesti=BBCODE($viesti);
Hmm.. Nyt menee vaikeaksi. Tuppaa tekemään erroria 500 kun koitan tehdä tuota.
Mihin väliin kuuluisi änkeä ja mitä?
EDIT: Poistin koodit 25.4. ettei niitä käytetä
Rocceri kirjoitti:
..Mutta, miten sinä Smuuli saat if lauseilla tuollaisen? :O..
Siinä sulle pohja ja esimerkiksi tällä on erittäin helppoa ratkaista tuo.
<?php $kokolinkki = '[linkki url="www.linkki.fi"]Linkki[/linkki]'; $alku = '[linkki url="www.linkki.fi"]'; $loppu = '[/linkki]'; if (preg_match('//', '$alku')) { echo 'Linkin lopetus löytyi'; }else{ echo 'Linkin lopetusta ei löytynyt'; } ?>
Ja btw. se on Smuliii.. ;)
Jaa-a, ei ihan maailman paras.
Jos sen voi tehdä tuolla ensimmäisellä ehdotuksellasi, niin olisi parempi.
Voisitko sujauttaa sen tohon postaamaani koodin? :)
Auttaisi paljon.
-Kiitos
Sujautappa nyt.. :DDDDDD
reca kirjoitti:
Sujautappa nyt.. :DDDDDD
Ehkä meni vähän 'vitsikkäästi', mutta kun en osaa, niin en osaa. :/
Haluaisin oppia tuonkin, mutta minkäs teet kun ei onnistu. Sitten tarvitsee apua.
EDIT: Yksi kaveri ratkaisi ongelman. :)
Niin miten tämä nyt eroaa tuosta trilogin neuvosta: "$viesti=BBCODE($viesti);"? Tuohan oli täysin samanlainen ratkaisu kuin tämä kaverisi.
Smuliii kirjoitti:
Niin miten tämä nyt eroaa tuosta trilogin neuvosta: "$viesti=BBCODE($viesti);"? Tuohan oli täysin samanlainen ratkaisu kuin tämä kaverisi.
Ken tietää.. Trilogin teki erroria, tämä ei.
Rocceri kirjoitti:
Ken tietää.. Trilogin teki erroria, tämä ei.
Sinun copy-paste -taktiikkasi sen errorin teki, itse koodissa ei ole mitään vikaa.
En kehtaa aina aloittaa uutta aihetta, joten jatkan samaa kun tähän se jotenkin liittyy.
Vieraskirjan Admin-paneelissa on viestien editointi toiminto, joka näyttää textareassa viestit:
viesti1
viesti2
viesti3
Ongelma on se, että jollei yksi viesti mahdu yhdelle riville, se jatkaa sitä seuraavalla rivillä. Yhden viestin kuuluisi aina näkyä samalla rivillä, mutta ei näy. Se toimii, mutta mielelläni ottaisin siihen sellaisen, että näkyy yhdellä rivillä.
Onnistuuko tämmöinen? Eli, textareaan tulisi vaaka scrollbar.
Rocceri kirjoitti:
En kehtaa aina aloittaa uutta aihetta, joten jatkan samaa kun tähän se jotenkin liittyy.
Vieraskirjan Admin-paneelissa on viestien editointi toiminto, joka näyttää textareassa viestit:
viesti1
viesti2
viesti3
Ongelma on se, että jollei yksi viesti mahdu yhdelle riville, se jatkaa sitä seuraavalla rivillä. Yhden viestin kuuluisi aina näkyä samalla rivillä, mutta ei näy. Se toimii, mutta mielelläni ottaisin siihen sellaisen, että näkyy yhdellä rivillä.
Onnistuuko tämmöinen? Eli, textareaan tulisi vaaka scrollbar.
Tälläin onnnistuu:
<textarea style="overflow: auto;">plaaplaa</textarea>
Jollekin ikivanhoille selaimille voisi vielä laittaa WRAP="OFF"
Grez kirjoitti:
WRAP="OFF" ?
Hei, Grez... Kannattaisi oppia laittamaan atribuutit pienillä.
Olet aivan oikeassa, kannattaisi aina kirjoittaa ne pienellä, niin ei sitten tule kämmejä xhtml:ää kirjoittaessa.
Kirjainkoon valinta ei kuitenkaan ollut omani, vaan copy&pastetin sen.
Grez kirjoitti:
Jollekin ikivanhoille selaimille voisi vielä laittaa WRAP="OFF"
Onko IE8 ikivanha? Tuo wrap="off"
toimii IE8:lla, mutta tuo style="overflow: auto;"
muuttaa vaan sen, että scrollbaria ei näy ilman että tekstiä on yli textarean korkeuden.
Mutta joo, kummatkin olivat hyviä. Tuo overflow oli hyvä muulla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.