Datum over een jaar?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Henke van der bunt

Henke van der bunt

15/07/2011 10:41:59
Quote Anchor link
Hallo,
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
 
PHP hulp

PHP hulp

28/03/2024 19:32:34
 
Wouter J

Wouter J

15/07/2011 10:45:19
Quote Anchor link
Kijk eens naar de functie strtotime. Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$now
= date('d-m-Y');
$nextYear = strtotime('+1 year', $now);
echo date('d-m-Y', $nextYear);
?>
 
Henke van der bunt

Henke van der bunt

15/07/2011 10:46:16
Quote Anchor link
Wouter J op 15/07/2011 10:45:19:
Kijk eens naar de functie strtotime. Voorbeeldje:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$now
= date('d-m-Y');
$nextYear = strtotime('+1 year', $now);
echo date('d-m-Y', $nextYear);
?>


En hoe doe ik dit @ Sql?

Mvg
 
Koen Vlaswinkel

Koen Vlaswinkel

15/07/2011 10:51:39
Quote Anchor link
In plaats van echo voeg je dit toe aan de MySQL query.
 
Joren de Wit

Joren de Wit

15/07/2011 10:53:35
Quote Anchor link
Om te beginnen zul je dan de datum in het juiste formaat (yyyy-mm-dd) moeten opslaan. Een datum in het formaat dd-mm-yyy wordt namelijk door PHP noch SQL herkend als datum.

Als je dat gedaan hebt, kun je heel eenvoudig een jaar bij de datum optellen in SQL:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
SELECT
  datumveld + INTERVAL 1 YEAR AS datum_plus_jaar
FROM
  tabel

Hetzelfde kun je overigens in alle soorten queries toepassen, dus ook in INSERT en UPDATE queries...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO tabel (datumveld)
VALUES ('2011-07-15' + INTERVAL 1 YEAR)
 
Henke van der bunt

Henke van der bunt

15/07/2011 10:57:06
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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());
?>


Nu krijg ik in tabel vervaldatum: 01-01-1971

Mvg
Gewijzigd op 15/07/2011 10:57:50 door Henke van der bunt
 
Joren de Wit

Joren de Wit

15/07/2011 10:58:29
Quote Anchor link
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...
 
Henke van der bunt

Henke van der bunt

15/07/2011 10:59:07
Quote Anchor link
Joren de Wit op 15/07/2011 10:58:29:
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?
 
Wouter J

Wouter J

15/07/2011 11:01:23
Quote Anchor link
Als je dit zou doen werkt het volgens mij wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$now
= date();
$nextYear = strtotime('+1 year', $now);
$next = date('d-m-Y', $nextYear);
?>

En ik weet, gelukkig, ook niet alles.
 
Henke van der bunt

Henke van der bunt

15/07/2011 11:02:45
Quote Anchor link
Warning: date() expects at least 1 parameter, 0 given in ??
 
Joren de Wit

Joren de Wit

15/07/2011 11:12:14
Quote Anchor link
@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...
Gewijzigd op 15/07/2011 11:12:41 door Joren de Wit
 
Henke van der bunt

Henke van der bunt

15/07/2011 11:19:22
Quote Anchor link
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...


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
 
Joren de Wit

Joren de Wit

15/07/2011 11:23:06
Quote Anchor link
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...
 
Pieter van Linschoten

Pieter van Linschoten

15/07/2011 11:45:51
Quote Anchor link


$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
 
Joren de Wit

Joren de Wit

15/07/2011 11:50:33
Quote Anchor link
@Pieter: leuke oplossing, maar ook dan heb je nog geen echte datum in je database. Je hebt nu een string waarvan jij en ik weten dat het een datum voorstelt, maar de database kan er niets mee.

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.
 
Henke van der bunt

Henke van der bunt

15/07/2011 12:46:14
Quote Anchor link
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...

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
 
Joren de Wit

Joren de Wit

15/07/2011 12:59:59
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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]
)

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 <=.
 
Kevin Ellen

Kevin Ellen

15/07/2011 13:00:10
Quote Anchor link
Henke van der bunt op 15/07/2011 11:19:22:
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...


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

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)
PHP script in nieuw venster Selecteer het PHP script
1
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.
?>
 
Henke van der bunt

Henke van der bunt

15/07/2011 14:24:47
Quote Anchor link
Ok, Het werkt :D
Hartstikke bedankt allemaal.

Nu heb ik nog 1 vraag, hoe haal ik hem in: DD-MM-YYYY Uit de sql?

Mvg
 
- Ariën  -
Beheerder

- Ariën -

15/07/2011 14:30:02
Quote Anchor link
DATE_FORMAT() gebruiken
 
Henke van der bunt

Henke van der bunt

15/07/2011 14:31:08
Quote Anchor link
Hoe?
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.