Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]/[MySQL] Zliczanie liczby komentarzy, Optymalizacja
-Wieviór-
post
Post #1





Goście







Wyświetlam na stronie głównej newsy, przy każdym mam podaną ilość komentarzy.

W bazie danych są tabele:

Kod
news
id | tytul | tresc

komentarze
id | news_id | tresc


Do tej pory rozwiązywałem to tak, że był wczytywany news i do zliczania komentarzy taka instrukcja:
  1. <?
  2. $sql = "SELECT count(id) FROM komentarze WHERE news_id=$zmienna";
  3. $wykonaj = mysql_query($sql);
  4. $wynik = mysql_fetch_row($wykonaj);
  5. $ilosckomen = $wynik[0];
  6. ?>


No ale to na pewno nie jest najlepszy sposób. Teraz robię małą optymalizację i zastanawiam się jak to rozwiązać. Czy robić jakiś UNION, JOIN? Czy może dodać do tabeli news pole komentarze, i po prostu dodawać tam jedynkę przy każdym kolejnym dodawaniu komentarza? (to mi nieco nie pasuje, bo jeśli będę usuwał?)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
-Wieviór-
post
Post #2





Goście







Serwis jest w fazie (gazie! (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ) ale ta ilość komentarzy pokazuje się tylko dla ostatnich kilku newsów, więc nie byłoby problemu. Dzięki za wskazówki ;]

EDIT: A jeszcze jedno, czy jest sposób, żeby dodać po prostu 1 do pola INT, czy musiałbym wyciągać wartość, dodawać i zapisywać?

EDIT2: Dzięki ;]

Ten post edytował Wieviór 3.02.2008, 13:53:06
Go to the top of the page
+Quote Post
phpion
post
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(Wieviór @ 3.02.2008, 15:45:31 ) *
EDIT: A jeszcze jedno, czy jest sposób, żeby dodać po prostu 1 do pola INT, czy musiałbym wyciągać wartość, dodawać i zapisywać?

Jest:
  1. UPDATE tabela SET pole=pole+1 WHERE id=X;
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 11.10.2025 - 11:30