Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]bbcode+nast_pop_strona
Forum PHP.pl > Forum > Przedszkole
marcio
witam dokonczylem moja ksiege dzialac dziala lecz jest brzydka.Problem polega na tym ze podany tekst w fuckji str_replace sie nie zamiena na buzki oto kod:
  1. <?php
  2. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  3. $zmien = str_replace(":)","<img src='smile.gif' />", $zmien);
  4. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  5. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  6. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  7. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  8. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  9. ?>

i to nie dziala.Mam jeszcze jedno pytanie chce zrobic podzial na strony tzn wytlumacze lepiej np ludzie sie wpisuja do ksiegi i jesli na stronie jest wiecej niz 50 wpisow to na dole jest link do nastepnej strony i do poprzedniej ale jak ma to dzialac ksiega jest na bazie.
Mniej wiecej tak
1)lacze sie z baza
2)pobieram pierwych 50 wiadomosci
3)jesli jest wiecej niz 50 robie lacze do nastepnej strony??
zeby tak zrobic musze zrobic chyba 2 rzeczy dodac id wiadomosci zeby kazda wiadomosc miala swojej id poczawszy od 1
i zrobic jedna zmienna $_GET ktora by odpowiadowywala za nr strony ale nie mam zabardzo pomyslu jak to zrobic czy ktos moze pomoc? questionmark.gif
b_chmura
  1. <?php
  2. function paginacja($cnt, $start=50)
  3. {
  4. $page = $_GET['page'];
  5.  
  6. if($page == 0 OR empty($page))
  7. {
  8. $page = 1;
  9. }
  10.  
  11. $show  = $start*$page-$start;
  12. $paginacjaony = $cnt/$start;
  13.  
  14. if(($paginacjaony < round($paginacjaony)) OR ($paginacjaony > round($paginacjaony))) 
  15. { 
  16. $paginacjaony_add = ($paginacjaony+1);
  17. }
  18. elseif($paginacjaony == round($paginacjaony)) 
  19. { 
  20. $paginacjaony_add = $paginacjaony;
  21. }
  22.  
  23. if($page > 1) 
  24. { 
  25. $prewiev = '<a href="?page='.($page-1).'">Poprzednia</a>'; 
  26. } 
  27. else 
  28. { 
  29. $prewiev = 'Poprzednia';
  30. }
  31.  
  32. if($page > $paginacjaony_add)
  33. {
  34. $error = '<font color="red"><b>Hola Hola troche zadaleko zaszedłeś!</b></font>';
  35. }
  36.  
  37. if($page < $paginacjaony) 
  38. { 
  39. $next = '<a href="?page='.($page+1).'">Następna</a>'; 
  40. }
  41. else 
  42. { 
  43. $next = 'Następna';
  44. }
  45.  
  46. $panel = '<br />'.$prewiev.' | '.$page.' z '.round($paginacjaony_add).' | '.$next;
  47.  
  48. $paginacja['error'] = $error;
  49. $paginacja['panel'] = $panel;
  50. $paginacja['show'] = $show;
  51. $paginacja['ile']  = $start;
  52. $paginacja['page'] = $page;
  53.  
  54. return $paginacja;
  55. }
  56.  
  57. $p = paginacja($cnt, 50);
  58. ?>


Legenda:
$cnt - liczba wpisów w bazie
$p[error] - błędy powstałe na wskutek jakiś nieprawidłowości
$p['panel'] - linki do stron "poprzednia | X z X | następna"
$p['show'] - numer ostatniego wpisu na stronie
$p['ile'] - liczba wpisów na stronie
$p['page'] - aktualna strona

przykładowe zapytanie:
  1. <?php
  2. $q = @mysql_query('SELECT * FROM nazwa_tabeli ORDER BY ID DESC LIMIT '.$p['show'].', '.$p['ile'].';');
  3. ?>



a przy str_replace upewnij sie czy zmienna $zmien jest treścią wpisu

pozdrawiam
marcio
a wiec co do bbcod'a to tak wygladac caly bbcode:
  1. <?php
  2. public function bbcode() {
  3. $zmien = htmlspecialchars(trim($this->message));
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  6. $zmien = str_replace(":)","<img src='smile.gif' />", $zmien);
  7. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  8. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  9. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  10. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  11. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  12. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  13. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  14. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  15. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  16. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  17. $this->message = $zmien;
  18. }
  19. ?>

wywoluje go tak:
  1. <?php
  2. //wywoluje go w funckji czyli nad tym jest public function Dodaj_wpis() {
  3. $this->bbcode();
  4. //etc..
  5. }
  6. ?>

