Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Prosty WYSIWYG? Redefinicja markupów?
Forum PHP.pl > Forum > Przedszkole
zaaap
Witam,
Na stronie mam textarea. Chce nadac mu takie opcje jak textarea na wykopie do dodawania komentarzy, na przyklad. Automatyczne entery, tak jak sie wklei. _ i ** dla bold i italic, to rozumiem ze mozna zrobic zastepowanie znakow ** na <b>, ale ktos podpowie jak te entery tam wsadzic ?
zaaap
Jednak wzialem TinyMCE i tam jade na najprostrzym zestawie narzedzi edycyjnych. Wszystko ladnie ale jest problem (jak zwykle):
Otoz kiedy dodaje cos w stylu: <max> siema... To jest to do bazy dodawane poprawnie, poprawnie wyswietlane na stronie itd, ale problem pojawia sie kiedy chce edytowac taki wpis, wtedy w polu edycyjnym pojawia sie bez < i >. Ktos sie orientuje co jest nie tak? Przypomne ze dodaje i na stronie taki wpis wyswietla poprawnie.
erix
htmlentities" title="Zobacz w manualu PHP" target="_manual dla nicków.
zaaap
Dopiero teraz wracam do projektu, gdyz wynikly rozne sprawy.
A więc:
Cytat(erix @ 28.05.2009, 21:23:15 ) *

Nie działa.

Moze postaram sie nakreslic sytuacje w jakiej sie znajduje: pojedyncze textarea, w ktorym dodawane bedzie cos na kształt basha, czyli:
Kod
<on> Slyszalem, ze <br />  to przezytek
  <ona> O jaaa no co ty


Uzywam podstawowego zestawu TinyMCE. W bazie taki wpis prezentuje sie nastepujaco:
Kod
<p>&lt;on&gt; Slyszalem, ze &lt;br /&gt; to przezytek
   &lt;ona&gt; O jaaa no co ty</p>


Wyswietlanie takich cytatow leci z petli: $a['tresc'] i wszystko wyswietla ladnie, nie daje zadnego dekodowania ani specialchars ani entities mimo to, wszystkie znaki specjalne wyswietlane sa poprawnie. Dopiero kiedy chce edytowac dany wpis, w textarea widze tekst bez znacznikow < > oraz tekstu pomiedzy nimi.
Probowalem dawac przed wyswietleniem w textarea html_entity_decode() oraz htmlspecialchars_decode(), lecz nie odniosło to zadnego skutku.
Przypomne jeszcze, ze dodawany jest sam tekst, nie ma zadnego pola nick jako takiego.
erix
Pokaż, jak inicjujesz edytor i zapisujesz/odczytujesz z bazy.
zaaap
Edytor:
Na gorze sprawdza czy bedziemy edytowac:
  1. <?php
  2. if (isset($_REQUEST['news']))
  3. {
  4.  $a = pobierz_news($_REQUEST['news']);
  5. }
  6. ?>


Pozniej w samym formularzu
  1. <legend>Dodawanie / edycja wiadomości</legend>
  2. <form action="news_akcja.php" method="post" enctype="multipart/form-data">
  3. <tr>
  4. <td>Treść</td>
  5. </tr>
  6. <tr>
  7. <td><textarea id="elm1" style="width: 500px" rows="7" name="tresc"><?php echo $a['tresc']; ?></textarea>
  8. </td>
  9. </tr>
  10. <tr>
  11. <td><input type="submit" value="Wysłanie">
  12. </tr>
  13. </form>

Funkcja:
  1. <?php
  2. function pobierz_news($news)
  3. {
  4.  $lacz = lacz_bd();
  5.  $sql = "select * from bash where news_id = '$news'";
  6.  $wynik = $lacz->query($sql);
  7.  return($wynik->fetch_assoc());
  8. }
  9. ?>

Zapis:
  1. <?php
  2. $lacz = lacz_bd();
  3. $tresc = $_REQUEST['tresc'];
  4. $czas = time();
  5.  
  6. if (isset($_REQUEST['news']) && $_REQUEST['news']!='')
  7. {   // edycja
  8.  $news = $_REQUEST['news'];
  9.  
  10.  $sql = "update bash set data = '$czas',
  11.             tresc = '$tresc'
  12.          where news_id = '$news'";
  13. }
  14. else {         // nowy artykuł
  15.  $sql = "insert into bash (news_id, data, tresc, publ)
  16.          values (NULL, '$czas', '$tresc', '0')";
  17. }
  18.  
  19. $wynik = $lacz->query($sql);
  20. ?>

Wyswietlanie, troche zadymy, ale taki to skrypt paginacji znalazlem:
  1. <?php
  2. define('ILOSC_WYNIKOW_NA_STRONIE', 5);
  3. mysql_connect('localhost', 'xxx', 'yyy');
  4.  
  5. $SQL = "SELECT SQL_CALC_FOUND_ROWS *
  6.       FROM bash where data > '$czas' and publ = '1' ORDER BY data DESC
  7.       LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
  8.       $RES = mysql_query($SQL) or die(mysql_error());
  9.  
  10.               while($AFR = mysql_fetch_assoc($RES)){
  11. echo '<p class="news-tresc">'.$AFR['tresc'].</p>;
  12.  
  13. //dalsza czesc paginacji
  14. (...)
  15. ?>


Moze to byc problem obiektowe vs. strukturalne? Jakies roznice w kodowaniu wyciagnietych danych? Bo juz nie ma pomyslu...
erix
  1. <?php
  2. mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE)
  3. ?>

Po co escape'ować liczbę? tongue.gif

Cytat
Moze to byc problem obiektowe vs. strukturalne?

Nie. Raczej problem w interpretacji nawiasów trójkątnych jako tagi.

Wrzuć jeszcze przeparsowany kod, w jakiej postaci trafia do formularza.
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.