php + mktime()

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste mensen ik heb hier een klein probleempje.

Ik heb 3 pulldown menus (dag, maand, jaar) waar men hun geboortedatum in moeten voeren. Met de functie checkdate() zorg ik ervoor dat datums die geen datum zijn (30 febr bijv) afgevangen worden. Nu moet ik van deze 3 variabelen 1 datum maken. Dat heb ik geprobeerd met de funtie mktime().
Na veel ploeteren kwam ik erachter dat deze functie alleen datums ondersteund vanaf 1970.

Iemand een oplossing of alternatief hiervoor?

en pelle sorry ik zie het nou pas. Ik zit nog niet zolang hierop excuses.

Acties:
  • 0 Henk 'm!

Verwijderd

Goed dat je het zegt want ik vergeet het ook steeds :) uhm kan je niet gewoon
$date = $dag."-".$maand."-".$jaar;
doen?

met regx kan je dat wel weer uit elkaar halen.

Acties:
  • 0 Henk 'm!

Verwijderd

Hoe wil je het op gaan slaan? in een database? Dan kan je inderdaad de manier van Yilias gebruiken, maar dan verwisseld:
code:
1
$date = $jaar."-".$maand."-".$dag;

en dan wegschrijven in een veld met van het type DATE

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het punt is dat ik vrijwel een newbie op dit gebied ben en ik al lang blij was dat het werkte tot ik erachter kwam dat die datum functie niet helemaal 100 was.
Maar hoe en wat is dat regx dan voor iets. Ik heb al op php.net gezocht maar kan niks vinden?

Acties:
  • 0 Henk 'm!

Verwijderd

probeer de functie date eens

edit:

sorry date is alleen voor uitlezen

[ Voor 50% gewijzigd door Verwijderd op 02-05-2003 09:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
juaron dan vraagt ie om een string en een int (timestamp) is het dan de bedoeling dat ik eerst alle 3 de variabelen in een string moet gooien dat ie dan daarvan een datum maakt ahv de timestamp die ik meegeef?

Acties:
  • 0 Henk 'm!

Verwijderd

volgens mij zou mktime gewoon moeten werken. gebruik je wel een 4-cijferig getal voor het jaar?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoe wil je het op gaan slaan? in een database? Dan kan je inderdaad de manier van Yilias gebruiken, maar dan verwisseld:
code:
--------------------------------------------------------------------------------
$date = $jaar."-".$maand."-".$dag;

--------------------------------------------------------------------------------


en dan wegschrijven in een veld met van het type DATE
dit zou volgends mij moeten werken ik ga het meteen proberen alvast bedankt!!

Acties:
  • 0 Henk 'm!

Verwijderd

mktime werkt tot de unix epoc das 1970 dacht ik

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
volgens mij zou mktime gewoon moeten werken. gebruik je wel een 4-cijferig getal voor het jaar?
dit is wat php.net zegt over mktime()

Returns the Unix timestamp corresponding to the arguments given. This timestamp is a long integer containing the number of seconds between the Unix Epoch (January 1 1970) and the time specified

gaat dus pas werken als het een datum betreft van 1970

tpch bedankt voor de moeite :)

Acties:
  • 0 Henk 'm!

Verwijderd

? volgens mij geeft mktime gewoon een negatief timestamp voor data voor 1970
PHP:
4
5
6
7
8
9
10
11
12
<?
$dag = 15;
$maand = 6;
$jaar = 1958;
$datum = mktime(0,0,0,$maand,$dag,$jaar);
print ("timestamp: ".$datum."<br>");
//check
print (date("A d F Y", intval($datum)));
?>


ik zou de datum overigens ook gewoon als timestamp in de database zetten

[ Voor 21% gewijzigd door Verwijderd op 02-05-2003 09:26 ]


Acties:
  • 0 Henk 'm!

Verwijderd

TIpje... waarom zou je date gebruiken in je db? wat zijn daarvan de voordelen? zolang je niet gebruik maakt van uitgebreide SQl die naar datums kijkt, kan je net zo goed een varchar gebruiken en het gewoon in nl notatie opslaan.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
het moest als datum opgeslagen worden in de database. Voor degene die het willen weten ik heb het nu maar zo gedaan


if (checkdate($maand, $dag, $jaar)==true)
{
$geboortdatum = $jaar."-".$maand."-".$dag;
}
else
{
echo "The date off birth you enterd was not a valid date, please retype your date off birth.";
}

hij slaat hem nu ook goed op moet alleen nog ff eraan sleutelen voordat ie perfect is :) (wel opletten dat ie hem in de dbase als datum wegschrijft)

Acties:
  • 0 Henk 'm!

  • Fatamorgana
  • Registratie: Augustus 2001
  • Laatst online: 21-07 01:24

Fatamorgana

Fietsen is gezond.

Je kunt het bv zo opslaan in de database:
Dag = 09
Maand = 04
Jaar = 1950

Stop je in een varchar veld (of numeriek) als: 19500409

En dan kun je toch nog mooi op datum sorten.

Acties:
  • 0 Henk 'm!

Verwijderd

Fatamorgana schreef op 02 mei 2003 @ 09:31:
Je kunt het bv zo opslaan in de database:
Dag = 09
Maand = 04
Jaar = 1950

Stop je in een varchar veld (of numeriek) als: 19500409

En dan kun je toch nog mooi op datum sorten.
das een goede!

Acties:
  • 0 Henk 'm!

Verwijderd

juaron: Timestamps worden niet negatief bij een datum voor 1970. Daarvoor zijn simpelweg data niet goed op te slaan mbv timestamps. Timestamps zijn heel handig om bijvoorbeeld nieuwsbericht-data en log-data op te slaan. Als het echter aankomt op het opslaan van gebeurtenissen uit het verleden (bijvoorbeeld trouwdata of geboortedata) is het handiger om ze anders op te slaan. Ikzelf ben al een hele tijd geleden overgestapt op het DATE (of DATETIME) type in MySQL. MySQL (ik neem aan dat je daarmee werkt icm php) heeft voldoende functies om de data naar wens op te halen.
Pagina: 1