Difference i tid fra Mysql, kan ikke regne ud hvad jeg skal når der er gen...

Tags:    php

<< < 12 > >>
Jeg leger lidt med at lave et "stempel ur" i PHP/MySQL. Jeg har i min tabel felterne : dag, in_, out, dato. I feltet dag indsættes dagen som f.eks. 14/10/03. I in_ og out, et 1 tal alt efter om man er inde eller ude. Feltet dato indsættes unixtime "time()"
Jeg har lavet et lille script der skal udregne hvor lang tid man har været inde, ud fra in_ og out samme dag. Mit problem er at få den til at regne ud hvis man har været inde og ude flere gange på en dag.
Håber dette er til at se sig ud af, da jeg syntes det er lidt svært at forklarer i skrift.

PS: Hvis i vil "lege" med, så husk at ret server,user,password og db til jeres ejen opsætning.

MySQL table : in_out
felter :dag,in_,out,dato

<?php

$conn=mysql_connect("SERVER","USER","PASSWORD");
if(!$conn) echo "connection failed";
mysql_select_db("DATABASE",$conn) or die ("database not found");

$ask = "SELECT COUNT(dag) FROM in_out WHERE in_ = '1'";
$data=mysql_query($ask,$conn);
$dat = mysql_fetch_array($data);
$ialt=$dat[0];

while($counter < $ialt ){
$sql = "SELECT dag FROM in_out WHERE in_ = '1' ORDER BY dato ASC ";
$result = mysql_query($sql,$conn);
$dag = mysql_result($result,$counter,'dag');
$dato = mysql_result($result,$counter,'dato');
echo "$dag";
$getdatearray = "SELECT dato FROM in_out WHERE dag = '$dag' ORDER BY dato ASC";
$getresult = mysql_query($getdatearray,$conn);
$numrows = mysql_num_rows($getresult);
while ($myrows = mysql_fetch_array($getresult)){
$out = $myrows[0];
$a2 = $out - $a1;
$a1 = $out;
}
$a2 = $a2 - 1800;
$faktura = date("H:i:s",mktime(0,0,($a2)));
echo " Tid ialt = $faktura";
$counter++;
}
?>
Håber dette giver et overblik
/Svend

[Redigeret d. 19/11-03 14:58:12 af Svend]



13 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 8 karma
Sorter efter stemmer Sorter efter dato
Jeg leger lidt med at lave et "stempel ur" i PHP/MySQL. Jeg har i min tabel felterne : dag, in_, out, dato. I feltet dag indsættes dagen som f.eks. 14/10/03. I in_ og out, et 1 tal alt efter om man er inde eller ude. Feltet dato indsættes unixtime "time()"
Jeg har lavet et lille script der skal udregne hvor lang tid man har været inde, ud fra in_ og out samme dag. Mit problem er at få den til at regne ud hvis man har været inde og ude flere gange på en dag.
Håber dette er til at se sig ud af, da jeg syntes det er lidt svært at forklarer i skrift.

PS: Hvis i vil "lege" med, så husk at ret server,user,password og db til jeres ejen opsætning.

MySQL table : in_out
felter :dag,in_,out,dato

<?php

$conn=mysql_connect("SERVER","USER","PASSWORD");
if(!$conn) echo "connection failed";
mysql_select_db("DATABASE",$conn) or die ("database not found");

$ask = "SELECT COUNT(dag) FROM in_out WHERE in_ = '1'";
$data=mysql_query($ask,$conn);
$dat = mysql_fetch_array($data);
$ialt=$dat[0];

while($counter < $ialt ){
$sql = "SELECT dag FROM in_out WHERE in_ = '1' ORDER BY dato ASC ";
$result = mysql_query($sql,$conn);
$dag = mysql_result($result,$counter,'dag');
$dato = mysql_result($result,$counter,'dato');
echo "$dag";
$getdatearray = "SELECT dato FROM in_out WHERE dag = '$dag' ORDER BY dato ASC";
$getresult = mysql_query($getdatearray,$conn);
$numrows = mysql_num_rows($getresult);
while ($myrows = mysql_fetch_array($getresult)){
$out = $myrows[0];
$a2 = $out - $a1;
$a1 = $out;
}
$a2 = $a2 - 1800;
$faktura = date("H:i:s",mktime(0,0,($a2)));
echo " Tid ialt = $faktura";
$counter++;
}
?>
Håber dette giver et overblik
/Svend

