Ik heb een database aangemaakt met dingen die ik op bepaalde dagen wil doen ...
Ik heb een tabel aangemaakt met de onderverdelingen: "dag", "maand", "gebeurtenis", ...
Ik wil dit laten uitvoeren door een cronjob die 's nachts draaid en zo 's nachts een e-mail naar mij stuurd wat ik moet doen ...
Maar nu mijn vraag ...
Ik weet hoe ik de datum van vandaag moet oproepen ...
Met date(d) en date(m)
Maar hou kan ik ervoor zorgen dat ik deze data ook uit mijn database kan halen ?? want ik heb ook sommige dagen wanneer ik meer als 1 ding moet doen ... (En dus ook meer als 1 mail krijg)
Alvast bedankt,
Steven
ps. Iedere gebeurtenis komt het jaar erachter terug en heeft een eigen id ...
Hier staat wel degelijk een fout in: de query die je daar geschreven hebt ken je helemaal niet toe aan een variabelen. Nu wordt het door php geïnterpreteerd als een combinatie van constanten en functies.
Daarnaast gebruik je in je sql query een php functie waar je ook gewoon een mysql functie kunt gebruiken.
En tevens heb je nog niets aan je datamodel veranderd, je hebt nog steeds die 2 velden met dag en maand. Een datum of tijdstip sla je in een database op in een DATE of DATETIME veld, en niet in losse velden.
Maar goed, om je te laten zien hoe je iets uit een database kunt halen:
<?php
$sql = "
SELECT
kolom1,
kolom2
FROM
tabel
WHERE
datumkolom = '2006-11-12'
";
In bovenstaand scriptje staat al heel veel:
- De juiste opmaak van een sql query.
- Foutafhandeling voor als de query mislukt.
- Uitvoering bij een gelukte query.
Dit is natuurlijk ook nog maar een voorbeeldje, maar hier moet je wel verder mee kunnen.
ps. Vergeet natuurlijk niet om eerst een verbinding met de database te maken.
En tevens heb je nog niets aan je datamodel veranderd, je hebt nog steeds die 2 velden met dag en maand. Een datum of tijdstip sla je in een database op in een DATE of DATETIME veld, en niet in losse velden.
Hey,
ik heb deze aangepast de code is nu
CREATE TABLE `jaarboek` (
`datum` date NOT NULL,
`klantennummer` varchar(255) NOT NULL,
`naam` varchar(255) NOT NULL,
`id` int(11) NOT NULL auto_increment,
`bedrag` varchar(255) NOT NULL,
`omschrijving` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 AUTO_INCREMENT=12 ;
Maar hou krijg ik het nu voor elkaar??
Want het jaartal heb ik op zich niet nodig ...
ps. Iedere gebeurtenis komt het jaar erachter terug en heeft een eigen id ...
Kortom, iedere gebeurtenis heeft een eigen uniek ID en lijkt me dus ook een eigen datum. Als je de gebeurtenis van vandaag wilt hebben, kun je de volgende sql query gebruiken:
SELECT
omschrijving
FROM
jaarboek
WHERE
datum = CURDATE()
Wil je alle gebeurtenissen op een bepaalde datum door verschillende jaren heen selecteren, dus het jaar buiten beschouwing gelaten, dan zul je moeten selecteren op dag en maand. Kijk daarvoor eens naar de queries van Jan en Frank.
ps. Toch vind ik je datamodel nog niet netjes. Een klantnummer is ook gewoon een INT en geen VARCHAR. Een bedrag is een INT als je het over hele getallen hebt en anders een FLOAT of DECIMAL.
Schrijf jij bedragen soms op als 'één euro en vijfentwintig eurocent' ? Daar geloof ik helemaal niets van! Dus, waar slaat dan die VARCHAR op? Helemaal nergens, je wilt namelijk helemaal geen stuk tekst opslaan, maar een getal met eventueel decimalen. Wanneer je hele getallen wilt opslaan, dan gebruik je INT (of een variant daar op) of een DECIMAL wanneer je ook decimalen wilt opslaan.
Ga je eens verdiepen in de verschillende datatypes, er bestaat meer dan alleen een VARCHAR.
Als je selecteert op datum, zal je alle gebeurtenissen krijgen die op die dag gebeuren.
Selecteren op datum is: WHERE datum_veld = CURDATE()
Hierbij lukt het niet ...
ik krijg maar 1 gebeurtenis ...
Frank schreef op 13.11.2006 01:49
`bedrag` varchar(255) NOT NULL,
Schrijf jij bedragen soms op als 'één euro en vijfentwintig eurocent' ? Daar geloof ik helemaal niets van! Dus, waar slaat dan die VARCHAR op? Helemaal nergens, je wilt namelijk helemaal geen stuk tekst opslaan, maar een getal met eventueel decimalen. Wanneer je hele getallen wilt opslaan, dan gebruik je INT (of een variant daar op) of een DECIMAL wanneer je ook decimalen wilt opslaan.
Ga je eens verdiepen in de verschillende datatypes, er bestaat meer dan alleen een VARCHAR.