Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Komentarze w formie drzewka
wujek2009
post 9.07.2010, 18:04:17
Post #1





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Cześć.

Widziałem taki mechanizm na blogach opartych na Wordpress (np. www, screen).

Nie mam pojęcia jak zabrać się za to, chciałem spróbować bazować na mechanizmie WP, ale standardowo tego nie ma w skrypcie - a na supporcie WP nie potrafią mi napisać nazwy tej wtyczki.
Go to the top of the page
+Quote Post
pedro84
post 9.07.2010, 18:22:33
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Zwykłe zagnieżdżone komentarze. Jak to nie ma w skrypcie? biggrin.gif Odpowiem, jest. Zobacz funkcję wp_list_comments()

Edit:
Ktoś tu chyba swoje posty usuwa:
Cytat
shreker odpowiedział na temat o nazwie "[PHP]zakodowanie i zabezpieczenie stopki" , który subskrybujesz.

Temat możesz znaleźć tu:

http://forum.php.pl/index.php?showtopic=15...view=getnewpost

Może być więcej odpowiedzi w tym wątku, ale tylko 1 e-mail dziennie jest wysyłany dla każdego subskrybowanego tematu.
Wynika to z limitu ilości e-mail'i wysyłanych do Twojej skrzynki odbiorczej.


Ten post edytował pedro84 9.07.2010, 18:30:39


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
wujek2009
post 9.07.2010, 18:44:49
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


Znalazłem funkcje wp_list_comments() w comment-template.php, ale nie mogę znaleźć wywołania tej funkcji, w jakim pliku to jest?
Poza tym zainstalowałem Polski WordPress 2.8.4 PL i używam standardowego stylu - ani nie mogę odpowiadać na czyjeś wypowiedzi przez co nie tworzy się zagnieżdżanie.

Cytat
Ktoś tu chyba swoje posty usuwa:


Pomyłka chyba :?
Go to the top of the page
+Quote Post
pedro84
post 9.07.2010, 18:47:41
Post #4





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


W Codexie znajdziesz info na ten temat. A ustawiłeś zagnieżdżony komentarze?

Możliwe, że pomyłka, nie wiem.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
muk4
post 9.07.2010, 19:02:19
Post #5





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Jak masz komentarze oparte o MySQL to ja bym to zrobił tak:
w tabeli z komentarzami dał dodatkowo 1 pole
Np.
|id||news_id|reply|author|content|date|

Wszystkie pola chyba zrozumiałe oprócz reply:
Jeżeli wysłany komentarz to po prostu zwykły komentarz do wpisu na stronie (newsa, notki) to reply = 0
Jeżeli jest to odpowiedź na inny komentarz to wtedy w reply znajduje się id tego komentarza.

Ten post edytował muk4 9.07.2010, 19:02:33
Go to the top of the page
+Quote Post
pedro84
post 9.07.2010, 19:08:22
Post #6





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


Cytat(muk4 @ 9.07.2010, 20:02:19 ) *
Jak masz komentarze oparte o MySQL to ja bym to zrobił tak:
w tabeli z komentarzami dał dodatkowo 1 pole
Np.
|id||news_id|reply|author|content|date|

Wszystkie pola chyba zrozumiałe oprócz reply:
Jeżeli wysłany komentarz to po prostu zwykły komentarz do wpisu na stronie (newsa, notki) to reply = 0
Jeżeli jest to odpowiedź na inny komentarz to wtedy w reply znajduje się id tego komentarza.

Wiesz co to Wordpress? Bo wątpu to Ty nie przeczytałeś.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
muk4
post 9.07.2010, 19:16:23
Post #7





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


@PEDRO84
Nie za bardzo rozumiem o co ci chodzi.

Cytat
chciałem spróbować bazować na mechanizmie WP

Chciałem to czas przeszły, więc uważam że interesują go wszystkie sposoby.

Ten post edytował muk4 9.07.2010, 19:16:37
Go to the top of the page
+Quote Post
Hoku
post 9.07.2010, 20:37:37
Post #8





Grupa: Zarejestrowani
Postów: 49
Pomógł: 2
Dołączył: 6.07.2010

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


