Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Ilość komentarzy
Pcbecaw
post
Post #1





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


  1. $sql = "SELECT `id`, DATE_FORMAT(`data`, '%d.%m.%Y, %H:%i') AS datas, `temat`,`opis`,`tresc`,`obrazek`,`uni`,`url`,`autor`,`vote` FROM $tbl_name group by id order by data DESC LIMIT $start, $limit";
  2. $xyz = mysql_query(
  3. "SELECT COUNT(*) ".
  4. "FROM newsy, komentarze ".
  5. "WHERE newsy.url = komentarze.url") or die(mysql_error());
  6. $blablabla = mysql_result($xyz,0);
  7. $result = mysql_query($sql);

Powyższym kodem chcę wyświetlać ilość komentarzy (do każdego newsa wybranego z '$sql' [wyświetla 10 na stronie]). Działa źle, ponieważ wyświetla mi w każdym newsie na stronie głównej tę samą ilość komentarzy i prawidłowo to robi, ponieważ źle jest skonstruowany warunek. Zlicza mi gdzie url i url w innej tabeli jest takie samo i pokazuje ilość, ale zlicza mi wszystko, a nie selekcjonuje do poszczególnego newsa osobno. Moje pytanie teraz: Jak zrobić, żeby nie było potrzeby robienia do każdego newsa nowej tabeli z komentarzami, a zliczało mi ilość komentarzy do każdego newsa osobno.

Gdyby było potrzebne, to tabela dla komentarzy ma pola: id, url, nick, data, ip i komentarz
a tabela dla newsow (z tych istotnych tylko pól) ma id, url (to ma się zgadzać z url z tabeli dla komentarzy, jednak zlicza mi to wszystko i nie przyporządkowuje do danego newsa osobno, jak już pisałem wyżej).

Jak ułożyć ten warunek WHERE, żeby było prawidłowo? Chodzi mi o popularny efekt z różnych stron, na których na stronie głównej jest spis newsów i pod każdym jest ilość komentarzy.
Bardzo proszę o pomoc, pozdrawiam
Go to the top of the page
+Quote Post
jaslanin
post
Post #2





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


zainteresuj się podzapytaniami (ang. subquery)


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #3





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


przeczytałem to - https://docs.google.com/viewer?a=v&q=ca...JJKKA&pli=1

ale z tego wciąż nie rozumiem, jaki warunek zastosować. Rozumiem, że można zagnieździć, ale logicznie nie wiem jak to zaplanować (pisząc po polsku, nie w składni php).
Go to the top of the page
+Quote Post
jaslanin
post
Post #4





Grupa: Zarejestrowani
Postów: 511
Pomógł: 143
Dołączył: 13.03.2010
Skąd: Jasło

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


zobacz np. http://forum.php.pl/index.php?s=&showt...st&p=842281


--------------------
Good luck and happy PHP'ing
Go to the top of the page
+Quote Post
Pcbecaw
post
Post #5





Grupa: Zarejestrowani
Postów: 236
Pomógł: 0
Dołączył: 4.06.2011

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


Kombinowałem jakoś tak:
  1. $sql = "SELECT `id`, DATE_FORMAT(`data`, '%d.%m.%Y, %H:%i') AS datas, `temat`,`opis`,`tresc`,`obrazek`,`uni`,`url`,`autor`,`vote`, (SELECT COUNT(*) ".
  2. "FROM newsy, komentarze ".
  3. "WHERE newsy.url = komentarze.url) FROM $tbl_name group by id order by data DESC LIMIT $start, $limit";
  4. $result = mysql_query($sql);

ale żadnych efektów. Błędów w prawdzie nie wyświetla, ale efektów nie ma. Zapewne źle to zrobiłem, ale wciąż nie wiem jak to po polsku napisać, żeby indywidualizować poszczególne rekordy i do każdego przypisywać inną ilość komentarzy.
Go to the top of the page
+Quote Post
xxdrago
post
Post #6





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Jakbyś mógł pokazać tabelę cała. To może byłbym w stanie coś doradzić...


--------------------
GG: 10972302 :)
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 Aktualny czas: 20.08.2025 - 08:47