Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wszczepienie bbcode do mojego kodu, do mojego kodu
korey
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Witam sporo szukałem w sieci jak i na tym forum funkcji BBCode kilka znalazłem ale za każdym razem nie działało.
Chcę dodać BBCode do:
- formularza który dodaje newsy do bazy danych.
- funkcji która odczytuje newsy z bazy danych.

napisałem takiego newsa z użyciem HTML:
  1. <!-- tresc wpisana w formularzu -->
  2. <b>Pogrubiony tekst</b><br />
  3. <u>Podkreślony tekst</u><br />
  4. <i>Pochylony tekst</i><br />
  5. normalny tekst<br />
  6. <a href="http://www.google.pl">moj link</a><br />
  7. <img src="http://www.strona.pl/obrazek.gif" border="1"><br />
  8. <font color="#FF0000">Jak dobrze pamiętam to jest czerwony kolor</font>

Tak wygląda News po dodaniu do DB i odczytaniu do wyświetlenia
(IMG:http://img413.imageshack.us/img413/666/pokaznews.jpg)

Wygląd Pól Formularza dodającego newsa:
  1. <tr>
  2. <td></td>
  3. <td>
  4. <input type="button" value="B" name="bold" title="Pogrubiony tekst: tekst " style="font-weight: bold;" />
  5. <input type="button" value="I" name="italic" title="Tekst pochyły: tekst " style="font-style: italic;" />
  6. <input type="button" value="U" name="underline" title="Podkreślony tekst: tekst " style="text-decoration: underline;" />
  7. <input type="button" value="IMG" name="obrazek" title="Wstawianie Obrazka: " />
  8. <input type="button" value="URL" name="obrazek" title="Wstawianie Linku: url obrazka " />
  9. <option name="kolor" value="red" />czerwony
  10. <option name="kolor" value="green" />zielony
  11. </select>
  12. </td>
  13. </tr>
  14.  
  15. <tr>
  16. <td>Krótka Tresc:</td>
  17. <td><textarea id="tresc" name="tresc" id="content" cols="60" rows="7"><?php echo $tresc; ?></textarea></td>
  18. </tr>


Co do formularza chciałbym by po kliknięciu na button np "B" od razu w polu <textarea> name="tresc" od razu pojawiło się .
Jeśli już to by było wysyłamy newsa ubranego w BBCode do DB. teraz pozostaje tylko odpowiednio odczytać go z bazy i to właśnie pojawia się problem bo nie mam zielonego pojęcia jak sie do tego zabrać (IMG:style_emoticons/default/sad.gif) nie oczekuje gotowca, tylko jakiegoś przykładu. No ale jeśli znalazłby się ktoś kto ma to w małym palcu i byłby w stanie mi to jakoś napisać w formie wolontariatu to tez bym się ucieszył. oczywiście mogę sie odwdzięczyć jakimś linkiem (IMG:style_emoticons/default/smile.gif) pozdrawiam i bardzo proszę o obfitą pomoć gdyż to idzie na szczytne cele (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 14)
tehaha
post
Post #2





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


żeby to elegancko zrobić potrzebujesz tutaj sporo javascript ale najprostszy możliwy przykład to taki:


//tutaj miał być kod ale jak dodawałem posta to mi ciągle podmieniało i z przykładowego kodu, zamiast tego daje link http://www.loco.ayz.pl/bbcode/a.html


potem przed zapisem do bazy danych powinieneś użyć funkcji strip_tags() żeby usunąć html jeśli user wpisał, i potem podmienić BBcode na znaki html.

ale to tylko maksymalnie uproszczony przykład bo dobrze by było żeby user mógł zaznaczyć myszką tekst a potem objąć go BBcode, po za tym trzeba też pomyśleć co zrobić jak user przypadkowo skasuje jeden nawias [ przy BBcode
Go to the top of the page
+Quote Post
korey
post
Post #3





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


przykład jest ok, dokladnie o to mi chodziło ale kodu nie ma.. co do js gdybym byl w nim biegły nie pisałbym tego tematu
Go to the top of the page
+Quote Post
tehaha
post
Post #4





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


kod jest tylko taki
  1. <form name="myform">
  2. <input name="bold" type="button" value="Bold" title="Pogrubiony tekst: tekst " onclick="java script:document.myform.tresc.value+='[Bold]tekst[/Bold]'"/>
  3. <input type="button" value="Pochyły" name="italic" title="Tekst pochyły: tekst " onclick="java script:document.myform.tresc.value+='[Italic]tekst[/Italic]'"/>
  4. <input type="button" value="Podkreślenie" name="underline" title="Podkreślony tekst: [underline]tekst[/underline] " onclick="java script:document.myform.tresc.value+='[Underline]tekst[/Underline]'"/>
  5.  
  6. <textarea id="tresc" name="tresc" id="content" cols="60" rows="7"></textarea>
  7. </form>


no to masz 3 wyjścia albo zadowolisz się takim przykładem, albo nauczysz się javascript , albo weźmiesz sobie jakiś gotowy edytor wysiwyg i problem z głowy,
bo taki konkretny BBcode z dużym usablity to naprawdę dużo javascripta więc wątpię żeby ktoś Ci napisał gotowca
Go to the top of the page
+Quote Post
korey
post
Post #5





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


No a wiesz jak zrobić by zaznaczony tekst mi oprawialo własnie w np
  1. [b] [/b]


Ten post edytował korey 8.04.2010, 10:56:52
Go to the top of the page
+Quote Post
tehaha
post
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


ogólnie słaby jestem z javascript ale z pomocą wujka Google udało się, aczkolwiek nie działa pod IE:

  1. <script type="text/javascript">
  2. function formatText(el,tagstart,tagend) {
  3. if (el.setSelectionRange) {
  4. el.value = el.value.substring(0,el.selectionStart) + tagstart + el.value.substring(el.selectionStart,el.selectionEnd) + tagend + el.value.substring(el.selectionEnd,el.value.length)
  5. }
  6. else {
  7. var selectedText = document.selection.createRange().text;
  8.  
  9. if (selectedText != "") {
  10. var newText = tagstart + selectedText + tagend;
  11. document.selection.createRange().text = newText;
  12. }
  13. }
  14. }
  15. <form name="myform">
  16. <input type="button" value="BOLD" onclick="formatText(document.getElementById('content'),'[bold]','[/bold]')"/>
  17. <input type="button" value="ITALIC" onclick="formatText(document.getElementById('content'),'[italic]','[/italic]')"/>
  18. <input type="button" value="UNDERLINE" onclick="formatText(document.getElementById('content'),'[underline]','[/underline]')"/>
  19. <textarea id="content" cols="60" rows="7"></textarea>
  20. </form>
Go to the top of the page
+Quote Post
blooregard
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Tu masz małą wskazówkę, ale musisz sobie sam przerobić:
  1. if (document.selection) // to działa w IE
  2. {
  3. var range = document.body.createTextRange();
  4. range.moveToElementText(elm);
  5. range.select();
  6. }
  7. else if (window.getSelection) // ...a to w FF i Operze
  8. {
  9. var range = document.createRange();
  10. range.selectNodeContents(elm);
  11. var selection = window.getSelection();
  12. selection.removeAllRanges();
  13. selection.addRange(range);
  14. }
Go to the top of the page
+Quote Post
korey
post
Post #8





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


po kompinowalem na rozne sposoby i brazk pożądanego efektu (IMG:style_emoticons/default/sad.gif) ostatecznie mam takie coś.
  1. <script type="text/javascript">
  2. if (document.selection) // to działa w IE
  3. {
  4. var range = document.body.createTextRange();
  5. range.moveToElementText(tresc);
  6. range.select();
  7. }
  8. else if (window.getSelection) // ...a to w FF i Operze
  9. {
  10. var range = document.createRange();
  11. range.selectNodeContents(tresc);
  12. var selection = window.getSelection();
  13. selection.removeAllRanges();
  14. selection.addRange(range);
  15. }
  16.  
  17. <form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
  18.  
  19. <input name="B" type="button" value="B" title="Pogrubiony tekst: tekst " style="font-weight: bold;" onclick="java script:document.myform.tresc.value+=''"/>
  20.  
  21. <input type="button" value="I" name="I" title="Tekst pochyły: tekst " style="font-style: italic;" onclick="java script:document.myform.tresc.value+=''"/>
  22.  
  23. <input type="button" value="U" name="U" title="Podkreślony tekst: tekst " style="text-decoration: underline;" onclick="java script:document.myform.tresc.value+=''"/>
  24.  
  25. <input type="button" value="IMG" name="obrazek" title="Wstawianie Obrazka: " />
  26.  
  27. <input type="button" value="URL" name="obrazek" title="Wstawianie Linku: url obrazka " />
  28.  
  29. <textarea id="tresc" name="tresc" id="content" cols="60" rows="7"><?php echo $tresc; ?></textarea>
  30.  
  31. </form>


ten kod dziala tylko tak ze klikamy na button i w textarea wyskakuje np:
Kod
wcześniej wpisany tekst, zaznaczony i po kliknieciu na inpunt [b] [/b]


Ten post edytował korey 9.04.2010, 07:46:04
Go to the top of the page
+Quote Post
tehaha
post
Post #9





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


Cytat(korey @ 9.04.2010, 08:45:13 ) *
po kompinowalem na rozne sposoby

jakim kombinowaniu jak po prostu wkleiłeś kod, który dał Ci blooregard? musisz go przerobić, żeby robił to co chcesz
Go to the top of the page
+Quote Post
blooregard
post
Post #10


Newsman


Grupa: Moderatorzy
Postów: 2 033
Pomógł: 290
Dołączył: 21.12.2007
Skąd: Łódź




Cytat
ten kod dziala tylko tak ze klikamy na button i w textarea wyskakuje np:

Musisz go przerobić tak, by zaznaczony tekst w <textarea> znalazł się pomiędzy znacznikami. Czyli kombinacja tego, co Ci podałem+Twojego kodu.
Go to the top of the page
+Quote Post
korey
post
Post #11





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


tehaha miało być kombinowałem (IMG:style_emoticons/default/smile.gif)

Troszke przysiedziałem i zrobiłem takie coś:

Kod
onclick="java script:document.myform.tresc.value='[b]'+document.myform.tresc.value+'[/b]'"


teraz działa jak trzeba. doszliśmy to połowy wątku. teraz jak mam juz zapisanego w bazie danych newsa oprawionego w bbcode chciałbym zrobić funkcje która by bbcode przerabiała na html. da sie coś takiego zrobić.? (IMG:style_emoticons/default/biggrin.gif)

Ten post edytował korey 9.04.2010, 13:22:53
Go to the top of the page
+Quote Post
thek
post
Post #12





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Korey... Nawet na forum tutaj jest CAŁY topic o skrypcie naszego kolegi, który zrobił sobie parser phpBB i udostępnił dla ogółu, a Ty jeszcze o to pytasz? No wstyd :/
Go to the top of the page
+Quote Post
korey
post
Post #13





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


widzialem chyb ten temat ale nie potrafie go przystosować do swojego kodu (IMG:style_emoticons/default/sadsmiley02.gif) php ciagle mi jakieś błędy wywalało
Go to the top of the page
+Quote Post
Wicepsik
post
Post #14





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


str_replace ci wystarczy
Go to the top of the page
+Quote Post
korey
post
Post #15





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dobra zrobiłem juz funkcje która odbiera z DB tekst oprawiony w BBCode i odpowiednio przerabia. i to działa poprawnie.

Wracając do mojego formularza to niby oznacza mi tekst w znaczniki BBCode, ale od razu czały tekst jaki jest w textarea a nie to co zaznaczyłem myszką ;/



Hey jest tu ktoś..?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 19:40