No moroskuikkaa taas. Osastonhoitaja lähti kahville, joten kipitin koneelle esittämään kummallisia kysymyksiä. Näppäränä asekätkijänä tein hienon lomakkeen, jossa on asiaankuuluvasti myös <textarea></textarea>. Jännästipä osasin sen myös tietokantaan asettaa, mutta voi.. sitten mieleen tuli yksi rajoitus, nimittäin sellainen, että mitenkäs minä saan enterin painalluksen menemään <br />:nä tietokantaan? Ongelma kun on se, että takaisin <textareaan> tk:sta haettuna rivinvaihdot eivät tulostu laisinkaan.
Täällä putkassahan se toimii mitä mainioimmin, mutta vanhan miehen väsyneet silmät eivät enää ole entisellään.
Kiitosta kiitosta - näin sitä on ihminen unohtavainen
Huom, nl2br() funktio tekee myös rivinvaihdot <br /> koodin perään.
Hmm.. niinhän se tekee, mutta mahtaneekohan tuollen mitään?
$mjono = str_replace(array("\r\n", "\n", "\r"), "<br />", $mjono);
Tokihan fiksua olisi viedä teksti sellaisenaan kantaan ja tehdä muotoilut vasta tulostusvaiheessa.
Missäs välissä ne rivinvaihdot katoaa? Kyllä niidenkin pitäisi mennä kantaan kiltisti ja tulla takaisinkin oikein. Ainakin itse käytän textareaa noin ja hyvin toimii ilman mitään kikkailuja.
Rivinvaihdot katoavat silloin, kun painaa enteriä textareassa - ihan niinkuin tätäkin kirjoittaessa. Kun tässä nyt painelen muutaman kerran enteriä (nyt)
... niin nyt tekstissä näkyy muutama rivinvaihto, eikä edes tekstiä muokatessa tule rivinvaihtojen kohdalle <br />:ä, vaan teksti pysyy mitä mainioimmin kasassa juuri sellaisena, kuin se on tarkoitettukin.
<html><body><form method=POST> <textarea name="foo"></textarea> <input type="submit" value="Jemmaan"> </form></body></html]
jonka jälkeen jemmataan..
... ... $teksti=$_POST['foo']; $sql=INSERT INTO tk (teksti) VALUES $teksti; ... ...
ja sitten katsellaan
<?php $sql="SELECT..... ... ... print $tieto[0]; ... ...
... mutta lopputulos ei olekaan
Tässä ovat tekstit
vaan..
Tässäovattekstit
Mikä lie menninkäinen on mennyt kiusaa tekemään, mutta tuolla tyylillä se tekstin näyttää.
No kyllä minulla vaan toimii kun pistän tekstin kantaan normaalisti (mysql_real_escape_string läpi tietty) ja sitten tulostettaessa käytän nl2br-funktiota.
print nl2br($tieto[0]);
Rivinvaihdot menevät kyllä tietokantaan. Ne tulevat myös tietokannasta takaisin, mutta ongelmana on se, että HTML hukkaa ylimääräiset välilyönnit ja tulkitsee enteritkin välilyönneiksi. En tiennyt, että PHP:ssa on temput tuommoisille. Käytän itse preformatted text, eli <pre>-tagia. Näin:
echo '<pre width="0" >$tietokannasta_haettu_teksti_muuttujana</pre>';
Tuo PRE:n leveysasetus on tärkeä, koska se mahdollistaa sen käytön siten, että PRE-palikan leveyden voi määritellä CSS:llä ja rivitys toimii kiltisti. Voit määritellä CSS:llä vaikka näin:
pre { width : 200px; height : 200px; }
Näin saat 200 pikseliä korkean ja leveän PRE-pulikan, jonka sisään haettava teksti saa sisältää vaikka pelkkiä entereitä ja välilyöntejä ja ne silti tulkitaan merkeiksi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.