[Redigeret d. 19/11-03 14:58:12 af Svend]

Hej Svend,

Jeg ville nok kigge lidt på dit db design da det i mine øjne er unødvendigt at ha' 2 felter som angiver om du logger ind eller ud. Dette kunne med fordel være et felt hvor værdien 0 angiver log ind og værdien 1 angiver log ud.
En anden ting er dato og dag felterne. Du kunne jo lave det om til en datetime så du har både tid og dato i samme felt.

Nå men nok om det.
Jeg har lavet et stykke kode som burde kunne tælle tiden som du er "stemplet ind" i.
Jeg har dog skrevet den ind direkte og har derfor ikke selv testet det.
Men se om det ikke kan bruges til noget.
Fold kodeboks ind/udKode 


Har du spørgsmål til koden så spørg løs!
/Michael



Hmm hvad med to tabeller? en med den funktion du har lavet og en i alt hvor du så bare tager alle der har den nuværende dato og lægger sammen?



Difference i tid fra Mysql, kan ikke regne ud hvad jeg skal når der er gentagelser.
hvad mener du med det altså du vil have en difference mellem 2 tidspunkter er det d



Hej Michael.

Mange tak for dit flotte indlæg, jeg må desværre sige at jeg ikke er langt nok inde i PHP/MySQL til at kunne gennemskue dit script.

Kører jeg dette, får jeg :
03/11-2012 Tid ialt = 09:19:48
03/11-2013 bla bla bla...
03/11-2014 bla bla bla...

Bla Bla tiden ser egentligt rigtig nok ud, men datoen holder ikke.
Kan du hjælpe mig med det ??

PS: Jeg er bevidst om at jeg kan få datoen ud af dato feltet også, og ligeledes at jeg kan nøjes med et flet til ind/ud, men som sagt er det kun på tegnebordet, for at se om jeg overhovedet kan få det til at virke.

På forhånd tak
/Svend




Hej Michael.

Mange tak for dit flotte indlæg, jeg må desværre sige at jeg ikke er langt nok inde i PHP/MySQL til at kunne gennemskue dit script.

Kører jeg dette, får jeg :
03/11-2012 Tid ialt = 09:19:48
03/11-2013 bla bla bla...
03/11-2014 bla bla bla...

Bla Bla tiden ser egentligt rigtig nok ud, men datoen holder ikke.
Kan du hjælpe mig med det ??

PS: Jeg er bevidst om at jeg kan få datoen ud af dato feltet også, og ligeledes at jeg kan nøjes med et flet til ind/ud, men som sagt er det kun på tegnebordet, for at se om jeg overhovedet kan få det til at virke.

På forhånd tak
/Svend

Hej Svend,

Kan du ikke vise mig hvordan din tabel ser ud (feltnavn, type og størrelse)?

/Michael.



Ved at sidde og nørkle lidt med det, fik jeg det selv til at virke, men Michael får alligevel de 100 af pointene for et godt oplæg til hvordan jeg kom videre.

Tak for hjælpen
/Svend



Ved at sidde og nørkle lidt med det, fik jeg det selv til at virke, men Michael får alligevel de 100 af pointene for et godt oplæg til hvordan jeg kom videre.

Tak for hjælpen
/Svend

Hej Svend,

Tak for det....

Du skal huske at lukke tråden når du har fået dit svar :-)

/Michael.




Du skal huske at lukke tråden når du har fået dit svar :-)

/Michael.


Hmm, og hvor en i ..... lukker man så tråden henne ?

Mangler "knap"
/Svend



Nederst på siden skal du give UP ud!

Hilsen CHadi
Mit lykketal er 2959



Nederst på siden skal du give UP ud!

Hilsen CHadi
Mit lykketal er 2959



Fint nok, men ingen af svarene løste opgave 100%, og dermed mener jeg ikke jeg kan give 100% point for det.
Og da jeg så ikke kan give mig selv de resterende point, må tråden jo bare stå åben i al evighed ;-)

/Svend



<< < 12 > >>
t