Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Obliczanie ilości wyświetlanych gwiazdek
Forum PHP.pl > Forum > Przedszkole
thomson89
Chciałbym napisać skrypt który wyświetla ilość według oceny. Na razie mam tylko zadeklarowane ścieżki do obrazków.
Kod
$calosc = '<img src="design/icon/star.png">';
$polowka = '<img src="design/icon/starpol.png">';
$czyste = '<img src="design/icon/stars.png">';


Nie byłoby w tym nic trudnego gdybym nie musiał tego dołączyć do innego kodu:
  1. <?php
  2. while($min >= $max){
  3.    $zapytanie = "SELECT * FROM wiersze WHERE wierszid=".$min;
  4.    $wynik = mysql_query($zapytanie);
  5.    $tabela = mysql_fetch_assoc($wynik);
  6.    echo '<h2>'.$tabela['tytul'].'</h2>';
  7.    echo '<p>'.$tabela['opis_kr'].'</p>';
  8.    echo '<div id="linia"> &nbsp </div>';
  9.    echo '<table id="wiersze" width="100%"><tr><td align="left" id="obrazki">';
  10.    echo '</td><td align="right" id="info">';
  11.    echo 'Autor: Mateusz Lachowski | Komentarzy: 23  &nbsp <a href="">CZYTAJ WIERSZ <img id="img" src="design/icon/strzalka.png"></a></td></tr>
  12.    </table><br><br><br>';
  13. ?>


Oczywisćie skryptu nie podałem całego. Ale chodzi mi o to ze musz zadeklarowa cto w tej pętli. Niestety nie mam pomysłu.

Prosze o pomoc!
kazag
$i=0;
for($i; $i<$tabela['ocena']; $i++)
{
echo "gwiazdka";
}

?
thomson89
a co zrobić z połówkami? to będzie działać, jak będę miał liczby całkowite, a ułamki dziesiętne?

bym musiał dodać warunek jak ocena nierówna sześć to do szóstki dodaję czyste
Spawnm
round " title="Zobacz w manualu PHP" target="_manual i po sprawie smile.gif
thomson89
No tak, ale ja bym chiał miec te gwiadki połówki...

Oczywiscie łątwo mozna zrobić kilka obrazków jak ocena round(5) to dajemy 6=5+x x=-5+6 x=1 5 zlotych i jedna szara

łatwo, łątwość

mnie interesuja te połówki...
loko0
Jak masz ocenę np. 3.4 to pobierasz wartość całkowitą np.
  1. <?
  2. $ocena = 3.4;
  3. echo 'Wartość całkowita '.(int)$ocena; //przekonwertowanie do integera, utnie część ułamkową: 3
  4. echo 'Wartość ułamkowa '.($ocena%1); // reszta z dzielenie przez 1, czyli zwróci część ułamkową: 0.4
  5. ?>

Potem w pętli wyświetlasz ile jest pełnych gwiazdek i jeśli jest jakaś część ułamkowa, to wyświetlasz połówkę, za pętlą. To powinno Ci umożliwić obliczenie ile ma być pełnych gwiazdek, czy ma być połówka i iloma gwiazkami musisz uzupełnić.
thomson89
Dziekuję!

--EDIT--

Załatwiłem to tak:
  1. <?php
  2. $ocena = 1.7;
  3. $ocena_calosc = (int)$ocena;
  4. $ocena_polowka = $ocena-$ocena_calosc;
  5.  
  6. $liczba=1;
  7. for($i=1; $i<=$ocena_calosc; $i++)
  8. {
  9. echo $calosc;
  10. $liczba++;
  11. }
  12. if($ocena_polowka <= 0.5){ echo $polowka; }
  13. else echo $calosc;
  14.  
  15. $l = $liczba;
  16.  
  17. while($l<6){
  18.    echo $czyste;
  19.    $l++;
  20. }
  21. ?>


--EDIT--

Wprowadziłem jeszcze if'a jakby polowka rownala się zero.
kefirek
Najproscie można to zrobic tak
wystraczy jedena gwiazdka a kod wyswietla tyle gwizdek jaka srednia
  1. <?php
  2. $srednia = 2;
  3. $suma_glosw = 2;
  4. echo 'Glosy '.($srednia > 0 ? str_repeat("<img src='gwiazdka.gif'/>", ceil($srednia / $suma_glosw)) : 'brak glosow').'<br />';
  5. ?>
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.