Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

For petlja i vrednost ciklusne promenjive

[es] :: PHP :: For petlja i vrednost ciklusne promenjive

[ Pregleda: 2388 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon For petlja i vrednost ciklusne promenjive12.11.2008. u 09:12 - pre 187 meseci
Pravim star rating skriptu u PHP-u. U pitanju je funkcija koja prima ocenu od 0 do 5 i na osnovu prosleđenog parametra vraća zvezdice.
Slika:

Imam sledeći problem! Kada prosledim ručno kao parametar funkciji npr. broj 3.0 dobijem sliku sa tri zvezdice(što i treba):
Code:

$i = 3.0;
echo $i . " " . starRate($i) . "<br/>";

ali u for petlji, kada ciklusna promenjiva $i dođe do 3, dobijam tri i pola zvezdice:
Code:

for($i=0;$i<=5;$i+=0.2)
{
    echo $i . " " . starRate($i) . "<br/>";
}


Zašto se ovo dešava i zašto je poslednja vrednost $i u okviru for petlje 4.8 kad treba 5?

Ceo kod:
Code:

<?php
/*
FUNKCIJA KOJA NA OSNOVU PROSLEDJENE OCENE(FLOAT NUMBER) OD 0 DO 5 
GENERISE ZVEZDICE(GIF SLIKA)
*/
function starRate($parRating)
{    
    $imagesPath = "./star_rating_img"; // folder gde se nalaze slike
    
    
    if($parRating <= 0)
    {
        $rateStars = "$imagesPath/00star.gif";
    }
    elseif ($parRating <= 0.5)
    {
        $rateStars = "$imagesPath/05star.gif";
    }
    elseif ($parRating <= 1)
    {
        $rateStars = "$imagesPath/1star.gif";
    }
    elseif ($parRating <= 1.5)
    {
        $rateStars = "$imagesPath/15star.gif";
    }
    elseif ($parRating <= 2)
    {
        $rateStars = "$imagesPath/2star.gif";
    }
    elseif ($parRating <= 2.5)
    {
        $rateStars = "$imagesPath/25star.gif";
    }
    elseif ($parRating <= 3)
    {
        $rateStars = "$imagesPath/3star.gif";
    }
    elseif ($parRating <= 3.5)
    {
        $rateStars = "$imagesPath/35star.gif";
    }
    elseif ($parRating <= 4)
    {
        $rateStars = "$imagesPath/4star.gif";
    }
    elseif ($parRating <= 4.5)
    {
        $rateStars = "$imagesPath/45star.gif";
    }
    elseif ($parRating <= 5)
    {
        $rateStars = "$imagesPath/5star.gif";
    }
    
    return "<img src=\"$rateStars\" alt=\"ocena\"/>"; // pocratni rezultat je <img> tag
}

echo "<div style=\"float:left; padding-right: 70px\">";
echo "<h2>FOR PETLJA:</h2>";
for($i=0;$i<=5;$i+=0.2)
{
    echo $i . " " . starRate($i) . "<br/>";
}
echo "</div>";

echo "<div style=\"float:left;\">";
echo "<h2>RUCNO:</h2>";
$i = 3.0;
echo $i . " " . starRate($i) . "<br/>";
$i = 3.1;
echo $i . " " . starRate($i) . "<br/>";
echo "</div>";
?>
Prikačeni fajlovi
 
Odgovor na temu

stevs986
Nikolic Sladjan
Senior Software Developer
Alterset d.o.o
Beograd

Član broj: 121154
Poruke: 140
*.adsl-a-1.sezampro.yu.



+4 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 09:25 - pre 187 meseci
Stavi u for petlji samo manje od 5 ne manje ili jednako....
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.adsl.beotel.net.



+19 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 10:47 - pre 187 meseci
Pretpostavljam zbog rada s decimalnim brojevima jer usled zaokruživanja ume da dođe do dakvih grešaka, pa dobiješ 3,000001.

Odradi for petlju ovako:
for($x=0; $x<=50; $x+=2) ....

pa se svugde drži celih broijeva, i koriguj onaj niz "if"-ova (koji je dušu da za "switch")
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
93.86.96.*

Sajt: https://avramovic.info


+46 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 17:01 - pre 187 meseci
Jesi probao eksplicitno da mu naglasiš da su decimalni brojevi u pitanju:

Code:
for($i=0;$i<=5.0;$i+=0.2)


Samo nagađam, ali možda i proradi
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 18:28 - pre 187 meseci
Citat:
Nemanja Avramović:
Samo nagađam, ali možda i proradi


Na žalost ništa.

Ovde mi totalno nije jasno šta se dešava! Kada funkciji starRate($parRating) kao argument prosledim bilo koji broj(decimal, integer) radi normalno, kada istu funkciju propustim kroz for petlju gde je korak ceo broj ili 0.5 opet radi, ali kada je korak ciklusne promenjive ispod 0.5 onda dobijam neočekivane rezultate. I nije mi jasno zašto for petlja iz prve poruke ide do 4.8, kada je uslov $i<=5 ?!
 
Odgovor na temu

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 18:41 - pre 187 meseci
E sad sam se tek našao zbunjen!
Kod:
Code:

<?php
$i = 0;
while($i <= 5.0)
{
    $i+=0.2;
    echo "$i ";
    if($i == 3) echo "JE JEDNAKO SA 3 <br/>"; else echo "NIJE JEDNAKO SA 3 <br/>";    
}

echo "<hr/>";

$i = 0;
while($i <= 5.0)
{
    $i+=0.5;
    echo "$i ";
    if($i == 3) echo "JE JEDNAKO SA 3 <br/>"; else echo "NIJE JEDNAKO SA 3 <br/>";    
}
?>


Izlaz:
0.2 NIJE JEDNAKO SA 3
0.4 NIJE JEDNAKO SA 3
0.6 NIJE JEDNAKO SA 3
0.8 NIJE JEDNAKO SA 3
1 NIJE JEDNAKO SA 3
1.2 NIJE JEDNAKO SA 3
1.4 NIJE JEDNAKO SA 3
1.6 NIJE JEDNAKO SA 3
1.8 NIJE JEDNAKO SA 3
2 NIJE JEDNAKO SA 3
2.2 NIJE JEDNAKO SA 3
2.4 NIJE JEDNAKO SA 3
2.6 NIJE JEDNAKO SA 3
2.8 NIJE JEDNAKO SA 3
3 NIJE JEDNAKO SA 3
3.2 NIJE JEDNAKO SA 3
3.4 NIJE JEDNAKO SA 3
3.6 NIJE JEDNAKO SA 3
3.8 NIJE JEDNAKO SA 3
4 NIJE JEDNAKO SA 3
4.2 NIJE JEDNAKO SA 3
4.4 NIJE JEDNAKO SA 3
4.6 NIJE JEDNAKO SA 3
4.8 NIJE JEDNAKO SA 3
5 NIJE JEDNAKO SA 3
-------------------------------------------------------------------------------
0.5 NIJE JEDNAKO SA 3
1 NIJE JEDNAKO SA 3
1.5 NIJE JEDNAKO SA 3
2 NIJE JEDNAKO SA 3
2.5 NIJE JEDNAKO SA 3
3 JE JEDNAKO SA 3
3.5 NIJE JEDNAKO SA 3
4 NIJE JEDNAKO SA 3
4.5 NIJE JEDNAKO SA 3
5 NIJE JEDNAKO SA 3
5.5 NIJE JEDNAKO SA 3


 
Odgovor na temu

beep
Srbija/Vrbas

Član broj: 19294
Poruke: 198
*.dynamic.sbb.rs.

Sajt: keselj.xyz


+1 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 20:12 - pre 187 meseci
http://us.php.net/float ... obrati paznju na tekst u crvenom polju ... inace to sto radis se resava bez petlje
 
Odgovor na temu

Marko Medojević
Team leader
Digital ST
Beograd

Član broj: 93659
Poruke: 776
*.adsl-3.sezampro.yu.

Sajt: www.digitalst.rs


+99 Profil

icon Re: For petlja i vrednost ciklusne promenjive12.11.2008. u 20:17 - pre 187 meseci
Citat:
beephttp://us.php.net/float ... obrati paznju na tekst u crvenom polju

Hvala! Sad mi je jasno!

Citat:
beep: inace to sto radis se resava bez petlje

Inače petlja mi nije ni trebala, već sam samo hteo preko nje da testiram rating sistem, koji inače radi.
 
Odgovor na temu

[es] :: PHP :: For petlja i vrednost ciklusne promenjive

[ Pregleda: 2388 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.