Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Smarty]Pobieranie ilosci rekordow dla jednego rekordu
Forum PHP.pl > Forum > Gotowe rozwiązania > Systemy szablonów
Keenic
Napisalem w PHP kod do sprawdania ilosci komentarzy dla danego newsa. Teraz chcialbym to przezucic na Smarty i nie wiem jak.

pobieranie ilosci
  1. <?php
  2. $newsy = array();
  3. $sql = mysql_query("SELECT * FROM news ORDER BY id DESC LIMIT ".$styl1['newsy']."");
  4. while($row = mysql_fetch_array($sql)){
  5. $ile = mysql_query("SELECT * FROM komentarze WHERE id ='".$row['id']."' and co ='n'");
  6. $i = mysql_num_rows($ile);
  7. $newsy[] = $row;
  8. $komenty[] = $i;
  9. }
  10. ?>


wyswietlanie ilosci
  1. {foreach item=news from=$newsy}
  2. <div class="news-tytul"><a href="index.php?wiecej={$news.id}">{$news.tytul}</a></div>
  3. <div class="news-tresc">{$news.wstep}</div>
  4. <div class="news-stopka">{$u} | {$news.czas} {$news.czas1} | Komentarzy: {section name=k loop=$komenty}{$komenty[k]}{/section}</div>
  5. {/foreach}


Co prawda wyswietlaja mi sie ilosci komentarzy, ale przy kazdym newsie pokazuje mi sie wynik wszystkich (nie lacznie, jedno obok drugiego)
I teraz moje pytanie. Jak sprawic aby obok jednego newsa wyswietlala sie tylko ta wartosc, ktora wskazuje ilosc komentarzy.
PiotrLegnica
Na przykład (z pamięci, może nie działać od razu):
  1. <?php
  2. $sql = mysql_query('SELECT n.*, COUNT(DISTINCT k.id) AS iloscKomentarzy
  3. FROM news n 
  4. LEFT JOIN komentarze k ON (k.id = n.id AND k.co = 'n'
  5. GROUP BY n.id
  6. ORDER BY n.id
  7. DESC LIMIT '.(int)$styl1['newsy']) or exit(mysql_error());
  8. while (($row = mysql_fetch_array($sql)) !== NULL) {
  9.  $newsy[] = $row;
  10. }
  11. ?>

Najlepiej byłoby, gdybyś ilość komentarzy przeliczał przy ich dodawaniu/usuwaniu i przechowywał jako pole w tabeli news.

  1. {foreach item=news from=$newsy}
  2. <div class="news-tytul"><a href="index.php?wiecej={$news.id}">{$news.tytul}</a></div>
  3. <div class="news-tresc">{$news.wstep}</div>
  4. <div class="news-stopka">{$u} | {$news.czas} {$news.czas1} | Komentarzy: {$news.iloscKomentarzy}</div>
  5. {/foreach}
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.