Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Licznik komentarzy (PHP + mysql), problem
kimu
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 25.06.2007

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


Witam. Chciałbym zrobić licznik komentarzy który wyświetlał by się obok każdego dodanego tekstu. Czyli
obok każdego tekstu pojawiała by się odpowiednia do danego tekstu.

Puki co wygląda to tak (KLIK)

Gdzie każde "0" powinno być odpowiednią wartością odpowiadającą liczbie komentarzy danego tekstu. Tak
jednak nie jest.

Skrypt PHP w pliku "teksty.php" to:

  1. <?php
  2. $conn = mysql_connect("xxx","xxx","xxx");
  3. mysql_select_db("teksty");
  4. ?>
  5.  
  6. <?php
  7. $sql = 'SELECT * FROM `katalog`; ';
  8. $sqla = "SET CHARSET latin2";
  9. mysql_query($sqla);
  10. $sql = 'SELECT * FROM `katalog`; ';
  11. $wykonaj = mysql_query($sql);
  12. $sql3 = mysql_query("SELECT COUNT(*) as il_komentarzy FROM kom WHERE tek='".$_GET['id']."'");
  13. $row = mysql_fetch_array($sql3);
  14.  
  15.  
  16. while($wiersz = mysql_fetch_assoc($wykonaj)) {
  17. echo '<table border="0" width="100%">'.'<tr>'.'<td bgcolor="#758588">'.'<font size="2">'.$wiersz['nazwa'].'</font>'.'</td>'.'</tr>'.'</table><hr color="#758588" size=1 /><a href="wpis.php?id='.$wiersz['id'].'"></a>';
  18.  
  19. $sql1 = "SELECT * FROM `tekst` WHERE kat = '".$wiersz['id']."' ORDER BY id";
  20. $wykonaj1 = mysql_query($sql1);
  21.  
  22. while($wiersz1 = mysql_fetch_assoc($wykonaj1)) {
  23. echo '<table border="0" width="100%">'.'<tr>'.'<td bgcolor="#C1C9C9">'.'<font size="2">'.[b]$row['il_komentarzy'][/b].'- <a href="strona-teksty.php?id='.$wiersz1['id'].'">'.$wiersz1['tytul'].' </a>'.'</font>'.'</td>'.'</tr>'.'</table>';
  24. }
  25. echo '<br>';
  26. }
  27. mysql_close($conn);
  28. ?>


$sql3 = mysql_query("SELECT COUNT(*) as il_komentarzy FROM kom WHERE tek='".$_GET['id']."'");
$row = mysql_fetch_array($sql3);

$row['il_komentarzy']


Gdzie część pogrubiona skryptu odpowiada za wyświetlane zera.

Baza danych wygląda następująco:

Teksty:
* katalog
* kom
- id, imie, tresc, tek (id jest pojedyncze dla jednego komentarza, tek odpowiada przynależności do danego tekstu).
* tekst
- id, tytul, tekst, kat (id jest pjedyncze dla jednego tekstu i odpowiada wartości tek w komentarzach).


Czy ktoś może wie co musze zrobić aby liczba komentarzy była wyświetlana poprawnie?

Ten post edytował kimu 25.06.2007, 21:39:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
defrag
post
Post #2





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 15.01.2007

Ostrzeżenie: (10%)
X----


Cytat(Strzałek @ 26.06.2007, 13:46:47 ) *
Ja wtrącę swoje parę groszy.

Otóż takie liczenie komentarzy jest mało wydajne. Wyobraź sobie że na stronie głównej masz 10 newsów i do każdego wykonujesz zapytanie z COUNT'em żeby pokazać ile jest komentarzy. Masz 1 zapytanie + 10 + jeszcze jakieś inne. Nie fajnie, nie wspominając o tym że przy dużeeej ilości komentarzy COUNT nie jest błyskawicą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Zdecydowanie lepszym rozwiązaniem jest trzymanie w kolumnie z newsami czy czymś innym ilości komentarzy.

Przy dodaniu i usuwaniu komentarza zrobić UPDATE, żeby licznik się zgadzał i gra gitara (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Zgadzam sie w 100% ze strzalkiem. Jesli masz mysql 5 to latwym rozwiazaniem jest ustawienie triggera ktory bedzie inkrementowal warotsc danego pola przy kazym insercie
  1. DELIMITER $$
  2.  
  3. CREATE TRIGGER groupDeleteHandler
  4. AFTER INSERT ON groups
  5. FOR EACH ROW BEGIN UPDATE group_categories SET group_count = group_count + 1 WHERE id = OLD.category_id;
  6. END;
  7.  
  8. $$
Go to the top of the page
+Quote Post
cicik
post
Post #3





Grupa: Zarejestrowani
Postów: 219
Pomógł: 5
Dołączył: 18.07.2006
Skąd: Piekary Śląskie

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


Cytat(defrag @ 26.06.2007, 17:32:46 ) *
Zgadzam sie w 100% ze strzalkiem. Jesli masz mysql 5 to latwym rozwiazaniem jest ustawienie triggera ktory bedzie inkrementowal warotsc danego pola przy kazym insercie


Tylko jeszcze znajdź hosting, na którym admin da ci uprawnienia do tworzenia triggerów.
Mam nadzieję, że zrobią tak, żeby do ich tworzenia nie trzeba było być superuserem.
Go to the top of the page
+Quote Post
defrag
post
Post #4





Grupa: Zarejestrowani
Postów: 82
Pomógł: 3
Dołączył: 15.01.2007

Ostrzeżenie: (10%)
X----


Cytat(cicik @ 26.06.2007, 19:01:21 ) *
Tylko jeszcze znajdź hosting, na którym admin da ci uprawnienia do tworzenia triggerów.
Mam nadzieję, że zrobią tak, żeby do ich tworzenia nie trzeba było być superuserem.


No masz racje z mysql 5 z triggerami w polsce sie jeszcze nie spotkalem, jednak mialem okazje pracowac na hostach z niemiec, ktore udostepnialy ten "ficzer":) Tak to juz jest z MySQL'em.
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:45