beste phpers,

ik zoek een oplossing voor het volgende..
uit de database zal de eerst volgende verjaardag moeten worden gehaald.

$result = mysql_query ("SELECT DATE_FORMAT(datum, '%d-%m-') AS datum FROM verjaardag ORDER BY datum ASC LIMIT 0 ,1") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "" . $row[0];
}
?><?php echo date("Y");?>

echter zal er een controlle moeten komen die kijkt of die datum niet al is geweest. de datum is opgeslagen als gebortedatum: YYYY-MM-DD heeft iemand hier een oplossing voor?, kon niks vinden via google.
Ik heb die query uit je vorige post eens geprobeerd en die geeft als output:

1984-06-061980-12-22

dus ik weet niet wat de bedoeling is?
Het lijkt mij de bedoeling om dan met alle hints en uitleg in deze post wederom de combinatie met DATE_FORMAT te maken:

SELECT         DATE_FORMAT(datum, '%d-%m') AS verjaardag,
        IF(DAYOFYEAR(datum) >= DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()),
        DAYOFYEAR(datum) - DAYOFYEAR(NOW()) +
        DAYOFYEAR(CONCAT(YEAR(NOW()),'-12-31'))) AS dagenTotVerjaardag
FROM         verjaardag
ORDER BY     dagenTotVerjaardag ASC;


Edit: en om dan alle twijfel weg te nemen over oud en nieuw hier nog een overzichtje met output op een testtabelletje
verjaardag dagenTotVerjaardag
03-05 61
04-06 93
08-06 97
10-12 282
12-12 285
05-02 339
zo vreemd dat ik een andere output heb.. 06-0622-12 ..
zou het wel handig vinden dat aantal dagen nog te gaan... :P

<?php include ("config_site.php");

$result = mysql_query ("SELECT DATE_FORMAT(datum, '%d-%m') AS verjaardag,
IF(DAYOFYEAR(datum) >= DAYOFYEAR(NOW()),
DAYOFYEAR(datum) - DAYOFYEAR(NOW()),
DAYOFYEAR(datum) - DAYOFYEAR(NOW()) +
DAYOFYEAR(CONCAT(YEAR(NOW()),'-12-31'))) AS dagenTotVerjaardag
FROM verjaardag
ORDER BY dagenTotVerjaardag ASC; ") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "" . $row[0];
}
?> legt het hier ergens aan?
@christiaan

Je ziet de logica ook niet in 06-0622-12 blijkbaar, dat moet zijn:


06-06
22-12 (dus 2 losse data)

In de while list staat na $row[0] geen enter (<br />) dus zet die ze allemaal achter elkaar.
ja die logica zag ik wel maar ik heb niet die output aantal dagen er achter.
doe eens var_dump($row), 't zal je verbazen wat er in de 2e kolom zit ;-)

Reageren