Datumvergelijking met huidige tijd

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart

bart

23/05/2006 15:01:00
Quote Anchor link
Beste Php-ers,

ik zit met een klein probleempje. Omdat ik het verhaal niet al te lang wil maken zal ik meteen beginnen met het voorschotelen van de situatie.

Ik heb een tijd geleden een website met PHP en MySQL gemaakt. In de database werd in verschillende tabellen gebruik gemaakt van de regel DATE. De invoer moest verplicht 0000-00-00 (jaar, maand, dag) zijn, zoals ze dat in Amerika gewend zijn. Maar omdat ik verschillende aanmerkingen heb gekregen of de tijd in Nederlandse vermelding op de site zou kunnen komen, heb ik (na veel brainstormen :P) gekozen om de datum op te delen in 3 aparte regels, 'date_day', 'date_month' en 'date-year'. Waarom, zou je zeggen, nou.. omdat ik alle nieuwsberichten wel wil sorteren op jaar, maand en vervolgens dag.

Nu is er op de site ook een pagina waar evenementen op vermeld staan. Op deze pagina zijn twee kolommen aanwezig: 1 voor de evenementen in het verleden, en 1 voor evenementen die nog moeten komen. Nu zag het script er eerst zo uit:

########### OUD SCRIPT ###########

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

Include("../db/db_connect.php");

$datum = date('YYYY-MM-DD');
$queryvl = "SELECT location, nl_info, date FROM performances WHERE date <= NOW() ORDER BY date DESC";
$resultvl = mysql_query($queryvl) or die (mysql_error());
$querytk = "SELECT location, nl_info, date FROM performances WHERE date >= NOW() ORDER BY date DESC";
$resulttk = mysql_query($querytk) or die (mysql_error());

?>


(vervolgens in <body>):....

<table border="0" width="100%" class="table1"><tr>
<td width="15%" class="td1"><b>Wanneer</b></td>
<td width="40%" class="td1"><b>Waar</b></td>
<td width="45%" class="td1"><b>Meer Info</b></td>
</tr>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
while (list($location, $nl_info, $date) = mysql_fetch_row($resulttk)){
    if ($date >= $datum){
    echo"<tr>";
    echo "<td width='15%' valign='top' align='left'>".$date."</td>";
    echo "<td width='40%' valign='top' align='left'>".$location."</td>";
    echo "<td width='45%' valign='top' align='left'>";
    echo(maak_tekst($nl_info));
    echo "</td></tr>";
    }
}


?>


</table>

########### OUD SCRIPT ###########

Dit oude (perfect werkende) script heb ik dus aangepast, 'date' heeft plaats gemaakt voor de drie regels 'date_day', 'date_month' en 'date-year':

########### NIEUW SCRIPT ###########

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

Include("../db/db_connect.php");

$datum = date('YYYY-MM-DD');
$queryvl = "SELECT location, nl_info, date_day, date_month, date_year FROM performances WHERE '".$date_year."-".$date_month."-".$date_day."' <= NOW() ORDER BY date_year DESC, date_month DESC, date_day DESC";
$resultvl = mysql_query($queryvl) or die (mysql_error());
$querytk = "SELECT location, nl_info, date_day, date_month, date_year FROM performances WHERE '".$date_year."-".$date_month."-".$date_day."' >= NOW() ORDER BY date_year DESC, date_month DESC, date_day DESC";
$resulttk = mysql_query($querytk) or die (mysql_error());

?>


(vervolgens in <body>):....

<table border="0" width="100%" class="table1"><tr>
<td width="15%" class="td1"><b>Wanneer</b></td>
<td width="40%" class="td1"><b>Waar</b></td>
<td width="45%" class="td1"><b>Meer Info</b></td>
</tr>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
while (list($location, $nl_info, $date_day, $date_month, $date_year) = mysql_fetch_row($resulttk)){
    if ('".$date_year."-".$date_month."-".$date_day."' >= $datum){
    echo"<tr>";
    echo "<td width='15%' valign='top' align='left'>".$date_day."-".$date_month."-".$date_year."</td>";
    echo "<td width='40%' valign='top' align='left'>".$location."</td>";
    echo "<td width='45%' valign='top' align='left'>";
    echo(maak_tekst($nl_info));
    echo "</td></tr>";
    }
}


?>


</table>

########### NIEUW SCRIPT ###########

Dit script werkt niet helemaal correct. Er zit volgens mij een probleem in de vergelijking van de datum. Ik denk zelf persoonlijk dat het ".$date_year."-".$date_month."-".$date_day."' niet correct werkt.

Kun jij me misschien helpen?

Alvast bedankt!

Bart
 
PHP hulp

PHP hulp

16/11/2024 22:44:18
 
Frank -

Frank -

23/05/2006 15:05:00
Quote Anchor link
Een datum sla je op in 1 kolom van het type DATE. Nooit en te nimmer in 3 kolommen met de dag, maand en jaar.

Wil jij uit een datumkolom alleen de dag hebben, dan gebruik je DAY(datumkolomnaam), bij de maand gebruik je de functie MONTH() en voor het jaar YEAR(). Uiteraard kun je een datum ook opmaken met de MySQL-functie DATE_FORMAT().

Zie verder hoofdstuk 12.5 van de MySQL-handleiding.
 
Bart

bart

23/05/2006 16:07:00
Quote Anchor link
Heel erg bedankt! Ik had er zelf nooit van gehoord vandaar... You're the best! De oplossing:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

Include("../db/db_connect.php");

$datum = getdate();
$queryvl = "SELECT location, nl_info, DATE_FORMAT(date, '%d-%m-%Y') FROM performances WHERE date <= NOW() ORDER BY date DESC";
$resultvl = mysql_query($queryvl) or die (mysql_error());
$querytk = "SELECT location, nl_info, DATE_FORMAT(date, '%d-%m-%Y') FROM performances WHERE date >= NOW() ORDER BY date DESC";
$resulttk = mysql_query($querytk) or die (mysql_error());

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.