Ik heb ik mij database een veld met de waarde "DATE" en daarin dus een geboortedatum. Nu moet het mogenlijk zijn om nu b.v. alle datum die als maand 01 hebben deze te laten zien. Nu heb ik de volgende code maar deze geeft aan dat er een fout zit in de qwery wat doe ik fout ?:

<?
$sql="SELECT geb_datum FROM Leden WHERE MONTH(geb_datum)=01 ORDER BY MONTH(geb_datum) ASC";

$result = mysql_query($sql);
echo mysql_error();

while ($row = mysql_fetch_object($result)) {


$Team = stripslashes($row->Team);
$Nr = stripslashes($row->Nr);
$Naam = stripslashes($row->Naam);

echo "$Naam";

} ?>
Oke wat is die error?
Dat vraag ik me ook af, want ik heb hem net getest, en bij mij werkt hij. Misschien een fout in tabelnaam/kolomnaam?
Ik zeg wel dat er een error komt maar het probleem is dat hij gewoon helemaal niks weergeeft.
Het is al gelukt... Sorry. Het probleem was het volgende :

$sql="SELECT geb_datum FROM Leden WHERE MONTH(geb_datum)=01 ORDER BY MONTH(geb_datum) ASC";

moest zijn :

$sql="SELECT * FROM Leden WHERE MONTH(geb_datum)=01 ORDER BY MONTH(geb_datum) ASC";

Dit omdat hij anders echt alleen de geboortedatum ophaald en dus niet $naam kan printen...
Waarom een * ? Gewoon de naam opvragen is voldoende. De rest van de data heb je daar niet voor nodig. Bij tabellen die veel kolommen (en dus data) bevatten, kan het zinvol zijn om alleen datgene op te vragen dat je nodig hebt. Bij een paar honderd records zal het echter niet veel uitmaken in de performance.

En een query over meerdere regels uitschrijven, zorgt ook voor extra duidelijkheid:

$sql="
SELECT 
  geb_datum,
  naam
FROM 
  Leden 
WHERE 
  MONTH(geb_datum) = 1 
ORDER BY 
  MONTH(geb_datum) ASC
";
@Allen: de WHERE condition uit de voorbeelden pakt alleen maanden met cijfer 1, dus die ORDER BY MONTH(geb_datum) is overbodig.

Reageren