Leeftijd Script geeft leeftijd niet weer (Opgelost)
larssy1 - 11/09/2007 02:44 (laatste wijziging 11/09/2007 12:44)
MySQL beginner
Hey mensen.
Ik ben bezig met een profiellen systeempje..
maar nu wil ik de leeftijd laten berekenen gebasseerd op het jaartal, de maan en de dag..
maar nu wilt hij de leeftijd niet weergeven.. waar heb ik hier in het scriptje een fout begaan?
<tr>
<td align=left> Age: <?
if($object->jaar=="0000"){
echo "unknown";
} elseif ($object->maand=="00"){
echo "unknown";
} elseif ($object->dag=="00"){
echo "unkown";
} else {
function leeftijd($dag,$maand,$jaar){
$dag2 = date('d');
$maand2 = date('m');
$jaar2 = date('Y');
$jaar3 = $jaar2 - $jaar;
$maand3 = $maand2 - $maand;
if ($maand3 < 0){$jaar3 --;}
elseif ($maand3 == 0){
if($dag2 < $dag){$jaar3 --;}
}
return $jaar3;
}
}
?>
</td>
</tr>
<tr>
<td align=left> Age: <?
if ( $object -> jaar == "0000" ) {
} elseif ( $object -> maand == "00" ) {
} elseif ( $object -> dag == "00" ) {
} else {
function leeftijd( $dag , $maand , $jaar ) {
$jaar3 = $jaar2 - $jaar ;
$maand3 = $maand2 - $maand ;
if ( $maand3 < 0 ) { $jaar3 --; }
elseif ( $maand3 == 0 ) {
if ( $dag2 < $dag ) { $jaar3 --; }
}
return $jaar3 ;
}
}
?>
</td>
</tr>
svp.. ik denk dat ik dit script hier wel mag posten gezien het niet zo groot is..
Met Vriendelijke Groet
Larssy1
12 antwoorden
Gesponsorde links
Gerard - 11/09/2007 02:55
Ouwe rakker
Wanneer je gebruik maakt van een DATE kolom in je database kan je deze berekening door MySQL laten uitvoeren. Hiervoor maak ik zelf gebruik van de volgende berekening:
FLOOR(PERIOD_DIFF(DATE_FORMAT(CURDATE(), '%Y%m'), DATE_FORMAT(u.birthday, '%Y%m')) / 12) AS age
FLOOR( PERIOD_DIFF( DATE_FORMAT( CURDATE( ) , '%Y%m' ) , DATE_FORMAT( u. birthday, '%Y%m' ) ) / 12 ) AS age
larssy1 - 11/09/2007 03:02
MySQL beginner
Nee ik maak geen gebruik van date kolommen..
ik heb 3kollomen in de database.
jaar
maand
dag
maar ik heb ze niet op DATE staan omdat zodra ik dat doe er dan 0000-00-00 in de database komt te staan als standaard.
DenMette - 11/09/2007 07:09
PHP gevorderde
Je moet wel echoen he ik hoop dat je dat wel het gedaan.
<?php echo leeftijd($dag,$maand,$jaar); ?>
<?php echo leeftijd
( $dag , $maand , $jaar ) ; ?>
Wim - 11/09/2007 13:31
Crew algemeen
als je de code maar 1x gebruikt verwijder je regel 10 en regel 23
je veranderd return dan door print of echo
larssy1 - 11/09/2007 14:32
MySQL beginner
hmm.. dit bedoel je?
<tr>
<td align=left> Age: <?
if($object->jaar=="0000"){
echo "unknown";
} elseif ($object->maand=="00"){
echo "unknown";
} elseif ($object->dag=="00"){
echo "unkown";
} else {
$dag2 = date('d');
$maand2 = date('m');
$jaar2 = date('Y');
$jaar3 = $jaar2 - $jaar;
$maand3 = $maand2 - $maand;
if ($maand3 < 0){$jaar3 --;}
elseif ($maand3 == 0){
if($dag2 < $dag){$jaar3 --;}
}
echo "$jaar3";
}
?>
</td>
</tr>
<tr>
<td align=left> Age: <?
if ( $object -> jaar == "0000" ) {
} elseif ( $object -> maand == "00" ) {
} elseif ( $object -> dag == "00" ) {
} else {
$jaar3 = $jaar2 - $jaar ;
$maand3 = $maand2 - $maand ;
if ( $maand3 < 0 ) { $jaar3 --; }
elseif ( $maand3 == 0 ) {
if ( $dag2 < $dag ) { $jaar3 --; }
}
}
?>
</td>
</tr>
Gerard - 11/09/2007 14:41
Ouwe rakker
In die functie returned hij toch gewoon de leeftijd. Kan niet inzien waarom dat niet is wat je wilt.....
larssy1 - 11/09/2007 14:48 (laatste wijziging 11/09/2007 14:48)
MySQL beginner
Ja maar hij deed het niet,, vraag me niet waarom..
maar nu heb ik die code ingevoerd maar nu geeft hij weer dat ik 2007 jaar ben
Gerard - 11/09/2007 14:53 (laatste wijziging 11/09/2007 14:55)
Ouwe rakker
<?php
function calculateAge($day, $month, $year) {
return date('Y') - $year - ($month > date('m') ? 1 : ($day > date('d') ? 1 : 0));
}
$age = calculateAge(12, 9, 1985);
?>
<tr>
<td align="left">Age: <?php echo $age; ?></td>
</tr>
<?php
function calculateAge( $day , $month , $year ) {
return date ( 'Y' ) - $year - ( $month > date ( 'm' ) ?
1 : ( $day > date ( 'd' ) ?
1 : 0 ) ) ;
}
$age = calculateAge( 12 , 9 , 1985 ) ;
?>
<tr>
<td align="left">Age:
<?php echo $age ; ?> </td>
</tr>
De hapklare oplossing dan maar. Die gekke functie uit de script library maar niet gebruikt want dat zag er wel heel lelijk uit.
Gooi de functie maar ergens tussen jouw eigen functies (dus niet midden in je code, maar gewoon netjes in een ander bestand waar de rest ook staat) en zie maar hoe je het voor de rest implementeert. Ik heb gebruik gemaakt van de engelse naamgeving omdat ik daar zelf meer mee heb dan nederlands.
edit
Natuurlijk zelf even afvangen als alle troep op 0 staat dat hij dan unknown weergeeft. Maar dat kan je zelf wel.
Gesponsorde links
Dit onderwerp is gesloten .