Autor Zpráva
jtfcobra
Profil
Ahoj poradíte jak počítat


mám směny

1.1.2014 8:00 až do 1.1.2014 14:00 (denní smena)
2.1.2014 18:00 až do 3.1.2014 06:00 (nocni smena)
3.1.2014 14:00 až do 3.1.2014 18:00 (odpolední smena)
atd...¨


potřebuji vědět kolik minut a hodin je za směnu...

Děkuji za radu
aDAm
Profil
date_diff je to co hledáš...
jtfcobra
Profil
Moh by jsi napsat příklad ?
David Klouček
Profil
//2.1.2014 18:00 až do 3.1.2014 06:00 (nocni smena) 

$start = new DateTime('2014-1-2 18:00');
$konec =  new DateTIme('2014-1-3 06:00');

echo $start->diff($konec)->format('%H hodin %i minut');
aDAm
Profil
jtfcobra:
a kouknout do dokumentace si se zkoušel?
jtfcobra
Profil
Funguje to super ted nactu hodiny a vsechno OK ale kdyz chci pri dotazu ukladat je to mozne ?Děkuji za radu

       <?php
$db = mysql_connect($hostname_test, $username_test, $password_test);
mysql_select_db($database_test,$db);
$hledat=  $_GET["mac"];
$result = mysql_query("SELECT * FROM hotelsystem.dochazka_id_smeny ",$db);
$radku = mysql_num_rows($result);

for($i=0;$i<$radku;$i++)
{
$id=mysql_result($result,$i,"id");
$prichoddatum=mysql_result($result,$i,"prichoddatum");
$prichodcas=mysql_result($result,$i,"prichodcas");
$odchoddatum=mysql_result($result,$i,"odchoddatum");
$odchodcas=mysql_result($result,$i,"odchodcas");
$prichod=$prichoddatum.' '.$prichodcas;
$odchod=$odchoddatum.' '.$odchodcas;
$start = new DateTime($prichod);
$konec =  new DateTIme($odchod);
$vysledek = $start->diff($konec)->format('%H,%i'); 
echo 'ID: '.$id.' ,odpracovano '.$vysledek.'</BR>';
// ulozeni do DB prosim o radu !!!

}
mysql_close($db);
?>
David Klouček
Profil
To neni dobrej nápad. Volal bych před výpisem funkci, která délku směn přepočítá (na straně DB, ne v cyklu). Proč se to vlastně nespočítá hned, když víš konec směny?

Přepočet na straně DB může vypadat takhle:
-- odpracovano je time null
UPDATE tbl SET odpracovano = TIMEDIFF(konec, start) WHERE odpracovano IS NULL;

Položky z DB procházej pomocí while+mysql_fetch_assoc().
jtfcobra
Profil
Takle je to asi kravina co ? Pripadne jak to zmenit ?

Uz jsem to i upravil ale prozatim premyslim nad tim jak budu scitat celkem za mesic hodin ....jestli to ukladat do DB jako time ci integer ...?

                     <?php
       
$db = mysql_connect($hostname_test, $username_test, $password_test);
mysql_select_db($database_test,$db);
$result = mysql_query("SELECT * FROM hotelsystem.dochazka_id_smeny ",$db);
$radku = mysql_num_rows($result);

for($i=0;$i<$radku;$i++)
{
$id=mysql_result($result,$i,"id");
$prichoddatum=mysql_result($result,$i,"prichoddatum");
$prichodcas=mysql_result($result,$i,"prichodcas");
$odchoddatum=mysql_result($result,$i,"odchoddatum");
$odchodcas=mysql_result($result,$i,"odchodcas");
$prichod=$prichoddatum.' '.$prichodcas;
$odchod=$odchoddatum.' '.$odchodcas;
$start = new DateTime($prichod);
$konec =  new DateTIme($odchod);
$vysledek = $start->diff($konec)->format('%H,%i');
echo 'ID: '.$id.' ,odpracovano '.$vysledek.'</BR>';
$denvtydnu = date("w", strtotime($prichoddatum));
if ($denvtydnu == '0')  $denvtydnu1='Nedele';
if ($denvtydnu == '1')  $denvtydnu1='Pondeli';
if ($denvtydnu == '2')  $denvtydnu1='Utery';
if ($denvtydnu == '3')  $denvtydnu1='Streda';
if ($denvtydnu == '4')  $denvtydnu1='Ctvrtek';
if ($denvtydnu == '5')  $denvtydnu1='Patek';
if ($denvtydnu == '6')  $denvtydnu1='Sobota';
echo 'Den v tydnu: '.$denvtydnu1.'</BR>';
if ($denvtydnu1 == 'Nedele')  $typdne='Vikend';
if ($denvtydnu1 == 'Pondeli')  $typdne='Pracovni den';
if ($denvtydnu1 == 'Utery')  $typdne='Pracovni den';
if ($denvtydnu1 == 'Streda')  $typdne='Pracovni den';
if ($denvtydnu1 == 'Ctvrtek')  $typdne='Pracovni den';
if ($denvtydnu1 == 'Patek')  $typdne='Pracovni den';
if ($denvtydnu1 == 'Sobota')  $typdne='Vikend';
echo 'Pracovni den: '.$typdne.'</BR>';
mysql_query("UPDATE hotelsystem.dochazka_id_smeny SET POCETHODIN = '$vysledek' , DENVTYDNU = '$denvtydnu1' , TYPDNE = '$typdne' WHERE id = '$id' ");
}
mysql_close($db);
?>

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