geboortedatum check ouder dan 18
nu wil ik dit controleren of iemand ouder is dan 18
hoe kan ik dit het beste doen want onderstaande heb ik geprobeerd maar werkt niet
de $ POST worden natuurlijk vanuit het formulier mee gestuurd
Code (php)
alvast bedankt voor jullie reactie
Inmiddels ben ik erachter dat ik natuurlijk ook de minimale leeftijd in tijd moest doen. alleen het probleem is dat er dan nog een verschil blijft in de tijd
Gewijzigd op 23/05/2013 20:09:58 door Stefan H
Want anders zou je met jquery of js een scriptje kunnen schrijven dat kijkt of hij groter of kleiner is.
Code (php)
Zo uit het hoofd hoor. Zou je even moeten testen of het werkt.
Gewijzigd op 23/05/2013 20:57:45 door Eddy E
heb je een idee om dit anders te doen ?
Geef ze die ene dag cadeau...
Ze vullen toch wel 1900 als geboortejaar in ;).
Toevoeging op 23/05/2013 21:00:14:
Maar waarschijnlijk kan het nog beter: http://php.net/manual/en/datetime.diff.php
En $_POST['jaar'].'-'.$_POST['maand'].'-'.$_POST['dag'] is natuurlijk ook raar.
Waarom niet gewoon in 1 veld. Laat ze zelf kiezen hoe ze het invoeren (met streepjes, punten of woorden).
Ik ben niet geboren op 01-04-1985 maar op 1 april 1985.
Is toch hetzelfde? Voor jou niet...
bedankt voor je tip
Toevoeging op 23/05/2013 21:06:47:
Helaas Eddy dit werkt ook niet nog tips ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$geboorte_datum = $_POST["geboorte"];
$minimale_geboorte_datum = strtotime(new DateInterval('P18Y1D'));
if($geboorte_datum < $minimale_geboorte_datum)
{
echo 'U bent niet ouder dan 18 jaar';
}
else{
echo ' Je bent oud genoeg!
Je bent namelijk: '.$_POST["geboorte"].'?'
}
?>
<form action="index.php" method="post">
geboorte: <input type="text" name="geboorte">
<input type="submit">
</form>
$geboorte_datum = $_POST["geboorte"];
$minimale_geboorte_datum = strtotime(new DateInterval('P18Y1D'));
if($geboorte_datum < $minimale_geboorte_datum)
{
echo 'U bent niet ouder dan 18 jaar';
}
else{
echo ' Je bent oud genoeg!
Je bent namelijk: '.$_POST["geboorte"].'?'
}
?>
<form action="index.php" method="post">
geboorte: <input type="text" name="geboorte">
<input type="submit">
</form>
Toevoeging op 23/05/2013 21:23:06:
Eddy E op 23/05/2013 20:56:10:
Gezien het hier PHPhulp heet ga ik uit van een PHP-oplossing.
Zo uit het hoofd hoor. Zou je even moeten testen of het werkt.
Code (php)
Zo uit het hoofd hoor. Zou je even moeten testen of het werkt.
Eddy je script klopt wel maar een klein foutje ;-):
if($geb_datum < $minimale_geboorte_datum)
Moest $geboorte_datum anders matchen ze niet.
Gewijzigd op 23/05/2013 21:21:36 door Keizer Webdesign
Hoe moet de variabele geboorte datum opgebouwd zijn y-m-d ? of anders
Toevoeging op 23/05/2013 21:28:43:
http://php.net/manual/en/function.date.php Hier staat het wel op ;).
ik krijg de melding
Warning: strtotime() expects parameter 1 to be string, object given in D:\wamp\www\verwerkregistratie.php on line 57
line 57 is $minleeftijd = strtotime(new DateInterval ('P18Y1D'));
Je kan trouwens meerdere optie's gebruiken zo kan je mijn script ook zo maken:
Code (php)
Dus nu moet je een getal invoeren dat groter is als 18, dit werkt hopelijk wel.
nee dat gaat niet rjk de gebruiker vult een geboorte datum in niet hun leeftijd anders had het inderdaad niet zo lastig geweest
dan neem je toch gewoon in van plaats 18 een jaar zoals: 1995?
iemand vult zijn leeftijd in in een formulier via een select/dropdown menu van dag 1 t/m31 daarna een maand januari t/m december en dan een jaartal van 1950 t/m 2013
hieruit moet komen of iemand 18 jaar of ouder tot op de dag van vandaag
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<form action="index.php" method="post">
<select name="year">
<option value=""></option>
<option value="1980">1980</option>
<option value="1981">1981</option>
</select>
<select name="month">
<option value=""></option>
<option value="12">12</option>
<option value="11">11</option>
</select>
<select name="day">
<option value=""></option>
<option value="19">19</option>
<option value="18">18</option>
</select>
<input type="submit">
</form>
<?php echo $_POST["year"]; ?>!<br>
<?php echo $_POST["month"]; ?>
<?php echo $_POST["day"]; ?>
<select name="year">
<option value=""></option>
<option value="1980">1980</option>
<option value="1981">1981</option>
</select>
<select name="month">
<option value=""></option>
<option value="12">12</option>
<option value="11">11</option>
</select>
<select name="day">
<option value=""></option>
<option value="19">19</option>
<option value="18">18</option>
</select>
<input type="submit">
</form>
<?php echo $_POST["year"]; ?>!<br>
<?php echo $_POST["month"]; ?>
<?php echo $_POST["day"]; ?>
zo is inderdaad mijn formulier ingedeeld maar dan is nog steeds de vraag hoe ik vergelijk of de ingevulde datum gelijk of meer dan 18 jaar geleden is dan vandaag ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
// makkelijk beschikbaar maken.
// mag ook '1 april 1985' zijn.
$_POST['geboortedatum'] = '1-4-1985';
// lange manier
$geboortedatum = strtotime($_POST['geboortedatum']);
$geboortedatum_plus_18_jaar = strtotime("+ 18 year", $geboortedatum);
$nu = time();
if($nu < $geboortedatum_plus_18_jaar)
{
echo 'Te jong!';
}
else
{
echo 'Prima!';
}
// zelfde, maar korter
if(time() < strtotime("+ 18 year", strtotime($_POST['geboortedatum'])) ? 'Te jong' : 'Welkom, oud genoeg!');
?>
// makkelijk beschikbaar maken.
// mag ook '1 april 1985' zijn.
$_POST['geboortedatum'] = '1-4-1985';
// lange manier
$geboortedatum = strtotime($_POST['geboortedatum']);
$geboortedatum_plus_18_jaar = strtotime("+ 18 year", $geboortedatum);
$nu = time();
if($nu < $geboortedatum_plus_18_jaar)
{
echo 'Te jong!';
}
else
{
echo 'Prima!';
}
// zelfde, maar korter
if(time() < strtotime("+ 18 year", strtotime($_POST['geboortedatum'])) ? 'Te jong' : 'Welkom, oud genoeg!');
?>
Toevoeging op 23/05/2013 22:27:05:
Stefan H op 23/05/2013 21:55:10:
iemand vult zijn leeftijd in in een formulier via een select/dropdown menu van dag 1 t/m31 daarna een maand januari t/m december en dan een jaartal van 1950 t/m 2013
Altijd zo verschrikkelijk lastig.
Duurt lang en ik ben opeens op 1-1-1970 geboren....
Daarnaast... waarom wil je nou zijn geboortedatum weten?
Als je alleen maar wilt weten of ze 18+ zijn.... toon dan 2 knoppen.
1e sluit het venster (of redirect naar Google oid)
2e opent de website verder...
Gewijzigd op 23/05/2013 22:28:17 door Eddy E
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
$geboortedatum = "" . $jaar . "" . $maand . "" . $dag , "";
$nu = "" . date("Y") . "" . date("m") . "" . date("d") . "";
if($geboortedatum < (($nu * 1) - 180000))
{
echo "U bent oud genoeg";
}
else
{
echo "U bent niet oud genoeg";
}
?>
$dag = $_POST['dag'];
$maand = $_POST['maand'];
$jaar = $_POST['jaar'];
$geboortedatum = "" . $jaar . "" . $maand . "" . $dag , "";
$nu = "" . date("Y") . "" . date("m") . "" . date("d") . "";
if($geboortedatum < (($nu * 1) - 180000))
{
echo "U bent oud genoeg";
}
else
{
echo "U bent niet oud genoeg";
}
?>