Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Ilość komentarzy
Forum PHP.pl > Forum > Przedszkole
Pcbecaw
  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
jaslanin
zainteresuj się podzapytaniami (ang. subquery)
Pcbecaw
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).
jaslanin
zobacz np. http://forum.php.pl/index.php?s=&showt...st&p=842281
Pcbecaw
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.
xxdrago
Jakbyś mógł pokazać tabelę cała. To może byłbym w stanie coś doradzić...
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.