Autor Zpráva
pepepa
Profil *
Ahoj, vytvořil jsem si prográmek, který by měl po zadání začátku a konce akce zobrazovat buť : že akce bude probíhat - doba, za kterou začne, potom když je začátek akce, tak se zobrazí graf, a když akce skončí, tak se vypíše, že akce skončila. Ale někde v tom programu je chyba, pomohl by mi ji někdo lokalizovat??? Ten script je zde : [code]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Graf</title>
</head>
<body bgcolor="black">
<style>
.graph {
position: relative; /* IE is dumb */
width: 200px;
border: 1px solid #B1D632;
padding: 0px;
}
.graph .bar {
display: block;
position: relative;
background: #B1D632;
text-align: center;
color: white;
height: 2em;
line-height: 2em;
}
.graph .bar span { position: absolute; left: 1em; }
</style>
<div class="graph">
<?php
// zacatek akce - hodiny, minuty, mesic a rok
$hod = 16;
$min = 22;
$mesic = 9;
$den = 20;
$rok = 2007;

// konec akce - hodiny, minuty, mesic a rok
$hod_k = 16;
$min_k = 25;
$mesic_k = 9;
$den_k = 20;
$rok_k = 2007;

// vypocet doby do zacatku akce
$cas_akce = mktime($hod, $min, 0, $mesic, $den, $rok);
$cas_ted = mktime();
$d_sec = $cas_ted - $cas_akce;
$d_day = floor($d_sec/86400); // zaokrouhli dny na cela cisla
$d_sec -= $d_day * 86400;
$d_hrs = floor($d_sec/3600); // zaokrouhli hodiny na cela cisla
$d_sec -= $d_hrs * 3600;
$d_min = floor($d_sec/60); // zaokrouhli minuty na cela cisla
$d_sec -= $d_min * 60;

// vypocet procent probihajici akce
$uplynule = $d_sec * 60; // pocet minut, ktere ubehly od zacatku akce
$celk = mktime($hod_k,$min_k,0,$mesic_k,$den_k,$rok_k) - mktime($hod,$min,0,$mesic,$den,$rok) * 60; // celkova doba trvani akce v minutach
$procenta = round(($uplynule * 100) / $celk);

if ( $d_sec < 0 ) // vypise hlasku (akce nezacala)
print "Do akce zbývá $d_day dní, $d_hrs hodin, $d_min minut, $d_sec vteřin.";
elseif ( $d_sec = 0 ) // akce zacala
echo'<strong class="bar" style="width: '.$procenta.'%;">'.$procenta.'%</strong>';
else // akce skoncila
print "Akce skončila.";
?>
</div>
</body>
</html>
[/code]
Str4wberry
Profil
pepepa
A to Ti jedno vlákno nestačí.
Joker
Profil
Není to tu už v jiném tématu?
Jaký je výsledek? Co to vypíše? Nějaká chyba/varování?
pepepa
Profil *
Str4wberry
Omlouvám se, ale jsem fakt úplně zoufalej
Joker
žádnou chybu ani varování to nevypíše, pořád to vypisuje to samé - http://lion-audio.cz/graf/graf.php, podle mě budou špatně ty podmínky, ale nevím jak to napsat jinak
Joker
Profil
pepepa
Vypisuje to "Akce skončila". Jak sepsalo v původním vláknu, nechat si vypsat hodnoty proměnných a z toho se zjistí, kde je chyba.
nightfish
Profil
( $d_sec = 0 )

tady má být ==

jinak to, že ti to píše akce skončila je správně, protože opravdu skončila...
pepepa
Profil *
nightfish
kde konkretne to ma byt??
nightfish
Profil
kde konkretne to ma byt??
http://www.linuxsoft.cz/article.php?id_article=188
pepepa
Profil *
nightfish
Dobře, to jsem opravil, ale když si změním čas, tak že akce bude teprve probíhat, vypsaný text je stále akce skončila...??
pepepa
Profil *
tak už jsem to lokalizoval, funkční kód je zde (třeba se někomu někdy hodí) a děkuji všem za pomoc
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Graf</title>
</head>
<body bgcolor="">
<style>
.graph {
position: relative; /* IE is dumb */
width: 200px;
border: 1px solid #B1D632;
padding: 0px;
color: #B1D632;
}
.graph .bar {
display: block;
position: relative;
background: #B1D632;
text-align: center;
color: red;
height: 2em;
line-height: 2em;
}
.graph .bar span { position: absolute; left: 1em; }
</style>

<?php
// parametry zacatku akce - hodiny, minuty, mesic a rok
$hod = 18;
$min = 15;
$mesic = 9;
$den = 20;
$rok = 2007;

// parametry konce akce - hodiny, minuty, mesic a rok
$hod_k = 18;
$min_k = 16;
$mesic_k = 9;
$den_k = 20;
$rok_k = 2007;

$cas_ted = mktime();
$cas_zacatek = mktime($hod, $min, 0, $mesic, $den, $rok);
$cas_konec = mktime($hod_k, $min_k, 0, $mesic_k, $den_k, $rok_k);

$cas_ted = mktime();
$d_sec = $cas_zacatek - $cas_ted;
$d_day = floor($d_sec/86400); // zaokrouhli dny na cela cisla
$d_sec -= $d_day * 86400;
$d_hrs = floor($d_sec/3600); // zaokrouhli hodiny na cela cisla
$d_sec -= $d_hrs * 3600;
$d_min = floor($d_sec/60); // zaokrouhli minuty na cela cisla
$d_sec -= $d_min * 60;


$procenta = round(100*(1-($cas_konec - $cas_ted)/($cas_konec - $cas_zacatek)));

if ( $cas_ted < $cas_zacatek) // vypise hlasku (akce nezacala)
print "Do akce zbývá $d_day dní, $d_hrs hodin, $d_min minut, $d_sec vterin."; // hlaska, ktera se vypise pred zacatkem akce
elseif ($cas_ted > $cas_zacatek && $cas_ted < $cas_konec) // akce zacala
echo'<div class="graph"><strong class="bar" style="width: '.$procenta.'%;">'.$procenta.'%</strong></div>';
else // akce skoncila
print "Akce skoncila."; // hlaska, ktera se vypise po skonceni akce
?>

</body>
</html>

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