pogrubienie dziala pocylosc dziala small i big tez url tez ale buzki nie i nie wiem czemu
Co do tego kodu na nastepna strone potem go przeanalizuje myslalem zeby go zrobic troche latwiejszego bo mam kilka pytan nigdy sie nie bawilem w $_GET wiec po nauce napisze mniej wiecej moj kod oki i jeszcze raz dzieki biggrin.gif
b_chmura
na obiektówce się nie znam ale nie lepiej by było:
  1. <?php
  2. function bbcode($zmien)
  3. {
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  6. $zmien = str_replace(":)","<img src='smile.gif' />", $zmien);
  7. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  8. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  9. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  10. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  11. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  12. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  13. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  14. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  15. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  16. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  17.  
  18. return $zmien;
  19. }
  20. ?>


a wywołujesz tak:
  1. <?php
  2. $tresc = "jakiś sobie tam wpis:) pogrubiony i pokrzywiony;
  3.  
  4. echo bbcode($tresc);
  5. ?>



Co do paginacji: Poprzedni kod pisałem z palca krótsza wersja to będzie coś w deseń:

[php]
function paginacja($cnt, $i=4)
{
$page = $_GET['page']; //pobieramy aktualną stronę z adresu url
$page = ($page <= 0 OR empty($page))? 1: $page; //jeśli jest to pierwsza strona lub ktoś podał ujemną wartość zaczynamy od strony pierwszej
$start = $i*$page-$i; //od którego wpisu ma się zacząć wyświetlanie
$stron = $cnt/$i; //liczba stron

$stron_add = (($stron < round($stron)) OR ($stron > round($stron)))? $stron+1: $stron; //taki mały warunek korektujący działanie funkcji round
if($page > $stron_add) { $error = 'Brak danych'; } //jeśli nie mamy czego wyświetlić lub ktoś w adresie podał większą stronę niż obecnie istnieje wyświetlamy stosowny komunikat

$prewiev = ($page > 1)? '<a href="?page='.($page-1).'">Poprzednia</a>': 'Poprzednia'; //warunek sprawdzający czy jest poprzednia strona
$next = ($page < $stron)? '<a href="?page='.($page+1).'">Następna</a>': 'Następna'; //warunek sprawdzający czy jest następna strona strona
$panel = $prewiev.' | '.$page.' z '.round($stron).' | '.$next; //składamy panel do poruszania się "poprzednia | X z X | następna"

$out['error'] = $error; // błędy
$out['panel'] = $panel; //panel
$out['show'] = $start; //pierwszy argument w funckji LIMIT
$out['ile'] = $i; //drugi argument w funkcji LIMIT
$out['page'] = $page; // numer aktualnej strony

return $out; //zwracamy tablice z danymi
}

pozdrawiam Chmura
marcio
oki chcialem zapytac co to za blad
Cytat
Warning: Missing argument 1 for Ksiega::bbcode(), called in /var/www/klasa.php on line 54 and defined in /var/www/klasa.php on line 33

bo nie wiem bbcode dziala oprocze buziek mam nadzieje ze ktos pomoze
to jest bbcode
  1. <?php
  2. public function bbcode() {
  3. $zmien = htmlspecialchars(trim($this->message));
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  6. $zmien = str_replace(":)","<img src='smile.gif' />", $zmien);
  7. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  8. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  9. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  10. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  11. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  12. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  13. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  14. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  15. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  16. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  17. $this->message = $zmien;
  18. }
  19. ?>

