Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wyliczanie średniej arytmetycznej na podstawie rekordów w bazie
Forum PHP.pl > Forum > Przedszkole
PiNkOs
No więc problem w tym, że zwraca mi tylko jedną ocenę...

Kod:

  1. <?php
  2.  
  3.  
  4. include("functions.php");
  5.  
  6. head("Poradniki");
  7. ?>
  8.  
  9. <div class="contentLayout">
  10. <div class="content">
  11. <div class="Post">
  12. <div class="Post-body">
  13. <div class="Post-inner">
  14. <h2 class="PostHeaderIcon-wrapper">
  15. <span class="PostHeader">Poradniki</span>
  16. </h2>
  17. <div class="PostContent">
  18.  
  19. <?
  20.  
  21. //this
  22.  
  23. if($_GET['id'] == TRUE){
  24. if(is_numeric($_GET['id']) == TRUE){
  25. $selkat = mysql_query("SELECT `nazwa` FROM `kategorie_porad` WHERE `id`='".htmlspecialchars($_GET['id'])."'");
  26. $selkatnum = mysql_num_rows($selkat);
  27. if($selkatnum == 1){
  28. $selkatrow = mysql_fetch_assoc($selkat);
  29. echo "<h2>".$selkatrow['nazwa']."</h2>";
  30. $selpor = mysql_query("SELECT * FROM `tutoriale` WHERE `id_kat`='".htmlspecialchars($_GET['id'])."'");
  31. $selpornum = mysql_num_rows($selpor);
  32. if($selpornum != 0){
  33. echo "<table width='100%' border='1' rules='all'>";
  34. echo "<tr><th>Tytuł</th><th>Oglądany</th><th>Koszt [pkt]</th><th>Komentarzy</th><th>Ocena</th></tr>";
  35. while($selporrow = mysql_fetch_assoc($selpor)){
  36. $selocena = mysql_query("SELECT * FROM `ocena_porad` WHERE `id_wyd`='".$selporrow['id']."'");
  37. $selocenanum = mysql_num_rows($selocena);
  38. if($selocenanum != 0){
  39. while($selocenaarray = mysql_fetch_assoc($selocena)){
  40. $sumaocen = $sumaocen + $selocenaarray['ocena'];
  41. }
  42. $ocena=$sumaocen / $selocenanum;
  43. }else{
  44. $ocena = "N/a";
  45. }
  46. echo "<tr><td><a href='detailsporad.php?id=".$selporrow['id']."'>".$selporrow['tytul']."</a></td><td>".$selporrow['viewer']."</td><td>x</td><td>x</td><td>".round($ocena)."</td></tr>";
  47. }
  48. echo "</table>";
  49. }else{
  50. echo "<i>Nic tutaj nie ma!</i>";
  51. }
  52. }
  53. }
  54. }elseif($_GET['goto'] == 'index'){
  55. echo "<h2>Poradniki</h2>";
  56. }
  57.  
  58. ?>
  59.  
  60.  
  61. </div>
  62. <div class="cleared"></div>
  63. </div>
  64.  
  65. </div>
  66. </div>
  67. </div>
  68. </body>
  69. <?
  70. foot();
  71.  
  72. ?>


Natomiast na stronie mam źle :-/

Oceny [w bazie]:
Instalacja WarCraft: 5;1;1; [średnia: 2]
Internetowy: brak ocen [N/a]
Cos nowego: 6;5; [średnia 6]

A, na site mam tak:



[Zaraz bedzie dalsza część]

W pliku [szególy o poradniku] jest ok:


Średnia się zgadza...


Tutaj także...

[Zaraz bedzie dalsza część]

Plik [szczególy poradnika] wygląda tak:

  1. <?php
  2.  
  3. (...)
  4.  
  5. //this
  6.  
  7. if($_GET['id'] == TRUE){
  8. if(is_numeric($_GET['id']) == TRUE){
  9. $seldetailspor = mysql_query("SELECT * FROM `tutoriale` WHERE `id`='".$_GET['id']."'");
  10. $seldetailspornum = mysql_num_rows($seldetailspor);
  11. if($seldetailspornum == 1){
  12. $seldetailsporrow = mysql_fetch_assoc($seldetailspor);
  13. echo "<h2>".htmlspecialchars($seldetailsporrow['tytul'])."</h2>";
  14. echo BBCode(htmlspecialchars($seldetailsporrow['opis']));
  15. echo "<br /><hr />";
  16. echo "<form action='addocena.php?id=".htmlspecialchars($_GET['id'])."&add=ocena' method='post'>Ocena: <select name='ocena'><option value='6'>6 - super!</option><option value='5'>5 - wspaniałe!</option><option value='4'>4 - dobre!</option><option value='3'>3 - może być!</option><option value='2'>2 - takie sobie!</option><option value='1'>1 - do niczego!</option></select> <input type='submit' name='submitocena' value='Oceń' /></form><br /><br />";
  17. echo "Aktualna ocena: ";
  18. $selocena = mysql_query("SELECT * FROM `ocena_porad` WHERE `id_wyd`='".htmlspecialchars($_GET['id'])."'");
  19. $selocenanum = mysql_num_rows($selocena);
  20. if($selocenanum != 0){
  21. while($selocenaarray = mysql_fetch_assoc($selocena)){
  22. $sumaocen = $sumaocen + $selocenaarray['ocena'];
  23. }
  24. $ocena=$sumaocen / $selocenanum;
  25. }else{
  26. $ocena = "N/a";
  27. }
  28. $ocenastar = round($ocena);
  29. if($ocenastar == 1){
  30. echo "<img src='images/star.gif' /> (1 - do niczego!)";
  31. }elseif($ocenastar == 2){
  32. echo "<img src='images/star.gif' /><img src='images/star.gif' /> (2 - takie sobie!)";
  33. }elseif($ocenastar == 3){
  34. echo "<img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /> (3 - może być!)";
  35. }elseif($ocenastar == 4){
  36. echo "<img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /> (4 - dobre!)";
  37. }elseif($ocenastar == 5){
  38. echo "<img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /> (5 - wspaniałe!)";
  39. }elseif($ocenastar == 6){
  40. echo "<img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /><img src='images/star.gif' /> (6 - super!)";
  41. }
  42. (...)
  43.  
  44. ?>


Niczym się nie różni [jeżeli chodzi o ocenę] brak tylko pętli while()
Max Damage
Zwraca średnią:
  1. SELECT *,AVG(ocena) AS srednia FROM ocena_porad WHERE id_wyd='".htmlspecialchars($_GET['id'])."'

Oddzielaj kod php od html. Polecam do tego szablony Smarty.
PiNkOs
Wielkie dzięki :-)
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.