Toon posts:

[PHP] Integers naar date(time) format

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers,

Ik heb jullie hulp nodig. Ik wil dat gebruikers hun geboortedatum kunnen selecteren via drie select option's. Één select option voor de dag, één voor de maand en één voor het jaar. Deze geboortedatum moet opgeslagen worden in mijn database. Het probleem is dat er uit select option's integers komen, terwijl ik de datum liever in date of datetime format heb staan, zodat ik er makkelijker aan kan rekenen.

Hoe maak ik van bijvoorbeeld de drie waarden 03 11 1980 (3 november 1980), een datetime format van 1980-11-03 00:00:00 voor in de database?


Alvast bedankt!

Mvg,
Jaspr0

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Dit is best redelijk basic PHP, als ik zo vrij mag zijn. Ik vraag me daarom af, of je ook dingen zelf gezocht hebt en zo ja, waarom dat dan niet werkte.

Wat hints:

www.php.net/strtotime
www.php.net/date

En omdat ik de omvang van je project niet weet:
Makkelijkste is om met jQuery (UI) een datepicker te maken, die kan je naar wens aanpassen, krijg je 1 input, waarin de datum in het formaat zit waarin je dat zou willen, wel even op readonly zetten. ;)

Geen idee of het veel verschilt, maar wellicht is het verstandig om de verjaardag op te slaan als date ipv datetime. :) Aangezien niemand zal onthouden wat de tijd is waarop iemand geboren is en om dan altijd maar 00:00:00 in te vullen zonde is.

[ Voor 125% gewijzigd door CH4OS op 06-08-2015 19:57 ]


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Hoe kom je erbij dat er uit select boxen integers zouden komen?

Afaik gebeurt alle communicatie met php via strings, http kent geen integers.

En idd, pak gewoon een javascript datepicker, daar zijn er 13 van in een dozijn en die handelen het allemaal gewoon voor je af. Terwijl ik het bijv weer super irritant vind om een datum met select inputs in te moeten geven

Acties:
  • 0 Henk 'm!

  • underrated
  • Registratie: Februari 2014
  • Laatst online: 21-09-2021
Met een select kan je doorgaans ook 31 februari instellen - of je moet het afvangen. Ik zou lekker voor de
HTML5 date input gaan ( <input type="date" > ) met een javascript fallback als t nog niet ondersteund wordt:

JavaScript:
1
2
3
if (!typeExists('date')) {
 /* hang js datepicker aan input element */
}

Acties:
  • 0 Henk 'm!

Verwijderd

Als je weet hoe de data wel binnenkomt kunt je ook vrij eenvoudig die string opbreken en herschikken;
PHP:
1
2
3
4
5
6
7
8
<?php

$str = '03 11 1980'; // jouw voorbeeld

$expl = explode(' ', $str);
$date = $expl[2].'-'.$expl[1].'-'.$expl[0].' 00:00:00';

print $date; // 1980-11-03 00:00:00


Is dit mooi? nee maar gezien de vraag (niet lullig bedoeld) is het misschien wel op nivo en begrijpbaar.
Je kunt beter php's DateTime gebruiken eventueel samen met een library als Carbon.

[ Voor 97% gewijzigd door Verwijderd op 10-08-2015 17:20 ]


Acties:
  • 0 Henk 'm!

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 11-10 16:28

Douweegbertje

Wat kinderachtig.. godverdomme

Verwijderd schreef op maandag 10 augustus 2015 @ 17:15:
Als je weet hoe de data wel binnenkomt kunt je ook vrij eenvoudig die string opbreken en herschikken;
PHP:
1
2
3
4
5
6
7
8
<?php

$str = '03 11 1980'; // jouw voorbeeld

$expl = explode(' ', $str);
$date = $expl[2].'-'.$expl[1].'-'.$expl[0].' 00:00:00';

print $date; // 1980-11-03 00:00:00


Is dit mooi? nee maar gezien de vraag (niet lullig bedoeld) is het misschien wel op nivo en begrijpbaar.
Je kunt beter php's DateTime gebruiken eventueel samen met een library als Carbon.
Dus omdat het al niet netjes is, maak je het nog ranziger? Reageer dan gewoon met een uitleg, in plaats van een "fout" voorbeeld EN nog eens een lib terwijl dat niet nodig is.

Om jouw voorbeeld te gebruiken

code:
1
2
3
4
5
$str = '03 11 1980'; // jouw voorbeeld
$str = str_replace(' ', '-', $str);

echo date('Y-m-d', strtotime($str));
// uiteraard vul je hier zelf in wat voor format je wilt, maar we gaan niet alles voorzeggen
Gomez12 schreef op donderdag 06 augustus 2015 @ 20:12:
Hoe kom je erbij dat er uit select boxen integers zouden komen?

Afaik gebeurt alle communicatie met php via strings, http kent geen integers.

En idd, pak gewoon een javascript datepicker, daar zijn er 13 van in een dozijn en die handelen het allemaal gewoon voor je af. Terwijl ik het bijv weer super irritant vind om een datum met select inputs in te moeten geven
http://php.net/manual/en/language.types.integer.php

Maar goed, ja $_POST values zijn strings.

En je gebruikt "http kent geen integers" , dat is ook maar een protocol en die kent volgens mij juist wel weer integers. HTML kan dat dan weer niet, althans niet als je een FORM hebt. HTML 5 kent wel weer input type number, maar geen idee (nog) hoe PHP dat opvangt. Waarschijnlijk als string :+

[ Voor 34% gewijzigd door Douweegbertje op 10-08-2015 18:15 ]

Pagina: 1