a tak go wywoluje
  1. <?php
  2. public function Dodaj_wpis() {
  3.  
  4. $this->bbcode();
  5.  
  6. if(!empty($this->nick) && !empty($this->message))
  7. {
  8. //etc...
  9. ?>

i nie wiem o jaki argument im chodzi
Co do tego dzielenia na strony wykombinowalem cos takiego ale nie smiejcie sie ani nie bijcie bo musze sie dopiero polapac w php
tu jest kod <a href="http://wklej.org/id/6cbe09d16a" target="_blank">http://wklej.org/id/6cbe09d16a</a> bo nie chcialo dodac posta
ale skoro $i =drugi argument w funkcji LIMIT gdzie 2 arument funckji limit mowi ile mamy wyswietlic wiadomosci czyli w moim przypadku to 50 to moze zamiast te 4 w wywolaniu funckji dac 50?
i skoro $out['show'] = $start; 1 argumet funckji nie moge dac tego do funckji i skasowac to $this->start = $i*$page-$i; questionmark.gifw ogole to moze dzialac bo akurat nie mam pojecia na jakiej zasadzie ma to dzielic na strony
b_chmura
http://www.informel.pl/~bchmura/przyklad.phps

Ewentualne małe literówki
marcio
Oki mniej wiecej zrobilem taki kod jak mozesz to zobacz i dzieki za pomoc a co do bbcod'a to dalej nie wiem czemu jest blad i czemu nie chodza buzki sad.gif
http://cpaste.com/3260

P.S bledu juz nie ma poprawilem ale buzki jak nie chodzily tak nie chodza moze masz jakis pomysl?
b_chmura
można tak
  1. <?php
  2. $emoty = array(
  3. ":D" => "<img src=biggrin.gif />",
  4. ":)" => "<img src=smile.gif />",
  5. ":(" => "<img src=confused.gif />",
  6. ";p" => "<img src=tongue.gif />",
  7. ":]" => "<img src=cool.gif />",
  8. "[:" => "<img src=bigrazz.gif />",
  9. "()" => "<img src=wink.gif />",
  10. );
  11.  
  12. $zmien = strtr($zmien, $emoty);
  13. ?>
marcio
oki nie wiem jaka jest roznica miedzy str_replace() i strtr() ale przy strtr() gdy wpisze w formie ":)" wiadomosc sie dodaje lecz nie zamienia na obrazek lecz w przypadku str_replace() tak jakby nie widzial ani ciagu ani emotki i nic nie dodawal wiec nie wiem czemu nie dziala zrobilem tak tylko dla jednej emotki
  1. <?php
  2. $zmien = strtr($zmien,":)","<img src='smile.gif' />");
  3. ?>

emotka smile.gif jest w /var/www/ i nie dziala tzn nie widac jej
i mam 2 pytanie
1)jaka jest roznica pomiedzy str_replace(0 i strtr() oprcz tego ze argumenty funckji zmieniaja kolejnosc??czy jest jakas wielka roznica?i czy te funckje maja np jakies swoje zastosowania np str_replace(0 lepiej uzywac do podmiany ciagow?
2) czy ten kod co podalem co dzieli na strony jest mniej wiecej dobry a jak nie czy ktos moze mi pokazac co tam zle zrobilem?
b_chmura
1. hmm
zamiant:
  1. <?php
  2. $zmien = strtr($zmien,":)","<img src='smile.gif' />");
  3. ?>

daj:
  1. <?php
  2. $zmien = strtr($zmien,":)","<img src='/var/www/smile.gif' />"); //docelową ścieżkę gdzie przetrzymujesz emoty
  3. ?>


2.
Manual i jeszcze raz Manual

strtr" title="Zobacz w manualu PHP" target="_manual
str_replace" title="Zobacz w manualu PHP" target="_manual
marcio
b_chmura oki potem poczytam o roznicach.
Zauwazylem bardzo dziwna rzecz nie wiem czy dam rade ja opisac.A wiec przy takim bbcod'zie
  1. <?php
  2. public function bbcode() {
  3. $zmien = htmlspecialchars(trim($this->message));
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  6. $zmien = str_replace(":)","<img src='smile.gif' />", $zmien);
  7. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  8. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  9. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  10. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  11. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  12. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  13. $zmien = preg_replace("#[b](.*?)#si", "<b>1</b>", $zmien);
  14. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  15. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  16. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  17. $this->message = $zmien;
  18. }
  19. ?>

Jak idzie zauwazyc nie ma tam funckji strtr() I wszystkie tagi i url dzialaja ale buzki nie i jesli sprobuje wpisac w pole message kombinacje buzki to do bazy nic sie nie doda
Lecz przy takim bbcod'zie
  1. <?php
  2. public function bbcode() {
  3. $zmien = htmlspecialchars(trim($this->message));
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  6. $zmien = strtr($zmien,":)","<img src='/var/www/smile.gif' />"); 
  7. $zmien = str_replace(":(","<img src='confused.gif' />", $zmien);
  8. $zmien = str_replace(";p","<img src='tongue.gif' />", $zmien);
  9. $zmien = str_replace(":]","<img src='cool.gif' />", $zmien);
  10. $zmien = str_replace("[:","<img src='bigrazz.gif' />", $zmien);
  11. $zmien = str_replace("()","<img src='wink.gif' />", $zmien);
  12. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  13. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  14. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  15. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  16. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  17. $this->message = $zmien;
  18. }
  19. ?>

W tej sytuacji jesli wpisze anonim buzki wpis sie doda lecz buzki nie ma ale cos co zauwazylem ze jak wpisze url to nie dziala tzn w pasku pojawia mi sie cos takiego
Cytat

Takjakby te 3 funkcje sie mieszaly i teraz sproboje dac wszedzie te strtr(0 i zobacze czy bedzie to samo a jak nie to dla buziek bede musial napisac osobna funckje.

P.S i czy ten kod co dalem to dzielenia na strone jest dosyc dobry?

[/b]

ok pozmienialem i nie dziala musze zrobic 2 funckje i je wywolac ale problem jak cos takiego:
  1. <?php
  2. public function bbcode() {
  3. $zmien = htmlspecialchars(trim($this->message));
  4. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  5. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  6. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  7. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  8. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  9. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  10. $this->message = $zmien;
  11. }
  12. ?>

i druga
  1. <?php
  2. public function emotki() {
  3. $buzki = htmlspecialchars(trim($this->message));
  4. $buzki = str_replace(":D","<img src='biggrin.gif' />", $buzki); // i tu jak nie bedzie dzialac str_replace() dam tak jak mowiles strtr()
  5. $buzki = str_replace(":)","<img src='/var/www/smile.gif' />", $buzki); 
  6. $buzki = str_replace(":(","<img src='confused.gif' />", $buzki);
  7. $buzki = str_replace(";p","<img src='tongue.gif' />", $buzki);
  8. $buzki = str_replace(":]","<img src='cool.gif' />", $buzki);
  9. $buzki = str_replace("[:","<img src='bigrazz.gif' />", $buzki);
  10. $buzki = str_replace("()","<img src='wink.gif' />", $buzki);
  11. $this->message = $buzki;
  12. ?>

i teraz pytanie jak to wywolac jedna pod druga czyli tak
  1. <?php
  2. public function Dodaj_wpis() { //funkcja w ktorej wywoluje bbcoda i dziala
  3.  
  4. $this->bbcode();
  5. $this->emotki(); //tak mam wywolywac jesli sa 2 funckje i operuja na tej samej zmiennej??
  6.  
  7. if(!empty($this->nick) && !empty($this->message))
  8. {
  9. ?>
b_chmura
ajć a ja jednej rzeczy nie zauważyłem. Źle skonstruowałeś wyrażenie, wszystkie [ i ] masz zacytować (poprzedzić "\")

  1. <?php
  2. $co = preg_replace('#(.*?)#si', '<A HREF='http://1\" TARGET='_blank'>2</A>', $co);
  3. $co = preg_replace('#(.*?)#si', '<i>1</i>', $co);
  4. $co = preg_replace('#(.*?)#si', '<b>1</b>', $co);
  5. $co = preg_replace('#[ins](.*?)[/ins]#si', '<ins>1</ins>', $co);
  6. $co = preg_replace('#[small](.*?)[/small]#si', '<small>1</small>', $co);
  7. $co = preg_replace('#[big](.*?)[/big]#si', '<big>1</big>', $co);
  8. ?>


teraz ma być
marcio
ale mam te \ i / w kodie tylko jak je ty wklejam to mi je usuwa nie wiem czemu
  1. <?php
  2. $zmien = preg_replace("#(.*?)#si", "<i>1</i>", $zmien);
  3. $zmien = preg_replace("#(.*?)#si", "<b>1</b>", $zmien);
  4. $zmien = preg_replace("#[ins](.*?)[/ins]#si", "<ins>1</ins>", $zmien);
  5. $zmien = preg_replace("#[small](.*?)[/small]#si", "<small>1</small>", $zmien);
  6. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  7. ?>
b_chmura
chyba Ci nie pomogę... wina leży od strony obiektowego programowania, mi nieznane środowisko.

  1. <?php
  2. function bbcode($zmien) 
  3. {
  4. $zmien = htmlspecialchars(trim($zmien));
  5. $zmien = preg_replace("#(.*?)#si", "<A HREF=\"http://1\" TARGET=\"_blank\">2</A>", $zmien);
  6. $zmien = str_replace(":D","<img src='biggrin.gif' />", $zmien);
  7. //...
  8. $zmien = preg_replace("#[big](.*?)[/big]#si", "<big>1</big>", $zmien);
  9. return $zmien;
  10. }
  11. echo bbcode('darfksajfgasdjfh biggrin.gif biggrin.gif biggrin.gif [big]asdfsdafsadfs[/big]fsdfsdf');
  12. ?>


ten kod działa jak wprowadzić te Twoje śmieszne strzałeczki i $this'y - nie wiem biggrin.gif

Pozdrawiam
Chmura
marcio
masz racje OOP jest dziwne ale chcialem sie go nauczyc to bedzie moj ostatni kod w OOP biggrin.gif dzis juz jest pozno ale jutro jeszcze pokombinuje a jak nie to wywale emotki
A jak tam ten kod to dzielenie strony?
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.