Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP ja MySQL

Sivun loppuun

eija [22.02.2009 18:31:55]

#

Kirjoitan PHP ohjelmaa, jossa käyttäjä kirjoittaa tietoa text areaan, sitten tallennan sen MySql tietokantaan. Kun haen taas tiedon tietokannasta, ovat kaikki kappalemerkinnät hävinneet. Täytyykö minun todella käsitellä tietokannasta saatava tieto ohjelmallisesti niin, että saan myös kappalejaon näkyviin?

Metabolix [22.02.2009 18:36:36]

#

Mitä on hävinnyt? Kyllä tietokannasta tulee aivan sama data ulos kuin sisäänkin, joten vian on oltava PHP-koodissa.

GimPeltzi [22.02.2009 18:44:58]

#

Käyttäjän kirjoittama tieto tekstikenttään on mitä luultavimmin normaalia tekstiä, joten kappalemerkinnät ovat vain kaksoisrivinvaihtoja (\n). Kun ne tulostetaan tietokannasta sivulle, ne toki on koodissa mukana, mutta selain ei näytä niitä sivulla. Sinun pitää joko muodostaa rivinvaihdoista kappalejako erikseen tai simppelimmin vaihtaa \n -merkinnät <br /> -tageiksi nl2br() -funktiolla.

eija [22.02.2009 23:30:07]

#

Kiitos!
Tuo kuulostaa aika yksinkertaiselta. Luulin jo, että joudun tekemään kosolti enemmän merkkijono muunnoksia, hakuja tms.

eija [23.02.2009 16:01:44]

#

Tuo fuktio nl2br() on tosi helppokäyttöinen:

$temp = nl2br($rivi2);
printf($temp); // näin tulevat kappalejaot näkyviin

Onkohan noista PHP:n valmiista funtioista jossain listausta?

Lebe80 [23.02.2009 16:05:57]

#

eija kirjoitti:

Onkohan noista PHP:n valmiista funtioista jossain listausta?

on, katso php.net -sivustolta.

Lista:
https://www.php.net/manual/en/funcref.php

josta löytyy esim. merkkijonoille omat funktiot:
https://www.php.net/manual/en/book.strings.php

GimPeltzi [23.02.2009 16:15:22]

#

eija kirjoitti:

Tuo fuktio nl2br() on tosi helppokäyttöinen:

$temp = nl2br($rivi2);
printf($temp); // näin tulevat kappalejaot näkyviin

Onkohan noista PHP:n valmiista funtioista jossain listausta?

Siinä on vain se, että ne tosiaan ovat sitten vain rivinvaihtoja. Tilanteesta riippuen on tarpeellista muodostaa niistä asianmukainen kappalejako <p> -tageilla (esim. CSS -tyylitystä varten). Tällöin voi tehdä niin, että merkkijonon alkuun lisätään <p> -tagi, loppuun </p> -tagi. Sitten kaksoisrivinvaihdot (\n\n) korvataan str_replace() -funktiolla merkkijonolla </p><p> ja lopuksi ajetaan koko merkkijono nl2br() -funktion läpi.

Merri [23.02.2009 18:04:52]

#

Valitettavasti tuo ei ratko sitä, miten toimia useampien peräkkäisten rivinvaihtojen kanssa, esim.

<br /><br /><br />Testi

tulisi ulos

</p><p><br />Testi

Yksi ratkaisu tähän olisi tietysti estää kahta useammat peräkkäiset rivinvaihdot, mutta se ei välttämättä ole kaikissa tilanteissa paras ratkaisu. Jos taas yrittää muuttaa pitkän välin HTML:ksi ja CSS:ksi, niin nousee eteen ongelma siitä, miten näin tulisi tehdä. Pitäisikö esim.

<br /><br /><br /><br />

tulkita muotoon

A) </p><p style="margin-top:3em">
B) </p><br style="line-height:200%" /><p>
C) </p><br /><br /><p>
D) </p><p></p><p>

Olen joskus yrittänyt pähkäillä asiaa foorumiviestien muuntamisen yhteydessä ja sitten todennut, että ei maksa vaivaa. Varsinkin kun foorumiviesteihin tunkeutuu mukaan mm. lainauksia, koodiosuuksia jne.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta