Autor Zpráva
MikelCz
Profil
Zdravím, tohle je asi častej problém, ale i přes velkou snahu a hledání jsem se nedopídil k správný odpovědi a fungujícímu skriptu, pár jsem jich zkoušel přesně zkopírovat a jen změnit proměnný a pár jsem zkusil vymyslet sám, no.. k úspěchu to nevedlo. Chtěl bych vás tedy poprosit o radu v čem je chyba a proč to nefunguje
resp. funguje, ale ne podle představ. Skript co přikládám error nehází, ale u všech filmů vypisuje, že počet hodnocení je 1, což by mohlo být tím, že počítá jen to jedno už zprůměrované hodnocení (avg_mark), ale ani za boha mi nejde doklepat to do vítězného konce, aby to počítalo všechny k danýmu filmu.. výpis a zprůměrování funguje dobře, problém je čistě s tím výpisem počtu hodnocení.. díky za pomoc, jdu se v tom rejpat dál, ale z části spoléhám i na vaši pomoc :)

<?php
mysql_connect("mysql.wu.cz","nazev_databaze","*******");
  mysql_select_db("nazev_databaze");
$hodnoceni = mysql_query("SELECT AVG(hodnoceni) as avg_mark FROM `hodnoceni` where id =". $radek->id); //Výpis a zprůměrování hodnocení
echo "Celkový počet záznamů: " . mysql_num_rows($hodnoceni) . "\n"; //tohle by mělo vypsat počet hodnocení..
  
while ($rating = mysql_fetch_object($hodnoceni))
  { 

?>


<div class="hodnoceni">
<center>
<img src="img/hodnoceni.png">
<span class="pismohodnoceni">

<?=$rating->avg_mark?>%
</span>

</center>
</div>

<?php 
}
  mysql_free_result($hodnoceni);
?>
DJ Miky
Profil
Je to přesně tak, jak píšeš. mysql_num_rows() vrátí počet řádků, v tomto případě se ale vybere pouze jeden řádek s jednou hodnotou (průměrem). Nejsnazší řešení je dotazem vybrat i počet hodnocení, tedy do SQL dotazu doplnit COUNT(*) as pocet a počet hodnocení bude přístupný v $rating->pocet:

$hodnoceni = mysql_query("SELECT AVG(hodnoceni) as avg_mark, COUNT(*) as pocet FROM `hodnoceni` where id =". $radek->id);

while ($rating = mysql_fetch_object($hodnoceni))
  { 
echo $rating->pocet; // vypíše počet hodnocení
MikelCz
Profil
DJ Miky: Děkuju, Bůh ti zaplať za tvou laskavost ! :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0