Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: blog -> komentowanie postów
Forum PHP.pl > Forum > PHP
Apo
Witam
Pisze właśnie swojego bloga w php.
Dziala na mysql i mam odnośnie niego kilka pytań.
Kiedy dodaje notke to dodaje mi sie wpis do bazy.

|id|data|wpis|wpis_dlugi|

No i teraz chciałem to tych notek dodać komentarze.
Ale nie wiem jak to rozwiązać. Czy robić nową tabele i dodawać komentarze w ten sposób:

|id|id_notki|autor|wpis|data|ip

No i potem przy wyświetlaniu konkretnej notki wyszukiwac odpowiednie komentarze i je wyświetlać.
Prosze o wasze sugestie oraz co będzie najwydajniejsze.
strife
Rozwiązanie numer dwa jest najlepsze, czyli stworzyć kolejną tabelę z komentarzami. Zobacz jak to wygląda w Wordpress'ie. winksmiley.jpg
Ociu
Pierwsze jest dobre, gdy dodasz tylko jeden koment, a co jeśli będzie ich więcej ?
Apo
Cytat
Pierwsze jest dobre, gdy dodasz tylko jeden koment, a co jeśli będzie ich więcej ?

No właśnie też sie tak zastanawiałem tongue.gif Mam jeszcze pytanie ale troche offtopic jak to zapisać krucej:
"SELECT id, tytul, wpis FROM posty WHERE id LIKE '%$search%' OR itytul LIKE '%$search%' OR wpis LIKE '%$search%'";
(chce pozbyc sie tych or)
ave
ja proponuje Ci jeszcze pole ilosc_komentarzy w tabeli z notkami, wtedy niebedziesz zliczal co wywowalenie storny glownej ilosci komentow.
bigZbig
Mozesz tez podejsc do tego korzystajac z koncepcji drzewa. Czym sie rozni twoj wpis od komentarzy? Jedynie autorstwem i tym ze komentarze sa podrzedne wzgledem twoich wpisow. Zatem tabele z notkami wystaczy wzbogacic o dwa pola

|id|data|wpis|wpis_dlugi|autor|id_notatki|

Zapytanie wyswietlajace notatki bedzie wygladalo tak:
  1. <?php
  2.  
  3. // Zakladamy ze wszystkie notatki dla pola id_notatki maja wartosc 0 (nalezy unikac jesli to mozliwe wartosci null w bazach danych i ustawiac war
    tosci domyslne)
  4. $query = 'SELECT id, data, wpis, wpis_dlugi, autor FROM Notatki WHERE id_notatki=0';
  5.  
  6. ?>


Zapytanie wyswietlajace komentarze do notatki o przykladowym id = 57:

  1. <?php
  2.  
  3. $query = 'SELECT id, data, wpis, wpis_dlugi, autor FROM Notatki WHERE id_notatki=57';
  4.  
  5. ?>


Zapytanie zliczajace komentarze dla notatki o przykladowym id = 57:
  1. <?php
  2.  
  3. $query = 'SELECT count(*) as liczba_komentarzy FROM Notatki WHERE id_notatki=57';
  4.  
  5. ?>


Zaleta tego rozwiazania jest to, ze mozna zastosowac te same formularze do edycji notatek i komentarzy.
Ociu
Czytałem kiedyś blog Anakina. Jadąc na MySQL, możesz skorzystać z takiego czegoś:
  1. SELECT SQL_CALC_FOUND_ROWS *
  2. FROM tabela ORDER BY pole LIMIT 10
  3. SELECT FOUND_ROWS()


polecam http://anakin.us/blog/obliczanie-ilosci-wierszy/#comments

pozdrawiam
Athlan
Ja bym to zrobił tak, że przy wyświetlaniu komentarzy zaliczamy waruneczek WHERE id='.$array['numer_notki'].', no i problem rozwiązane...

Jak na mnie to banał, rusz głową.

Pozr. dry.gif
Ociu
Można to zrobić tak:
  1. <?php
  2. function getNotes() {
  3. $sql = mysql_query("SELECT * FROM notes");
  4. while($row = mysql_fetch_array($sql)) {
  5. # wyswietlanie etc.
  6. getComments($row['id']);
  7. }
  8. }
  9.  
  10. function getComments($note_id) {
  11. # tu sprawdzanie czy arg. jest poprawny
  12. $sql = mysql_query("SELECT * FROM comments WHERE note_id=". $note_id ."");
  13. while($row = mysql_fetch_array($sql)) { /* tu cale te wyswietlanie */ }
  14. }
  15. ?>
Apo
Cytat
Ja bym to zrobił tak, że przy wyświetlaniu komentarzy zaliczamy waruneczek WHERE id='.$array['numer_notki'].', no i problem rozwiązane...

Jak na mnie to banał, rusz głową.

To ty rusz głową i przeczytaj posty!

Ale już problem rozwiązałem. Wszystko jest w jednej tabeli.
No i jest tam kilka dodatkowych pól jak ip i id_newsa.
No i teraz gdy zostanie dodana zwykła notka to id_newsa = costam a gdy jest to komentarz to id_newsa = 5 (<---id danej notki)
No i przy wyświetlaniu komentów daje WHERE id_newsa='.$_GET['nr'];
dzieki za sugestie
bigZbig
@Ociu - a propos Twojego rozwiazania dotyczacego liczenia komentarzy - poczytaj temat while i SELECT COOUNT(*)
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.