Ostatní témata (Off Topic témata) : phpRS Fórum
Máte problém s konfigurací počítače? Hledáte nejlepší webhosting pro vaši aplikaci? Nevíte si rady s nějakým zajímavým programátorským oříškem? Týká se dotaz fóra? ... Pokud ano, tak je toto diskuzní fórum určeno právě vám.
phpRS - redakční a informační systém
Výraz v PHP se spočítá až napodruhé - vyřešeno (bug v PHP)
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-07-09, 22:13

Dobrý den. Mám kod, který je uveden dále, mezi značkami <code> a </code> (je to silně zjednodušená veze jedné funkce, omezená jen na tu část, která dělá chybu). Na localu mi to dělá chybu, jejíž příčinu jsem zatím neodhalil a na mě dostupném ostrém hostingu to nedělá vůbec nic. Nicméně jsem ten problém už uvedl zde:
[http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=112533&page=-1#8]
a někomu to tam zřejmě fungovalo správně -nevím ale podrobnosti, proč jemu ano a mě ne. Verzi PHP mám 5.3.1.

Možná tam mám nějakou chybu, nebo je to tím lokálem či něco jiného... Nemohli by jste to někdo vyzkoušet, případně nevíte proč mi to nefunguje?

Mělo by to vypsat toto:

zacatek: 9
konec: 7
vysledek 1: 200
vysledek 2: 200
vysledek 3: 200

ale mě to píše tohle:

zacatek: 9
konec: 7
vysledek 1: NAN
vysledek 2: 200
vysledek 3: 200

(problém je v tom NAN - vysledek 1,2,3 generují tři identické řádky tak by to mělo být identické)

<code>

function generaceobrazku() // v téhle se zobrazí chyba
{
// testovací hodnoty
$vstup= "2010-07-16*2010-07-17*1"; //datum_od*datum_do*procenta
$rozmezi = '2010-07-10*2010-07-25*1'; //datum_od*datum_do*procenta

$rozmezidat = hodnoty($rozmezi);

$zacatek = $rozmezidat[0];
$konec = $rozmezidat[1];
$datadat = hodnoty($vstup);

echo 'zacatek: '. $zacatekvednech = trvani ($datadat[0].'*'.$konec.'*0');echo '<br>';
echo 'konec: '. $konecvednech = trvani ($zacatek.'*'.$datadat[1].'*0');echo '<br>';
settype($zacatekvednech, 'integer');
settype($konecvednech, 'integer');
$jedenden = 30; //$jedenden = 29.33333;
echo 'vysledek 1: '. $vysledek=(470 - round($jedenden*$zacatekvednech));echo '<br>';
echo 'vysledek 2: '. $vysledek=(470 - round($jedenden*$zacatekvednech));echo '<br>';
echo 'vysledek 3: '. $vysledek=(470 - round($jedenden*$zacatekvednech));echo '<br>';
}


function hodnoty($retezec='')
{
if ($retezec != '') {
$hodnoty = explode('*',$retezec);
return $hodnoty;
}
else {
return false;
}
}

function trvani ($retezec='')
{
if ($retezec != '') {
$data = hodnoty($retezec);
$interval = date_diff(date_create($data[0]) , date_create($data[1]));
$trvani=$interval->format('%d');
settype($trvani, "integer");
return $trvani;
}
else {
return false;
}
}
</code>

Děkuji

Hepbegclub | Čáslavsko | MN Čáslav



Celkem upraveno 1×. Poslední úprava Kryšpín v 11.07.2010 10:33.

Re: Výraz v PHP se spočítá až napodruhé
Zaslán uživatelem/kou: Kryšpín (IP adresa zaznamenána)
Datum: 2010-07-11, 00:05

Jo, tak to byl asi bug v PHP. Nová verze, (5.3.2.) to spočítá správně. Omlouvám se, pokud jsem Vás zdržel, ale zatím jsem se setkával jen se svými chybami, tohle jsem nějak nepředpokládal. ;-))

Hepbegclub | Čáslavsko | MN Čáslav



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.