Autor Zpráva
Jack Finger
Profil

<?php
$planet['production'] = 0.9;
?>

<tr>
<td>Peníze:</td>
<td>
<select name="production_g" onChange="document.f1.production_s.selectedIndex=10-document.f1.produc tion_g.selectedIndex;">
<?
for($i = number_format(0, 1, ".", ""); $i <= number_format(1, 1, ".", ""); $i += number_format(0.1, 1, ".", "")){
echo "<option value="" . number_format($i, 1, ".", "") . """;
if(floatval(number_format($planet['production'], 1, ".", "")) == floatval(number_format($i, 1, ".", ""))){
echo " selected";
}
echo ">" . (number_format($i, 1, ".", "") * 100) . "%</option>";
}
?>
</select></td>
</tr>
<tr>
<td>Lodě:</td>
<td>
<select name="production_s" onChange="document.f1.production_g.selectedIndex=10-document.f1.produc tion_s.selectedIndex;">
<?
for($i = 0.0; $i <= 1.0; $i += 0.1){
echo "<option value="" . number_format($i, 1, ".", "") . """;
if(floatval(1.0 - number_format($planet['production'], 1, ".", "")) == floatval(number_format($i, 1, ".", ""))){
echo " selected";
}
echo ">" . (number_format($i, 1, ".", "") * 100) . "% </option>";
}
?>
</select></td>
</tr>


problém je ten, že to nikdy nenapíše selected, ani když $planet['production'] je stejný jako $i. z db ($planet['production']) vychází číslo v tomto tvaru: x.x a to se odečte od 1. neví někdo proč to nefachá?? nehází to žádnou chybu...
souki
Profil
zkus
if(floatval(1.0 - $planet['production']) === floatval($i)){

a určitě je $planet['production']) na jedno destinné?
Jakuje
Profil
$planet['production'] je v MySQL FLOAT(2,1)

ještě si nejsem jistej těma ===
souki
Profil
Jakuje
stačilo by ==, ale pokud chceš porovnávat i datový typ, tak ===
Jack Finger
Profil
stopro desetinný... taky nejede. tak v prvním příspěvku uvedu celej úsek kódu, jak ho mám teď..
Jakuje
Profil
Ještě mě dostalo že v manuálu je že === funguje pouze v PHP4 ...
http://cz.php.net/manual/cs/language.operators.comparison.php
souki
Profil
Jakuje
Neni to naopak? Jen v PHP5?
Jack Finger
Profil
tak jsem zkusil jen == ale stejně to nejede nečekaně...
Jakuje
Profil
Aha ... chyba překladu.
introduced = uvedeno

V cz manuálu to přeložili jako pouze :-D


Ale zpět k tématu. Netuší někdo proč to nefachá?
Ni7R0
Profil
A nebude to tím, že tam, nejsou escapované ty věci v dvojitých uvozovkách?
Správně by tam mělo být toto:
echo "<option value="" . number_format($i, 1, ".", "") . """;
Ale podle mě to děláte zbytečně složitě, co použít v cyklu celé číslo (cyklus od 1 do 10) a pak ho upravit na desetinné? Bylo by to tak mnohem přehlednější a pochopitelnější.

Edit: Aha, teď koukám, že tím to nejspíš nebude. Ale zkusím se na to podívat pořádně.
Ni7R0
Profil
Tohle se tváří funkčně. Vstupní hodnotu, se kterou se to porovnává, vkládejte v původním formátu (předpokládám, že to budou asi data z DB).
<select name="production_g" onChange="document.f1.production_s.selectedIndex=10-document.f1.produc tion_g.selectedIndex;">


<?
for($i = 0; $i <= 10; $i++ ){
echo "<option value="" . number_format($i, 1, ".", "") . """;
if($planet['production'] * 10 == $i) {echo " selected";}
echo ">" . $i * 10 . "%</option> ";
}
?>
</select>
Jack Finger
Profil

for($i = 0; $i <= 10; $i++){
echo "<option value="" . number_format($i, 1, ".", "") . """;
if($planet['production'] * 10 == $i){
echo " selected";
}
echo ">" . ($i * 10) . "%</option>";
}


tohle nefunguje, zase to "neselectuje" i když hodnoty jsou stejné...
Ni7R0
Profil
Funkční ukázka: odstraněno
Zdrojový kód: odstraněno

Zkuste změnit hodnotu val a změní se i vybraná položka.
Jack Finger
Profil
tak už to jede, stačilo pár změn...
Jack Finger
Profil
ano, jenže ty selecty jsou 2 a druhý se odečítá od 100%, no prostě zmatek, ale už to naštěstí jede :o) dík všem za pomoc!

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