[PHP] MySQL datetime format to unix_timestamps met strtotime

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Lawrentium
  • Registratie: Oktober 2005
  • Laatst online: 16-01 22:36
Ik heb een MySQL database waar een temperatuur in wordt gelogd (er gaat nog meer in komen, maar eerst dit werkend krijgen).

Deze logs wil ik graag weergeven dmv pchart 2 (zie code).

Nu zit ik met het probleem dat de timestamp in MySQL dit format heeft: 2013-05-09 13:05:05, terwijl pchart met unix_timestamps werkt. Ik heb begrepen dat dit op te vangen is met strtotime(). Helaas krijg ik het door mijn zeer gelimiteerde PHP kennis niet voor elkaar. Kan iemand mij verder helpen om het bovengenoemde MySQL format om te zetten naar een unix_timestamp?

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
/* Include all the classes */
include("class/pDraw.class.php");
include("class/pImage.class.php");
include("class/pData.class.php");

/* Create the pData object */
$myData = new pData();

/* Connect to the MySQL database */
$db = mysql_connect("localhost", "gebruiker", "password");
mysql_select_db("testdb",$db);

/* Build the query that will returns the data to graph */
$Requete = "SELECT * FROM `Temperature`";
$Result  = mysql_query($Requete,$db);
while($row = mysql_fetch_array($Result))
 {
  /* Get the data from the query result */
  $timestamp   = $row["Datumtijd"];
  $temperature = $row["Temperature"];

  /* Save the data in the pData array */
  $myData->addPoints($timestamp,"Timestamp");
  $myData->addPoints($temperature,"Temperature");
 }


PHP kan tussen [code=php] of [php] tags voor kleurtjes ;)

[ Voor 2% gewijzigd door BtM909 op 14-05-2013 10:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
select unix_timestamp(veldnaam)

[ Voor 17% gewijzigd door Verwijderd op 14-05-2013 10:53 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 16:07
Verwijderd schreef op dinsdag 14 mei 2013 @ 10:52:
code:
1
select unix_timestamp(veldnaam)
^^Dit kan, maar waarom zou je dit door je DB laten afhandelen? Op deze manier laat je PHP het werk doen, heb je in mijn ogen meer macht over.


In php is het dit:

PHP:
1
 $timestamp2 = strtotime($timestamp);


Dan staat in $timestamp2 je nieuwe time() in unix_timestamp.

Met een beetje googlen kreeg je trouwens dit resultaat op de PHP website:
http://php.net/manual/en/function.strtotime.php
In de examples staan hele mooie voorbeelden die PRECIES doen wat je wilt ;)

[ Voor 69% gewijzigd door Merethil op 14-05-2013 11:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Merethil schreef op dinsdag 14 mei 2013 @ 11:03:
[...]

^^Dit kan, maar waarom zou je dit door je DB laten afhandelen? Op deze manier laat je PHP het werk doen, heb je in mijn ogen meer macht over.
Er wordt aangegeven dat er weinig php kennis is, dus een oplossing in mysql kan als fijner worden gezien

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 16:07
Verwijderd schreef op dinsdag 14 mei 2013 @ 15:33:
[...]


Er wordt aangegeven dat er weinig php kennis is, dus een oplossing in mysql kan als fijner worden gezien
Hoeft niet te betekenen dat PHP-ervaring opdoen niet gewenst is :P
Maar, valide punt. Allebei de varianten zullen iig de oplossing bieden.

Acties:
  • 0 Henk 'm!

  • Xerohumoris
  • Registratie: Augustus 2010
  • Laatst online: 21-09 20:30
PHP:
1
2
$dt = date_create_from_format( 'Y-m-d H:i:s', $row["Datumtijd"] );
echo $dt->format('U') . "\r\n";


Zou een oplossing kunnen zijn. Dit geeft je veel controle en als er ooit iets veranderd in de samenstelling van de datum veranderd (wat mij dus gebeurde) snel de code aanpassen om het met een andere DB ook te laten werken.

PS. Ik vind het zelf geen mooi oplossing maar is erg flexibel.

Acties:
  • 0 Henk 'm!

  • jessy100
  • Registratie: November 2010
  • Nu online
DDH87 schreef op dinsdag 14 mei 2013 @ 17:37:
PHP:
1
2
$dt = date_create_from_format( 'Y-m-d H:i:s', $row["Datumtijd"] );
echo $dt->format('U') . "\r\n";


Zou een oplossing kunnen zijn. Dit geeft je veel controle en als er ooit iets veranderd in de samenstelling van de datum veranderd (wat mij dus gebeurde) snel de code aanpassen om het met een andere DB ook te laten werken.

PS. Ik vind het zelf geen mooi oplossing maar is erg flexibel.
Mag ik vragen wat er dan wel verstaan word onder een mooie oplossing?

Acties:
  • 0 Henk 'm!

  • Xerohumoris
  • Registratie: Augustus 2010
  • Laatst online: 21-09 20:30
Mooie oplossing? Zorgen dat de database alles als timestamp opslaat of het met een simpele regel opgelost is.

Mijn ervaring is alleen dat het omzetten van tijden en data voor grote problemen kan zorgen. Wat op jouw server en data werkt kan op een andere server met de zelfde data niet werken.

Omdat mijn data stroom niet consequent is voor de opmaak heb ik ooit hier voor gekozen. Nu is namelijk met preg_match() de opmaak te bepalen van de tijd en datum. Maar dit is niet simpel en moet je voorkomen.
Pagina: 1