Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Komentarze do newsów
Forum PHP.pl > Forum > Przedszkole
Gość_Dominik
Witam
Mam taki problem:
Zrobiłem sobie system newsów lecz zapomniałem o komentarzach. Nie wiem jak je wstawić tak aby pod każdym newsem mogły znaleść się komentarze a także można było zliczyć ile jest komentarzy do danego newsa.
vieri_pl
newsy masz w mysql czy na plikach tekstowych ?
Guest
W mysql. Tabela nazywa się news a w niej są pola ID(klucz podstawowy), tytul,tresc,autor,data.
pEbE
robisz nowa tabele dla komentow i edytujesz plik z newsami, to 5 minut roboty z php
piotrekkr
robisz tabele np
  1. CREATE TABLE `News_Komentarze` (`KomentarzId` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `NewsId` INTEGER UNSIGNED NOT NULL, `Tytul` VARCHAR(100), `Tresc ` TEXT NOT NULL,`Podpis` VARCHAR(50) NOT NULL, `Data` DATETIME NOT NULL);


zeby zliczyc komentarze do newsa uzywasz zapytania

  1. SELECT COUNT(*)
  2. FROM `News_Komentarze`
  3. WHERE `NewsId`='numer_newsa';


no i do dodawania robisz poprostu formularz dodawania newsa i odpowiednim zapytaniam umieszczasz dane w bazie podobnie z wyswietlaniem. To nie jest jakies bardzo trudne smile.gif
Lee
co wy się przy tym swoim zapytaniu upraliście, mnie gó**o ono dało (bo nie zrozumiałem, więc On też może nie załapać o co koman), zrobiłem poprostu tak:
Oczywiście to zadziała, jak się korzysta z foreach() winksmiley.jpg
  1. <?php
  2.  
  3.  
  4. // Pobiera dane z tabeli z newsami i robi z tego tablice
  5. $wykonaj = mysql_query("SELECT * FROM news WHERE id ORDER by id DESC");
  6.  while ($wynik = mysql_fetch_assoc($wykonaj)){
  7. $aNewsList[] = $wynik;
  8.  }
  9.  
  10. // Tego jeszcze nie rozkiminłem dlaczego tak musi być, ale tak musi być :]
  11. foreach($aNewsList as $aNews){
  12.  
  13. // w zapytaniu nie mozna walnąć tego drugiego więc przypisuje do zmiennej
  14. $id = $aNews['id'];
  15. $wykonaj = mysql_query("SELECT nid FROM comments WHERE nid=$id"); // nid to tabela odpowiadająca id do którego jest news
  16. $ile_kom = mysql_num_rows($wykonaj); // zmienna, która wyświetla ile jest komentów do danego newsa
  17.  
  18. echo '$ile_kom'; // To wyświetli Ci ile komentarzy, poprostu walniesz se to do tabelki z newsem i g
    itara ;)
  19. }
  20.  
  21. // P.S:
  22. wewnętrz foreach jeżeli chcesz wywołać tytuł newsa do dajesz $aNews['nazwa_kolumny_z_tytulami_newsów'] itd.
  23.  
  24. ?>


oczywiście jak jest się szczypiorkiem to niekoniecznie się zrozumie 8)
LBO
przy zliczaniu ilosci komentarzy, posluchaj porady ~piotrekkr'a

Kod
SELECT nid
FROM comments
WHERE nid=$id

zwroci ci wszystkie nid... po co? potem uzywasz mysql_num_rows()" title="Zobacz w manualu php" target="_manual... jak dla mnie strata czasu (wiem, wiem, ze to mikrosekundy, ale najlepiej nawyki wyrabiac za wczasu), skoro zapytanie
Kod
SELECT COUNT(*)
FROM comments
WHERE nid='$id'

zwroci Tobie od razu to czego szukasz (liczbe komentarzy dla danego newsa
Lee
Może wytłumaczcie mu jak to ma wygladac w kodzie php, bo raczje samo zapytanie mu za wiele nie powie...
LBO
  1. <?php
  2.  
  3. $id = $aNews['id'];
  4. $wykonaj = mysql_query("SELECT nid FROM comments WHERE nid=$id");
  5. $ile_kom = mysql_fetch_row($wykonaj);
  6. print($ile_kom[0]);
  7.  
  8. ?>


i jeszcze jedno
  1. <?php
  2.  
  3. echo '$ile_kom';
  4.  
  5. ?>

wyswietliło by ci string $ile_kom a nie wartość zmiennej...
Gość_Dominik
Okej dzięki serdeczne już zrozumiałem.
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.