Ik wil activiteiten uit m'n mysql database selecteren vanaf 'vandaag'. Daarvoor heb ik de volgende query geschreven (met behulp van de mysql manual:


<?php
 ...
 // Activiteiten weergeven
  unset($dag);
   $dag = date('j');
   $dag_z = date('d');
  unset($maand);
   $maand = date('n');
   $maand_z = date('m');
  unset($jaar);
   $jaar = date('Y');

  $querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('".$dag_z."-".$maand_z."-".$jaar."','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
 ...
?>


date veld in tabel 'j/n/Y'

Ik krijg alleen geen resultaat, weet iemand waarom niet?
Je datamodel klopt niet.
Doe de datum in het juiste type, lees in dit waarom.
Voor nu kan je NOW() gebruiken.
Zie ook deze tutorial.
@ Karl
Thanx :) dat wordt dus de alle velden omschrijven... is daar een makkelijke (automatische) manier voor?

Als ik hem nu met NOW() werkend wil krijgen heb ik dit gedaan:


<?php
 ...
							$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('NOW()','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";
							$resultbis=mysql_query($querybis) or die(mysql_error());
								
									while ($rowbis = mysql_fetch_array($resultbis)) {
										echo "<table>\n";
										echo "	<tr>\n";
										echo "		<td style=\"padding-left: 15px;\">\n";
										echo "			<font class=\"sidered\">&raquo; ".$rowbis['titel']."</font><br>\n";
										echo "		</td>\n";
										echo "	</tr>\n";
										echo "</table>\n";
									}
...
?>


Er staan nog 2 activiteiten in na vandaag. Deze zou die zo dan toch weer moeten geven?
Je hebt
sven schreef op 30.10.2009 23:37
date veld in tabel 'j/n/Y'

en je format met spaties. Klopt dat?
date veld in tabel 'j/n/Y' <-- php

format met spaties, bedoel je daar wat ik in m'n query doe mee?
Hoe ziet dat date veld er uit in de database?
Je zegt dat je in de database je zooi als j/n/Y hebt staan, maar in je query doe je DATE_FORMAT('NOW()','%e %c %Y'), met spaties dus.
Zie nu waarom het niet werkt... :s

deel van het script kwam uit een tutorial, heeft varchar voor de datum gebruikt :(

Omschrijven naar date --> 2009-01-01 en dan werkt


$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('".$dag_z."-".$maand_z."-".$jaar."','%e %c %Y') and genre='activiteit' ORDER BY date DESC LIMIT 5";


wel?
Dit '%e %c %Y' zal nooit een datum geven, wel tekst. Hier zal je ook nooit fatsoenlijk op kunnen sorteren omdat dan 01 01 2009 vroeger zal zijn dan 31 01 1980.
dus

$querybis="SELECT * FROM agenda WHERE date >= DATE_FORMAT('01-01-2009"','%Y-%c-%e') and genre='activiteit' ORDER BY date DESC LIMIT 5";

geeft geen datum, alleen tekst --> datums na 01-01-2009 in de database

snap dan niet hoe wel te selecteren of begrijp ik het dan niet?
Nou, door het dus op de juiste manier in de database te stoppen. Appels en peren kan je niet met elkaar vergelijken.
Als je datums als DATE opslaat kan je er van alles mee doen.

Reageren