Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] link i pogrubiony tekst w bazie
Forum PHP.pl > Forum > Przedszkole
if_error
Witam ... moje pytanie tym razem sprowadza się do zapisu w bazie linku i pogrubionego tekstu. Chciałbym zapytać jak zrobić żeby do bazy zapisał mi pogrubiony tekst. Tak jak jest to w przypadku pisania tego posta mam do dyspozycji z gornego "menu" m.in. tekst pogrubiony i po wstawieniu między znacznikami tekst zostaje pogrubiony, podobnie jak z linkiem do strony. Kiedy próbowałem użyć znacznika <b>co¶</b> to do bazy zapisało mi wła¶nie w takiej postaci i wy¶wietla tak samo czyli "<b>co¶</b>".

Ma kto¶ jaki¶ art. do poczytania jak to zrobić samemu?

bede wdzieczny za pomoc ...
Lombi
Jak rozumiem wyświetla Ci na stronie doklanie taką treść "<b>cos</b>" a nie pogrobiony napis cos...
napisz jak dodajesz do bazy i jak z niej odczytujesz zeby było sie czego czepic snitch.gif
if_error
zapis do bazy:

  1. <?php
  2. function odbierz($pole) {
  3. $pole = trim($pole);
  4. if (get_magic_quotes_gpc()) $pole = stripslashes($pole);
  5. return htmlspecialchars($pole, ENT_QUOTES);
  6. }
  7.  
  8. $tytul = odbierz($_POST['tytul']);
  9. $data = odbierz($_POST['data']);
  10. $autor = odbierz($_POST['autor']);
  11. $tresc = odbierz($_POST['tresc']);
  12. $tresc_rozwinieta = odbierz($_POST['tresc_rozwinieta']);
  13. $czytan = odbierz($_POST['czytan']);
  14.  
  15. ...tu sprawdzenia - poprawnosc pol itd ...
  16.  
  17. $query2 = "INSERT INTO $mysql_tabela (tytul,data,autor,tresc,tresc_rozwinieta,czytan) VALUES ('$tytul', '$data', '$autor', '$tresc', '$tresc_rozwinieta', '$czytan')";
  18. $result2 = mysql_query($query2);
  19. echo '<font color="#000000">Dane zostały zapisane.</font><br>';
  20. } else {
  21. echo '<font color="#000000">Dane nie zostały zapisane.</font><br>';
  22. }
  23. ?>


odczyt:

  1. <?php
  2. include("../tabele/news.php");
  3. mysql_connect ( $mysql_host, $mysql_login, $mysql_haslo ) or
  4. die ("Nie można poł±czyć się z baz± MySQL.");
  5. mysql_select_db($mysql_baza) or
  6. die ("Nie można poł±czyć się z baz± danych.");
  7.  
  8. $zapytanie= mysql_query ("SELECT * FROM $mysql_tabela") or 
  9. die ("Bł±d w zapytaniu");
  10.  
  11. function iso($text){
  12. $text=strtr($text, "±¶Ľˇ¦¬","±¶Ą·¦¬");
  13. return $text;}
  14.  
  15. while ($rekord = mysql_fetch_array ($zapytanie)) {
  16. $id_news = $rekord[0];
  17. $tytul = $rekord[1];
  18. $data = $rekord[2];
  19. $autor = $rekord[3];
  20. $tresc = $rekord[4];
  21. $tresc_rozwinieta = $rekord[5];
  22. $czytan = $rekord[6];
  23.  
  24. // i wyswietlamy w odpowiednich miejscach np:
  25.  
  26. print(iso("$tresc"));
  27. ?>


no i wy¶wietla np: <b>witam</b>
strife
Wy¶wietla Ci:
Kod
<b>witam</b>

w Ľródle pliku ?

SprawdĽ nagłówki, czy dokument zostaje wysłany jako html.
if_error
strife - pewnie wyjdę na głu..... ale heh nie bardzo wiem o co chodzi

Cytat
SprawdĽ nagłówki, czy dokument zostaje wysłany jako html.


sadsmiley02.gif heh dokładniej pewnie tego się nie da powiedzieć ale ... moze jako¶ zobrazować questionmark.gif dry.gif
Lombi
Nie na głupka tylko pocz±tkujacego snitch.gif
Masz w HEAD co¶ takiego:
  1. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />


Pokaż jeszcze zródło strony ktor± wy¶wietla ci skrypt! Bez tresci ktore tam posiadasz tylko head i z body to nieszczesne pogrobienie.
Kicok
Cytat
  1. <?php
  2. //(...)
  3. return htmlspecialchars($pole, ENT_QUOTES);
  4. //(...)
  5. ?>


Zamieniasz znaki takie jak: < czy > na encje, więc tagi HTML s± rozpoznawane jako zwykły tekst.
Rozwi±zanie pierwsze, to nieużywanie htmlspecialchars - ale wtedy musiałby¶ jeszcze dosyć ostro pogłówkować jak ten skrypt zabezpieczyć przed SQL Injection i XSS.
Inny pomysł to zostawić t± funkcję tak jak jest, ale przerzucić sie na proste tagi BBcode. Zaraz przed wy¶wietleniem danych z bazy zamieniasz: [ b] na: <b>, a: [ /b] na: </b>.
Do tego wystarczy ci funkcja str_replace" title="Zobacz w manualu PHP" target="_manual, albo przykład 1694 z: preg_replace_callback" title="Zobacz w manualu PHP" target="_manual, o ile będziesz potrafił to dostosować do własnych potrzeb.
if_error
działa ;-)

  1. <?php
  2. function iso($text){
  3. $text=strtr($text, "±¶Ľˇ¦¬[]","±¶Ą·¦¬<>");
  4. return $text;}
  5. ?>


pozdrwiam :roll2:
Glarden
Jak chcesz po prostu pogrubiony tekst to zrób to na stronie, a nie w bazie:
  1. <?php
  2. print(iso("<b>".$tresc."</b>"));
  3. ?>
if_error
Glarden - a jesli chce zeby tylko powiedzmy jeden wyraz badĽ jedna linijka sposrod calego tekstu byla pogrubiona? - w tym wypadku chyba całay tekst mi pogrubi a tego nie chce ...

ale ...

teraz bardziej obszernie i nie wiem czy dobrze ale u mnie działa ;-) :
  1. <?php
  2. function iso($text){
  3. $co = array ('±','¶','Ľ','ˇ','¦','¬','[',']','%22');
  4. $naco = array ('±','¶','Ą','·','¦','¬','<','>','"');
  5. $text=str_replace($co, $naco, $text);
  6. return $text;}
  7. ?>


teraz przy pisaniu posta wstawie tylko: to jest [.b]pogrubiony[./b] (dałem kropki bo mi pogrubia) tekst i ładnie wy¶wietla: to jest pogrubiony tekst ...

ale jak chce zapisać link to zamiast " ładuje %22 - to troche niewygodne heh - jak to zmienić ?
Glarden
to możesz zrobić tak:
  1. <?php
  2. $tresc = str_replace("krowa", "<b>krowa</b>", $tresc);
  3. echo $tresc;
  4. ?>


I wy¶wietli Ci cały tekst, tylko krowa będzie pogrubiona.
To jest wersja lo-fi głównej zawarto¶ci. Aby zobaczyć pełn± wersję z większ± zawarto¶ci±, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.