2010-04-07 2 views
0

Je demande à mes utilisateurs pour leur date de naissance et le stocker dans ma base de données de la manière suivante $month$day$year de sortie May 6 1901 mais je me demandais comment puis-je l'âge de la date de naissance stockée en utilisant PHP MySQL &?Comment obtenir l'âge d'une date de naissance en utilisant PHP et MySQL?

Voici le code PHP.

if (isset($_POST['submitted'])) { 

$mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
$dbc = mysqli_query($mysqli,"SELECT users.* 
          FROM users 
          WHERE user_id=3"); 

$month_options = array("Month", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"); 

$day_options = array("Day", "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", "31"); 

$month = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_POST['month']))); 
$day = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_POST['day']))); 
$year = mysqli_real_escape_string($mysqli, htmlentities(strip_tags($_POST['year']))); 


    if (mysqli_num_rows($dbc) == 0) { 
      $mysqli = mysqli_connect("localhost", "root", "", "sitename"); 
      $dbc = mysqli_query($mysqli,"INSERT INTO users (user_id, month, day, year) 
             VALUES ('$user_id', '$month', '$day', '$year')"); 
    } 


    if ($dbc == TRUE) { 
      $dbc = mysqli_query($mysqli,"UPDATE users 
             SET month = '$month', day = '$day', year = '$year' 
             WHERE user_id = '$user_id'"); 

      echo '<p class="changes-saved">Your changes have been saved!</p>'; 

    } 


    if (!$dbc) { 
      print mysqli_error($mysqli); 
      return; 
    } 
} 

Voici le code HTML.

<form method="post" action="index.php"> 
    <fieldset> 
     <ul> 
      <li><label>Date of Birth: </label> 
      <label for="month" class="hide">Month: </label> 
      <?php // month options 

      echo '<select name="month" id="month">' . "\n"; 
       foreach($month_options as $option) { 
       if ($option == $month) { 
        echo '<option value="' . stripslashes(htmlentities(strip_tags($option))) . '" selected="selected">' . stripslashes(htmlentities(strip_tags($option))) . '</option>' . "\n"; 
       } else { 
        echo '<option value="'. stripslashes(htmlentities(strip_tags($option))) . '">' . stripslashes(htmlentities(strip_tags($option))) . '</option>'."\n"; 
       } 
       } 
      echo '</select>'; 

      ?> 
      <label for="day" class="hide">Day: </label> 
      <?php // day options 

      echo '<select id="day" name="day">' . "\n"; 
       foreach($day_options as $option) { 
       if ($option == $day) { 
        echo '<option value="' . stripslashes(htmlentities(strip_tags($option))) . '" selected="selected">' . stripslashes(htmlentities(strip_tags($option))) . '</option>' . "\n"; 
       } else { 
        echo '<option value="'. stripslashes(htmlentities(strip_tags($option))) . '">' . stripslashes(htmlentities(strip_tags($option))) . '</option>'."\n"; 
       } 
       } 
      echo '</select>'; 

      ?>    
      <label for="year" class="hide">Year: </label><input type="text" name="year" id="year" size="4" maxlength="4" value="<?php if (isset($_POST['year'])) { echo stripslashes(htmlentities(strip_tags($_POST['year']))); } else if(!empty($year)) { echo stripslashes(htmlentities(strip_tags($year))); } ?>" /></li> 


      <li><input type="submit" name="submit" value="Save Changes" class="save-button" /> 
       <input type="hidden" name="submitted" value="true" /> 
      <input type="submit" name="submit" value="Preview Changes" class="preview-changes-button" /></li> 
      </ul> 
    </fieldset> 

</form> 

Répondre

3

Si vous avez juste besoin de calculer l'âge à partir d'une date donnée, il y a beaucoup de réponses à cela qui ont déjà été postées. Voir celui-ci: Calculate years from date

+0

comment d o Je calcule l'âge à partir de l'exemple «30 juin 1959» – TaG

+0

$ birthdate = strtotime («30 juin 1959»); –

+0

Voir la réponse de dclowd9901 pour l'exemple. – JYelton

0

Avec datetime:createfromformat vous pouvez analyser la date dans un objet DateTime et faire des calculs sur l'objet qui le rend très facile. Nécessite PHP 5.3 cependant.

+0

Désolé pour la version 5.2.5 – TaG

0
function getAge($then) { 
    $then = date('Ymd', strtotime($then)); 
    $diff = date('Ymd') - $then; 
    return substr($diff, 0, -4); 
} 

De la réponse de JYelton, il suffit de mettre cette fonction dans votre code, et envoyez votre date il:

$age = getAge('June 30 1959'); 

echo $age; 
+0

Voici l'exemple que j'allais chercher dans le post précédent sur SO. Merci :) – JYelton

+0

Sans vergogne copier-coller de http://stackoverflow.com/questions/1203651/how-do-i-easily-determine-the-age-from-an-birthday-php/1203665#1203665 – meagar

+0

Notez l'attribution , Meagar. – dclowd9901

0

Essayez ceci:

$age = floor((time() - mktime(0,0,0,$month,$day,$year))/31536000); 

Il prend le temps maintenant, soustraient le temps de leur naissance, le convertit en années et en étages en vous donnant leur âge actuel.

0

vous pouvez essayer cette ::

if(isset($_POST['submit'])) 
{ 
    $day = $_POST['day']; 
    $month = $_POST['month']; 
    $year = $_POST['year']; 

    $cal_date = mktime(0, 0, 0, $month, $day, $year); // convert in second 
    $start_date = date('Y-m-d',$cal_date); // make real time as Year-month-day for store value in database 

    $birthDay = strtotime("now") - strtotime($start_date); 

    echo substr($birthDay, 0, -4); 


    } 
0

Créer fonction en php:

function calculateage($BirthDate) 
{ 
list($Day, $Month, $Year) = explode(".", $BirthDate); 

$YearDiff = date("Y") - $Year; 

if(date("m") < $Month || (date("m") == $Month && date("d") < $DayDiff)) 
{ 
$YearDiff--; 
} 
return $YearDiff; 
} 

fonction d'appel où l'âge indiqué comme

calculateage($date) 

$date est la date de naissance dans le tableau mysql

Questions connexes