2015-10-15 16 views
7

Kayıt formunda Gün, Ay ve Yıl için alanlar eklemeye çalışıyorum ve veritabanında kullanıcı kaydına ekliyorum. php kısmı buVeritabanına doğum tarihi ekleme

if(!isset($error)){ 

    //hash the password 
    $hashedpassword = $user->password_hash($_POST['password'], PASSWORD_BCRYPT); 

    //create the activasion code 
    $activasion = md5(uniqid(rand(),true)); 
    $dateOfBirth = $_POST['day']."-". $_POST['month']."-".$_POST['year']; 

    try { 
     $stmt = $pdo->prepare('INSERT INTO users (username,password,email,created,active,user_birthday) VALUES (:username, :password, :email, NOW(), :active, :user_birthday)'); 

     $stmt->execute(array(
      ':username' => $_POST['username'], 
      ':password' => $hashedpassword, 
      ':email' => $_POST['email'],     
      ':active' => $activasion, 
      ':user_birthday' => $dateOfBirth 
     )); 
    .... 

herşeyi kayıt vurmak içinde Sonra

<div class="form-group"> 
    <div class="form-inline"> 
     <div class="form-group pull-right"> 
     <select name="year" id="year" class="form-control"> 
      <option value="--" selected>Year</option>      
      <?php 
       for($i=date('Y'); $i>1899; $i--) { 
        $birthdayYear = ''; 
        $selected = ''; 
        if ($birthdayYear == $i) $selected = ' selected="selected"'; 
        print('<option value="'.$i.'"'.$selected.'>'.$i.'</option>'."\n"); 
       } 
      ?>       
      </select>  
     </div>      
     <div class="form-group pull-right"> 
     <select name="month" id="month" onchange="" class="form-control" size="1"> 
      <option value="--" selected>Month</option> 
      <option value="01">Jan</option> 
       ... 
      <option value="12">Dec</option> 
     </select>    
     </div>            
     <div class="form-group pull-right"> 
     <select name="day" id="day" onchange="" class="form-control" size="1"> 
     <option value="--" selected>Day</option> 
     <option value="01">01</option> 
       ... 
     <option value="31">31</option> 
     </select> 
    </div>            
</div> 
</div> 

veritabanına yerleştirilen ancak tarih 0000-00-00 geçerli: Yani bu şeklidir koyduk. Açılırken ne seçtiğimin önemi yok.

Veritabanındaki user_birthday alanı DATE dur. Neyin seçili olduğu neden kaydedilmiyor? DATE için

+1

$dateOfBirth i düşünmek zaman biçimi sorun:

Değişimi:

$dateOfBirth = $_POST['day']."-". $_POST['month']."-".$_POST['year']; 

başka bir yaklaşım

$dateOfBirth = $_POST['year']."-". $_POST['month']."-".$_POST['day']; 

için inci format ** YYYY-AA-DD ** –

cevap

14

Veritabanı biçimi YYYY-MM-DD ise ve DD-MM-YYYY eklemeye çalışıyoruz onun ekleme ve varsayılan değeri almayan yüzden

: 0000-00-00. Eğer yanlış format lütfen kullanımını kullanan

Kullanım dizisi

$dobArr = array($_POST['year'], $_POST['month'], $_POST['day']); 
$dateOfBirth = implode('-', $dobArr); 
+0

Ah aptal bana .. bunu nasıl özleyeceğim .. Doğru önüm .. Teşekkür ederim! –