a może rozbicie na 2 tabele w bazie komentarzy w drzewo 'rodzic_id' i 'id_posta'
a w drugiej dane 'id_dokumentu' 'id_posta' i zawartość komentarza.
dla pobranego posta z danych wziąć id_posta wyszukać w tabeli drzewo w polu rodzic_id i dla kazdego otrzymanego wyniku pobrać dane z tabeli dane z id otrzymanego jako dziecko.
Go to the top of the page
+Quote Post
wujek2009
post 10.07.2010, 09:16:38
Post #9





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


OK już mam mniej więcej zarys w głowie, ale w jaki sposób "przesortować" tablice ARRAY (z rekordami komentarzy) tak aby post dziedziczący był pod właściwym postem? W tej chwili to wyświetla się tak:

Kod
#1 komentarz
#2 komentarz (tu powinien być dziedzic o id #5, #6)
#3 komentarz
#4 komentarz
----- #5 komentarz (powinien pod #2 się znaleźć) [lekko wysunięty*]
----  #6 komentarz (j/w) [lekko wysunięty*]


W pętli foreach przy wyświetlaniu komentarzy dodałem taki wpis:
  1. echo '<li '. ( ($all_txt['wychylenie'] != 0) ? 'style="margin-left: 15px;"' : '') .'> (..) </li>';
Go to the top of the page
+Quote Post
muk4
post 10.07.2010, 11:20:12
Post #10





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Po każdym komentarzu musisz sprawdzić czy nie ma odpowiedzi na ten komentarz (jeśli zrobiłeś bazę tak jak ja ci powiedziałem):
  1. SELECT * FROM `komentarze` WHERE `reply`= 'id_komentarza_rodzica'
Go to the top of the page
+Quote Post
kipero
post 10.07.2010, 11:22:28
Post #11





Grupa: Zarejestrowani
Postów: 233
Pomógł: 50
Dołączył: 28.10.2006
Skąd: Radom

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


Ja na Twoim miejscu oparłbym to na drzewku Nested Sets.
http://dev.mysql.com/tech-resources/articl...hical-data.html
http://artykuly.zyxist.com/czytaj.php/drzewa_w_php_i_mysql


--------------------
Go to the top of the page
+Quote Post
wujek2009
post 10.07.2010, 18:48:12
Post #12





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


kipero pierwszy link pokazuje mi prawidłową strukturę bazy + przykładowy select - taki etap to ja już mam za sobą. Potrzebuje tylko sortowania (patrz post nr#9).

muk4 - strukturę mam tak jak napisałeś; nowa kolumna w tabeli "komentarze" - tylko trochę "niewygodnie" to będzie sprawdzać każdy komentarz czy ma rodzica; szczególnie jak komentarz będzie miał parę rodziców i tylko zwiększę sobie liczbę zapytań.

Cały projekt mam, tylko nie wiem jak "posortować" tablice pobraną - wszystko opisałem w poście #9
Go to the top of the page
+Quote Post
muk4
post 10.07.2010, 19:52:23
Post #13





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

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


Wyskrobałem takie coś. Z ciekawości chciałem sprawdzić czy zadziała.
  1. function show_comments($news_id, $comm_id=0, $nest_lvl=0){
  2. $margin_value = $nest_lvl*15;
  3. $res = mysql_query("SELECT * FROM `komentarze` WHERE `reply`='$comm_id' AND `news_id`='$news_id' ORDER BY `date`");
  4. if(mysql_num_rows($res) == '0'){ return 0;
  5. }else{
  6. while($koment = mysql_fetch_assoc($res)){
  7. echo "<span style=\"margin-left:{$margin_value}px;\">{$koment['id']} | {$koment['reply']} | {$koment['content']} | {$koment['date']} </span><br />";
  8. show_comments($news_id, $koment['id'], $nest_lvl+1);
  9. }
  10. }
  11. };
  12. //Sposób użycia
  13. //po połączeniu z bazą OFC
  14. $id_newsa = 5; //jakieś tam id newsa, notki
  15. show_comments($id_newsa);


Tak to wygląda u mnie:

OFC zmień sobie jak chcesz tylko zostaw ten margines w spokoju i będzie dobrze smile.gif

Ten post edytował muk4 10.07.2010, 19:59:46
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 19:02