Datum over een jaar?
Ik zet bij mijn php script de datum zo in kolom besteldatum: $date = date("d-m-Y");
Maar nu wil ik in Vervaldatum, deze datum $date = date("d-m-Y"); + 1 Jaar.
Hoe kan ik dit doen?
Mvg
strtotime. Voorbeeldje:
Kijk eens naar de functie Wouter J op 15/07/2011 10:45:19:
En hoe doe ik dit @ Sql?
Mvg
In plaats van echo voeg je dit toe aan de MySQL query.
Als je dat gedaan hebt, kun je heel eenvoudig een jaar bij de datum optellen in SQL:
Hetzelfde kun je overigens in alle soorten queries toepassen, dus ook in INSERT en UPDATE queries...
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?
$now = date('d-m-Y');
$nextYear = strtotime('+1 year', $now);
$next = date('d-m-Y', $nextYear);
$query = "INSERT INTO producten (naam, type, besteldatum, vervaldatum, userid) VALUES('Starters Host','Webhosting','". $date ."','". $next ."','". $leden->getId() ."')";
mysql_query($query) or die(mysql_error());
?>
$now = date('d-m-Y');
$nextYear = strtotime('+1 year', $now);
$next = date('d-m-Y', $nextYear);
$query = "INSERT INTO producten (naam, type, besteldatum, vervaldatum, userid) VALUES('Starters Host','Webhosting','". $date ."','". $next ."','". $leden->getId() ."')";
mysql_query($query) or die(mysql_error());
?>
Nu krijg ik in tabel vervaldatum: 01-01-1971
Mvg
Gewijzigd op 15/07/2011 10:57:50 door Henke van der bunt
Henke van der bunt op 15/07/2011 10:57:06:
Nu krijg ik in tabel vervaldatum: 01-01-1971
Omdat d-m-Y geen datum is, kun je er met strtotime() ook niet mee werken...
Joren de Wit op 15/07/2011 10:58:29:
Omdat d-m-Y geen datum is, kun je er met strtotime() ook niet mee werken...
Henke van der bunt op 15/07/2011 10:57:06:
Nu krijg ik in tabel vervaldatum: 01-01-1971
Omdat d-m-Y geen datum is, kun je er met strtotime() ook niet mee werken...
Waarom geeft wouter dit mij dan?
Code (php)
En ik weet, gelukkig, ook niet alles.
Warning: date() expects at least 1 parameter, 0 given in ??
@Henke: als je met data en tijden wilt gaan rekenen, kun je dat het beste in de database zelf doen. Deze is daar beter op toegerust dan PHP. Maar of je nu voor PHP of SQL kiest, je zult altijd data in het formaat yyyy-mm-dd moeten gebruiken, iets anders gaat gewoon niet werken...
Toevoeging op 15/07/2011 11:13:52:
Als je overigens in PHP met data en tijden aan de slag wilt, zou ik eens kijken naar het Datetime object...
Gewijzigd op 15/07/2011 11:12:41 door Joren de Wit
Joren de Wit op 15/07/2011 11:12:14:
@Wouter: dat zal ook niet werken, date() gebruik je namelijk om een datumtijdstempel op te maken in het gewenste formaat.
@Henke: als je met data en tijden wilt gaan rekenen, kun je dat het beste in de database zelf doen. Deze is daar beter op toegerust dan PHP. Maar of je nu voor PHP of SQL kiest, je zult altijd data in het formaat yyyy-mm-dd moeten gebruiken, iets anders gaat gewoon niet werken...
Toevoeging op 15/07/2011 11:13:52:
Als je overigens in PHP met data en tijden aan de slag wilt, zou ik eens kijken naar het Datetime object...
@Henke: als je met data en tijden wilt gaan rekenen, kun je dat het beste in de database zelf doen. Deze is daar beter op toegerust dan PHP. Maar of je nu voor PHP of SQL kiest, je zult altijd data in het formaat yyyy-mm-dd moeten gebruiken, iets anders gaat gewoon niet werken...
Toevoeging op 15/07/2011 11:13:52:
Als je overigens in PHP met data en tijden aan de slag wilt, zou ik eens kijken naar het Datetime object...
Kun je mij dat uitleggen? snap die tuts niet op PHP.net
En nog een vraag
$punten = '400';
if($leden->getPunten($leden->getId()) <= $punten)
{
echo '<b>Je hebt niet genoeg punten om deze hosting te kopen.</b>';
}else{
Heb dit bovenaan mijn pagina staan, maar wanneer een lid 400 pt heeft zegt hij dat er te weinig zijn
Hoe kan dat?
Mvg
datum- en tijdfuncties in MySQL
Wat betreft je tweede vraag: je kijkt of het aantal punten van het lid 'kleiner dan of gelijk is aan' (<=) de waarde in $punten. Als 400 punten wel voldoende is, moet je het 'kleiner dan' teken (<) gebruiken...
Deze tutorial helpt je wellicht meer op weg: Wat betreft je tweede vraag: je kijkt of het aantal punten van het lid 'kleiner dan of gelijk is aan' (<=) de waarde in $punten. Als 400 punten wel voldoende is, moet je het 'kleiner dan' teken (<) gebruiken...
$nextYear = date('Y') + 1;
$date = date('d-m');
$dateNextYear = ($date=='29-02'?'01-03':$date).'-'.$nextYear;
Beetje overbodig hehe..
Gewijzigd op 15/07/2011 11:49:10 door Pieter van Linschoten
Werken met datums in een database (en ergens anders) doe je in het formaat yyyy-mm-dd. Als dat niet het formaat is waarin je later dingen wilt weergeven, geen probleem. Daar kennen we functies als DATE_FORMAT() (SQL) of date() (PHP) voor.
Joren de Wit op 15/07/2011 11:23:06:
Deze tutorial helpt je wellicht meer op weg: datum- en tijdfuncties in MySQL
Wat betreft je tweede vraag: je kijkt of het aantal punten van het lid 'kleiner dan of gelijk is aan' (<=) de waarde in $punten. Als 400 punten wel voldoende is, moet je het 'kleiner dan' teken (<) gebruiken...
Wat betreft je tweede vraag: je kijkt of het aantal punten van het lid 'kleiner dan of gelijk is aan' (<=) de waarde in $punten. Als 400 punten wel voldoende is, moet je het 'kleiner dan' teken (<) gebruiken...
die staat er toch al? of bedoel je iets anders? kun je het eens toepassen in mijn query? en ik zal naar de tut. kijken.
en het lid zijn punten moet gelijk of groter zijn dan $punten
mvg
Gewijzigd op 15/07/2011 12:53:14 door Henke van der bunt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
INSERT INTO producten (
naam,
type,
besteldatum,
vervaldatum,
userid
) VALUES (
'Starters Host',
'Webhosting',
NOW(),
NOW() + INTERVAL 1 YEAR,
[id_uit_php]
)
naam,
type,
besteldatum,
vervaldatum,
userid
) VALUES (
'Starters Host',
'Webhosting',
NOW(),
NOW() + INTERVAL 1 YEAR,
[id_uit_php]
)
Vooropgesteld dat de velden besteldatum en vervaldatum van het type DATE zijn, ziet je query er dan als bovenstaand uit.
Quote:
en het lid zijn punten moet gelijk of groter zijn dan $punten
Dan moet je dus de foutmelding geven als het aantal punten 'kleiner is dan' $punten. Dus alleen het < teken en niet <=.
Henke van der bunt op 15/07/2011 11:19:22:
Kun je mij dat uitleggen? snap die tuts niet op PHP.net
Joren de Wit op 15/07/2011 11:12:14:
@Wouter: dat zal ook niet werken, date() gebruik je namelijk om een datumtijdstempel op te maken in het gewenste formaat.
@Henke: als je met data en tijden wilt gaan rekenen, kun je dat het beste in de database zelf doen. Deze is daar beter op toegerust dan PHP. Maar of je nu voor PHP of SQL kiest, je zult altijd data in het formaat yyyy-mm-dd moeten gebruiken, iets anders gaat gewoon niet werken...
Toevoeging op 15/07/2011 11:13:52:
Als je overigens in PHP met data en tijden aan de slag wilt, zou ik eens kijken naar het Datetime object...
@Henke: als je met data en tijden wilt gaan rekenen, kun je dat het beste in de database zelf doen. Deze is daar beter op toegerust dan PHP. Maar of je nu voor PHP of SQL kiest, je zult altijd data in het formaat yyyy-mm-dd moeten gebruiken, iets anders gaat gewoon niet werken...
Toevoeging op 15/07/2011 11:13:52:
Als je overigens in PHP met data en tijden aan de slag wilt, zou ik eens kijken naar het Datetime object...
Kun je mij dat uitleggen? snap die tuts niet op PHP.net
date() is een functie, amar hij mag niet leeg zijn. Je moet dus aangeven wat je hierin wilt. Voor SQL moet je YYYY-mm-dd (jaar, maand, dag) gebruiken. Dus: date('Y-m-d'). Voor avndaag zou dat dus worden: 2011-07-15 :)
Quote:
En nog een vraag
$punten = '400';
if($leden->getPunten($leden->getId()) <= $punten)
{
echo '<b>Je hebt niet genoeg punten om deze hosting te kopen.</b>';
}else{
Heb dit bovenaan mijn pagina staan, maar wanneer een lid 400 pt heeft zegt hij dat er te weinig zijn
Hoe kan dat?
Mvg
$punten = '400';
if($leden->getPunten($leden->getId()) <= $punten)
{
echo '<b>Je hebt niet genoeg punten om deze hosting te kopen.</b>';
}else{
Heb dit bovenaan mijn pagina staan, maar wanneer een lid 400 pt heeft zegt hij dat er te weinig zijn
Hoe kan dat?
Mvg
Ik zou een class aanmaken die alles erin heeft. Dus wanneer je inlogd, dat je $inst_member ingevuld is met ID en alles.
Dan kun je gemakkelijk $inst_member->getPoints() uitvoeren; omdat ID al bekend is bij de class (weet niet hoe je class in elkaar zit).
Normaal doe ik simpel gezegd dit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
// login is goed verlopen, we gaan nu de class aanmaken en alles:
$inst_member = new Member($id);
// dan nemen we aan dat we een functie hebben die het aantal punten ophaalt:
$inst_member->getPoints(); //dit is dan het aantal punten, gemaakt door een functie in de class Member($id) waar de ID al bekend is. Dus alles kan binnen berekend worden.
?>
// login is goed verlopen, we gaan nu de class aanmaken en alles:
$inst_member = new Member($id);
// dan nemen we aan dat we een functie hebben die het aantal punten ophaalt:
$inst_member->getPoints(); //dit is dan het aantal punten, gemaakt door een functie in de class Member($id) waar de ID al bekend is. Dus alles kan binnen berekend worden.
?>
Hartstikke bedankt allemaal.
Nu heb ik nog 1 vraag, hoe haal ik hem in: DD-MM-YYYY Uit de sql?
Mvg
DATE_FORMAT() gebruiken
Hoe?