6

JQuery Datepicker から Date データ型の MySQL データベースに値を挿入できません。文字列を日付データ型に変換するにはどうすればよいですか? MVCでCodeigniterを使用しています。ここに私のコードがあります:

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>

みんなありがとう!私はグーグルでいくつかの解決策を読んで、これをしました:

コントローラ:

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();
}

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

4

5 に答える 5

5

あなたのMySQLテーブルの dob 列はDATE型であると思います。 type は、例えばDateの形式で値を取りますyyyy-mm-dd2012-09-21

したがって、質問に答えるには、日付ピッカーの日付を上記の有効な形式にフォーマットする必要があります。たとえば、datepicker の日付が次のdd-mm-yy形式の場合、コントローラーで php の関数を使用して mysql の日付形式に変換する必要がありdate()ます (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();
}

strtotime() 使用時の注意

m/d/y または dmy 形式の日付は、さまざまな構成要素間の区切り記号を調べることで明確になります。区切り記号がスラッシュ (/) の場合、アメリカの m/d/y と見なされます。一方、セパレータがダッシュ (-) またはドット (.) の場合は、ヨーロッパの dmy 形式が想定されます。

于 2012-09-21T08:33:58.903 に答える
0

以下を使用して、日付ピッカーをフォーマットします。

$('#datepicker').datepicker({dateFormat : 'yy-mm-dd'});

于 2013-09-03T19:20:56.780 に答える
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();
}

こっちの方が似合うと思う

于 2015-05-14T10:46:07.460 に答える
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>

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

于 2012-09-21T08:34:46.810 に答える