[PHP] Datum reformatten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
27
28
29
30
31
32
33
34
35
36
37
<?
$dbuser     = "xx"; 
$dbserver                   = "localhost"; 
$dbpass     = "xx"; 
$dbname     = "hollandpromotie"; 
//******** BEGIN LISTING THE CONTENTS OF  evenementen*********
//CONNECTION STRING
mysql_connect($dbserver, $dbuser, $dbpass)
or die ("UNABLE TO CONNECT TO DATABASE");
mysql_select_db($dbname)
or die ("UNABLE TO SELECT DATABASE");

$sql = 'SELECT * '
        . ' FROM `evenementen` '
        . ' WHERE 1 '
        . ' ORDER BY `van` ASC LIMIT 0, 30';$result = mysql_query($sql);
if ($myrow = mysql_fetch_array($result)) {
do
{
$evenementnaam=$myrow["evenementnaam"];
$plaats=$myrow["plaats"];
$van=$myrow["van"];
$tot=$myrow["tot"];
$opmerkingen=$myrow["opmerkingen"];
echo "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VERANSTALTUNG:  $evenementnaam"; 
echo "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ORT:  $plaats"; 
echo "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VON:  $van"; 
echo "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BIS:  $tot";     
echo "<FONT COLOR=#FF0000>";
echo "<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$opmerkingen";
echo "</FONT>";
echo "<BR>";

}
while ($myrow = mysql_fetch_array($result));
}
?>


Situatie:

Er is een pagina met een evenementenlijst (www.hollandpromotie.nl/evenementen.php)
Er is een startdatum en een einddatum van het evenement. Deze datums worden uit een MySQL database gehaald. In de Mysql database komen de gegevens uit een veld van het type date, in de notering yyyy-mm-dd dus.

Aangezien er op datum gesorteerd wordt, kan ik hem niet veranderen in varchar en dan gewoon als tekst intypen.

Wat ik wil: de yyyy-mm-dd omzetten in dd-mm-yy

PHP:
1
$van=$myrow["van"];


Nu heb ik al bedacht, dat het met date moet kunnen:

PHP:
1
$van=date("d-m-Y", $myrow["van"]);


Ware het niet, dat op deze manier de datum op 01-01-1970 wordt gezet.

Ik heb al 2 dagen lang veel opties geprobeerd, ook met mktime() enzo geprobeerd, maar dit is mijn 1e php script, vooral knip-en-plak-werk uit een php-generator. De oplossing hierboven komt nog het dichtst in de buurt, maar nog niet wat ik wil.

Hoe zet ik de yyyy-mm-dd die in de database zit om in dd-mm-yyyy ? Ik ben op moment redelijk gaar van dit, dus grote kans dat ik het over het hoofd zie. Kan iemand me in de goede richting trappen ? Ik heb ook gezocht, maar bij alles dat ik heb geprobeerd krijgt elk evenement dezelfde datum, krijg je de huidige timestamp (die dus oploopt), of 01-01-1970.

[ Voor 15% gewijzigd door Verwijderd op 26-03-2005 21:56 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Die pagina heb ik al tig keer bekeken, maar het lukt niet.

PHP:
1
$van=mktime("d-m-Y", ($myrow["van"]));


levert een timestamp op die blijft oplopen evenals

PHP:
1
$van=mktime(0,0,0, ($myrow["van"]));

[ Voor 34% gewijzigd door Verwijderd op 26-03-2005 22:04 ]


Acties:
  • 0 Henk 'm!

  • Jig
  • Registratie: Mei 2003
  • Laatst online: 21:40

Jig

PHP:
1
$van = date("Y-m-d", $unixtimestamp);


Check dus wel ff of $myrow["van"] wel ene correcte unix timestamp is.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Gebruik dan strftime. Ik gaf alleen een link naar mktime omdat je daar kan zien wat je fout deed met de functie date; die neemt namelijk geen string aan, maar een timestamp.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Jig schreef op zaterdag 26 maart 2005 @ 22:07:
PHP:
1
$van = date("Y-m-d", $unixtimestamp);


Check dus wel ff of $myrow["van"] wel ene correcte unix timestamp is.
Uit het veld komt het volgende format : yyyy-mm-dd. Dit wordt niet goed omgezet in de datum die in de record staat.

[ Voor 17% gewijzigd door Verwijderd op 26-03-2005 22:26 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En dan komt het niet in je op om die Y-m-d aan te passen naar het formaat dat jij nodig hebt? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik kan je niet volgen ?

//edit : zie wijziging vorige post

[ Voor 45% gewijzigd door Verwijderd op 26-03-2005 22:26 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
*T-MOB houdt er niet van om tijd als string op te slaan (iemand die weet waar je een horloge kunt kopen dat unix-timestamp weergeeft ;))

Anyway, als je datum als YYYY-MM-DD uit de db komt kun je gewoon exploden op de dash:
PHP:
1
2
3
4
5
$date_array = explode ('-', $myrow['van']);

$timestamp = mktime (0,0,0,$date_array[1],$date_array[2],$date_array[0]); // \0/ timestamp

$weergavedatum = date("fancy date code", $timestamp); //formatten met de date functie

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
T-MOB, je bent geweldig _/-\o_

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Kan je niet beter in je query gewoon UNIX_TIMESTAMP(fieldname) AS u_timestamp doen?
Of mis ik hier nu 't punt?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
blizt schreef op zaterdag 26 maart 2005 @ 23:05:
Kan je niet beter in je query gewoon UNIX_TIMESTAMP(fieldname) AS u_timestamp doen?
Of mis ik hier nu 't punt?
Als het om een mysql date-veld gaat wel, ja. Tot zover had ik allicht het punt gemist ;)

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Waarom moeilijk doen met allerlei truuks in PHP als het gewoon ook in je query kan?
code:
1
2
3
4
SELECT
    DATE_FORMAT(van, '%d-%m-%Y') AS weergavedatum
FROM
    evenementen


je 'HTML'-output is ook om te gruwelen btw ;)

