2012-09-21 17 views
6

No puedo insertar los valores de mi JQuery Datepicker en mi base de datos MySQL con Date datatype. ¿Cómo voy a convertir el tipo de datos de cadena a fecha? estoy usando Codeigniter con MVC. aquí está mi código:¿Cómo insertar valores de JQuery datepicker a MySQL datatype using 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> 

controlador

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

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

vista

<?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> 

gracias chicos! leí alguna solución en Google y lo hice:

controlador:

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

y esto resuelto mi problema! :)

+0

Una fecha MySQL es una cadena simple con un determinado formato: 'AAAA-MM-DD' que va de 1000' -01-01' a '9999-12-31'. Simplemente convierta la fecha de recepción a este formato (si es necesario) e insértelo. –

Respuesta

5

Supongo que la columna dob de su tabla MySQL es del tipo DATE. Date tipo toma valor en el formato de yyyy-mm-dd p. Ej. 2012-09-21

Para responder a su pregunta, debe formatear la fecha del datepicker al formato válido anterior. p.ej. si la fecha de selector de fecha está en el formato dd-mm-yy que necesita para convertirlo en formato de fecha MySQL utilizando la función de php date() en su controlador .... (hay otros métodos para manejar fechas como la clase de fecha y hora también)

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

NOTA utilizando strtotime()

fechas en el m/d formatos/y o dmy se disambiguated examinado el separador entre los diversos componentes: si el separador es un barra (/), entonces la Se supone m/d/y estadounidense; mientras que si el separador es un guión (-) o un punto (.), entonces se supone el formato europeo d-m-y .

+0

buena explicación +1 por ella – Vamsi

+0

thx @Vamsi ¿Estudiaste en Coventry University? Creo que sé que un tipo llamó a Vamsi. – TigerTiger

+0

no, yo no soy @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> 

Su código está bien

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

la siguiente manera para formatear el selector de fechas:.

$ ('# selector de fechas') selector de fechas ({dateFormat: 'aa-mm- dd '});

+0

¡Simple pero funciona genial! ¡Gracias! –

0

Su controlador debe tener este aspecto:

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

Creo que esto le convenga mejor