Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Pobieranie danych z bazy danych
Forum PHP.pl > Forum > Przedszkole
soil
Witam,
dopiero raczkuje w temacie php/mysql w zwiazku z czym mam pytanie.

Mam tabele w bazie danych
  1. ocena
  2. 1
  3. 2
  4. 2
  5. 3
  6. 5
  7. 4
  8. 5
  9. 6
  10. 6


Nastepnie chce pobrac z tej tabeli dane, ale w taki sposob bym mogl wyswietlic ilosc danej oceny oraz srednia. W tej chwili zatrzymalem sie na:
  1. <form action="" method="post">
  2. <select name="ocena" onchange="this.form.submit()">
  3. <option value="">Wybierz ocene</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. <option value="3">3</option>
  7. <option value="4">4</option>
  8. <option value="5">5</option>
  9. <option value="6">6</option>
  10. </select>
  11. </form>
  12.  
  13. <?php
  14.  
  15.  
  16. $serwer = "localhost";  
  17. $login  = "root";
  18. $haslo  = "root";  
  19. $baza   = "szkola";
  20. $tabela = "oceny";  
  21.  
  22. $ocena = $_POST['ocena'];
  23.  
  24. if($ocena) {
  25.    
  26.  
  27.    if (mysql_connect($serwer, $login, $haslo) and mysql_select_db($baza)) {
  28.        
  29.        
  30.        $wynik = mysql_query("SELECT * FROM oceny WHERE ocena='$ocena'")
  31.        or die("Błąd w zapytaniu!");
  32.        
  33.        mysql_close();
  34.    }
  35.    else echo "Nie mogę połączyć się z bazą danych!";
  36.    
  37.    
  38.    while($rek = mysql_fetch_array($wynik)) {
  39.        echo $rek['ocena']." <br /> ";
  40.        
  41.  
  42.      
  43.    }
  44.    
  45. }
  46.  
  47. ?>


Prosze o podsuniecie rozwiazania. Poki co nie chcialby modyfikowac struktury tabeli, zrobie to dopiero w ostatecznosci.

Pozdrawiam,
Soil.
Foxx
Ilość danej oceny możesz obliczyć stosując COUNT:
  1. <?php
  2. $wynik = mysql_query("SELECT COUNT(*) FROM oceny WHERE ocena='".$ocena."'") or die("Błąd w zapytaniu!");
  3. ?>

Natomiast co do średniej to nie do końca rozumiem. Chyba nie chodzi Ci o średnią związaną z wybraną oceną, bo jezeli ktoś wybierze cokolwiek to średnia TEJ oceny będzie równa tej ocenie. Z czego chcesz liczyć średnią?
Jeżeli ze wszystkich ocen - użyj AVG(ocena)
damian_15
Jesli chcesz wyswietlic liste wszystkoich ocen oraz ich ilosci to proponuje takie zapytanie:
  1. SELECT ocena, count( * )
  2. FROM `oceny` GROUP BY ocena
soil
Dzieki, o to chodzilo! winksmiley.jpg



Kurcze, mam teraz inny problem. Mam taki kod:

  1. <?php
  2. $rezultat =mysql_query("SELECT ocena, count( * ) FROM `oceny` GROUP BY ocena ") or die("Błąd w zapytaniu!");
  3.    echo "<br />";
  4.    while ($record = mysql_fetch_array($rezultat, MYSQL_ASSOC))
  5.    {
  6.        foreach ($record as $field_name => $field_value)
  7.        {
  8.        echo "<br />".$field_value."<br />";            
  9.        }
  10.        echo "<br />";
  11.    }
  12. ?>


ktory wyswietla mi wynki w taki sposob:
1 <- ocena
6 <- ilosc ocen

2
9

itp. jak zrobic by ocena i ilosc ocen byly pod innymi zmiennymi (teraz sa pod $field_value) tak by mozna bylo je opisac np.

Ocena: 1
Ilosc ocen:6

Ocena: 2
Ilosc ocen: 9

Dzieki za odpowiedz.
Pozdrawiam,
Soil
TheaSiX
  1. <?php
  2. $rezultat =mysql_query("SELECT ocena, count( * ) AS ilosc FROM `oceny` GROUP BY ocena ") or die("Błąd w zapytaniu!");
  3.   echo "<br />";
  4.   while ($record = mysql_fetch_array($rezultat, MYSQL_ASSOC))
  5.   {
  6.       $ocena = $row["ocena"];
  7.       $ilosc = $row["ilosc"];
  8.       print " Ocena: $ocena<br> Ilość: $ilosc<br><Br>";
  9.   }
  10. ?>
soil
Niestety wyswietla tylko nazwy

Ocena:
Ilosc:

Pewnie ma to zwiazek z tym, jak wyglada tabela:
id ocena
1 2
2 4
3 1
4 5
5 1
6 6

chociaz moge sie mylic..

Pozdrawiam,
Soil
nospor
theasix popelnil blad, ktory ty bezmyslnie skopiowales...

  1. <?php
  2. $rezultat =mysql_query("SELECT ocena, count( * ) AS ilosc FROM `oceny` GROUP BY ocena ") or die("Błąd w zapytaniu!");
  3.  echo "<br />";
  4.  while ($row = mysql_fetch_array($rezultat, MYSQL_ASSOC))
  5.  {
  6.      $ocena = $row["ocena"];
  7.      $ilosc = $row["ilosc"];
  8.      print " Ocena: $ocena<br> Ilość: $ilosc<br><Br>";
  9.  }
  10. ?>


poza tym włącz sobie wyswietlanie wszystkich bledow, a takie rzeczy bedziesz na biezaco wylapywal i nie bedziesz musial zasmiecac forum
http://nospor.pl/php-faq-n29.html#faq-2
soil
Skopiowalem bezmyslnie, bo moja wiedza jest praktycznie zerowa. W kazdym razie dzieki za pomoc. Dziala smile.gif
nospor
nie zrozum mnie źle, nie chcę tutaj po tobie jechac czy cos. Napiszę to co napisze byś na przyszlosc nie popelnial takich bledow. Tlumaczenie o zerowej wiedzy jest tutaj tylko zaslanianiem się.

Do rzeczy:
przy pięcio linijkowym kodzie naprawdę bez większego problemu można dojrzeć, ze zmienne ktorych się uzywa, nigdzie nie mają przypisanych wartości. Tutaj twoją zmienną była $row. Dodatkowo pamiętaj o tym włączeniu wyswietlaniu bledow, a wowczas masa bledow na stronie da ci wskazowkę
podążaj za białym królikiem winksmiley.jpg
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.