[ Voor 17% gewijzigd door crisp op 26-03-2005 23:25 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben allang blij dat het werkt ;)

Ach, de klant stel de eisen qua uiterlijk sowieso niet hoog. Hij moet zn evenementenlijst hebben, voor de rest maakt het hem niet uit :)

Acties:
  • 0 Henk 'm!

Verwijderd

Hey,

Ik heb dus ook zo probleem, ik kon er alleen niet uit al van alles geprobeerd, maar wil niet lukken.
Mijn veld in de db = type "INT"

De datum die ik uit onderstande pagina krijgt zier er als volgt uit"1110885508"

Ik wil deze ook gewoon normaal laten weergeven.

Heb al met bovenstaande dingen zitten knutselen, maar gaat hem niet worden, iemand een tip ?

Het gaat om het veld hdu_datestamp


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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php require_once('Connections/Informatrix.php'); ?>
<?php
mysql_select_db($database_Informatrix, $Informatrix);
$query_HDU_Report = "SELECT info_hdunit.hdu_id, info_hdunit.hdu_datestamp, info_user.user_login, info_hdu_categories.hducat_category, info_hdunit.hdu_summary, info_hdunit.hdu_priority, info_hdu_resolve.hdures_resolution, info_hdunit.hdu_tech, info_hdunit.hdu_closed, info_hdunit.hdu_hours FROM ((info_hdunit INNER JOIN info_user ON info_hdunit.hdu_posterid = info_user.user_id) INNER JOIN info_hdu_categories ON info_hdunit.hdu_category = info_hdu_categories.hducat_id) INNER JOIN info_hdu_resolve ON info_hdunit.hdu_resolution = info_hdu_resolve.hdures_id; ";
$HDU_Report = mysql_query($query_HDU_Report, $Informatrix) or die(mysql_error());
$row_HDU_Report = mysql_fetch_assoc($HDU_Report);
$totalRows_HDU_Report = mysql_num_rows($HDU_Report);
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div align="left">
  <table width="100%"  border="0" align="left" cellpadding="0" cellspacing="0">
    <tr>
      <td>Ticket ID </td>
      <td>Datum</td>
      <td>Gebruiker</td>
      <td>Catagorie</td>
      <td>Samevatting</td>
      <td>Prioriteit</td>
      <td>Status</td>
      <td>Behandelaar</td>
      <td>Gesloten op </td>
      <td>Tijd</td>
    </tr>
    
    <?php do { ?>
    <tr>
      <td><?php echo $row_HDU_Report['hdu_id']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_datestamp']; ?></td>
      <td><?php echo $row_HDU_Report['user_login']; ?></td>
      <td><?php echo $row_HDU_Report['hducat_category']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_summary']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_priority']; ?></td>
      <td><?php echo $row_HDU_Report['hdures_resolution']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_tech']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_closed']; ?></td>
      <td><?php echo $row_HDU_Report['hdu_hours']; ?></td>
    </tr>
    <?php } while ($row_HDU_Report = mysql_fetch_assoc($HDU_Report)); ?>
  </table>
</div>
</body>
</html>
<?php
mysql_free_result($HDU_Report);
?>

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

En wat lukt er dan niet aan de tips hierboven?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
date() is de functie die je zoekt...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Het lukt niet om <td><?php echo $row_HDU_Report['hdu_datestamp']; ?></td> om te zetten naar normaal datum tijd formaat.

Er komt nu een rij getallen uit waarin de datum en tijd staan.


Ik ben ook nog heel nieuw met php, dus knutsel me een ongeluk maar krijg vaker errors dan een goeie pagina :(

[ Voor 31% gewijzigd door Verwijderd op 05-10-2005 08:58 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Verwijderd schreef op woensdag 05 oktober 2005 @ 08:53:
Het lukt niet om <td><?php echo $row_HDU_Report['hdu_datestamp']; ?></td> om te zetten naar normaal datum tijd formaat.
Als je nou de posts in dit topic wat beter bestudeerd had dan had je kunnen lezen dat jouw getal van 10 cijfers een UNIX timestamp is. Op verschillende plaatsen is aangegeven hoe je zo'n timestamp om kunt zetten in een voor mensen begrijpelijke datum (en tijd). Nogmaals, je hebt de date() functie nodig:
PHP:
1
2
3
4
5
 //geeft de timestamp weer
echo $row_HDU_Report['hdu_datestamp'];

//geeft een opgemaakte datum weer
echo date("d-m-Y", $row_HDU_Report['hdu_datestamp']);

Het opmaken van de string gebeurt aan de hand van de eerste parameter die aan de functie wordt meegegeven. Zie de PHP manual voor de exacte mogelijkheden.

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • JeroenT
  • Registratie: Juli 2001
  • Laatst online: 14-09 08:48

JeroenT

hoi!

PHP:
1
2
3
<? 
$weergavedatum = date("d-m-Y", $row_HDU_Report['hdu_datestamp']); 
?>


of wat crisp voorstelde;

PHP:
1
SELECT DATE_FORMAT(hdu_datestamp , '%d-%m-%Y') AS weergavedatum FROM evenementen


je roept dan in je while lus $row_HDU_Report['weergavedatum'] aan

[ Voor 11% gewijzigd door JeroenT op 05-10-2005 10:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Bedankt, nu ben ik er uit. TNXS
Pagina: 1