2012-09-21 7 views
6

私のJQuery Datepickerの値をDateデータ型のMySQLデータベースに挿入することはできません。どのように私は文字列を日付のデータ型に変換するのだろうか?私はMVCでCodeigniterを使用しています。ここに私のコードは次のとおりです。Codeigniterを使用してJQueryのdatepickerからMySQLの日付データ型に値を挿入する方法は?

javascriptの

<script> 
$(function() { 
    $("#datepicker").datepicker({ 
     showOn: "button", 
     buttonImage: "images/icons/calendar_24.png", 
     buttonImageOnly: true, 
     onSelect: function(dateText, inst){ 
      $("input[name='dob']").val(dateText); 
     } 
    }); 

}); 
</script> 

コントローラ

function create() 
{ 
    $data = array(
     'FirstName' => $this->input->post('fname'), 
     'DateofBirth' => $this->input->post('dob') 
    ); 

    $this->site_model->add_record($data); 
    $this->index(); 
} 

ビュー

<?php echo form_open('site/create');?> 
<p> 
    <label for="fname">First Name:</label> 
    <input type="text" name="fname" /> 
</p> 

<p> 
    <input type="text" name='dob' id="datepicker" /> 
</p> 

みんなありがとう!私はGoogleの でいくつかのソリューションを読んで、私はこれをしなかった :

コントローラ:

function create() 
{ 
    $date = $this->input->post('dob'); 

    $data = array(
     'FirstName' => $this->input->post('fname'), 
     'DateofBirth' => date('Y-m-d', strtotime($date)) 
    ); 

    $this->site_model->add_record($data); 
    $this->index(); 
} 

、これは私の問題を解決しました! :)

+0

方が良いスーツと思う: '1000年に至るまで' YYYY-MM-DD' -01-01」から「9999-12-31」に変更されます。受信した日付を(必要な場合)この形式に変換して挿入するだけです。 –

答えて

5

MySQLテーブルのdobカラムがDATEタイプであると仮定します。 Dateタイプは、yyyy-mm-ddの形式で値をとります。 2012-09-21

質問に答えるには、datepickerから上記の有効な形式に日付をフォーマットする必要があります。例えばあなたの日付ピッカー日は、あなたのコントローラでは、PHPのdate()機能を使用してMySQLの日付フォーマットに変換する必要がありdd-mm-yyフォーマットである場合には....(あまりにもDateTimeクラスのような日付を処理するために他の方法がある)

function create() 
{ 
    $data = array(
     'FirstName' => $this->input->post('fname'), 
     'DateofBirth' => date('Y-m-d', strtotime(str_replace('-', '/', $this->input->post('dob')))); 
    ); 

    $this->site_model->add_record($data); 
    $this->index(); 
} 

NOTEのstrtotime()を使用した場合、M/D/YまたはDMYに

日付がフォーマットが に様々な構成要素間のセパレータを見ることによって明確化されている:セパレータは スラッシュ(/)である場合、次いでアメリカのm/d/yが仮定されている。 区切り記号がダッシュ( - )またはドット(。)の場合は、ヨーロッパのd-m-y書式 とみなされます。

+0

良い説明+1 – Vamsi

+0

thx @Vamsiはコヴェントリー大学で学んだ?私はVamsiという男を知っていると思う。 – TigerTiger

+0

いいえ私は@HappyApeではありません – Vamsi

0
<script> 
$(function() { 
    $("#datepicker").datepicker({ 
     showOn: "button", 
     buttonImage: "images/icons/calendar_24.png", 
     buttonImageOnly: true, 
     dateFormat: 'Y-m-d'  // No need to add onselect , value selected will automatically be added to input field #datepicker  
    }); 

}); 
</script> 

あなたのコードは大丈夫です

0
$(document).ready(function() { 

    var year=new Date().getFullYear(); 
    var yearTo=year-18; 
    var yearFrom=year-100; 

    //display the years from hundred years in the past till 18 years in the past 

    $("#datePickerDOB").live("click",function(){  

     $("#datePickerDOB").datepicker({ 
      changeMonth: true, 
      changeYear: true, 
      yearRange: yearFrom+":"+yearTo, 
      dateFormat: "dd-mm-yy" 
     }); 
    }); 
}); 
0

使用DatePickerの書式を設定するには、次。

$( '#の日付ピッカーを')日付ピッカー({DATEFORMAT:「YY-MM- dd '});

+0

シンプルな作品は素晴らしいです!ありがとう! –

0

あなたのコントローラは次のようになります。

{ 
    $date = $this->input->post('dob'); 

    $data = array(
     'FirstName' => $this->input->post('fname'), 
     'DateofBirth' => date('Y-m-d', strtotime($date)) 
    ); 

    $this->site_model->add_record($data); 
    $this->index(); 
} 

私は、これはMySQLの日付は、特定の形式の単純な文字列である

関連する問題