Foros del Web » Programando para Internet » PHP »

Dividir fechas para insertar en bd

Estas en el tema de Dividir fechas para insertar en bd en el foro de PHP en Foros del Web. Hola, tengo un problema que me esta quitando bastante tiempo y no puedo dar con la solución, tengo un formulario en donde envío por ajax ...
  #1 (permalink)  
Antiguo 26/02/2015, 06:00
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Dividir fechas para insertar en bd

Hola, tengo un problema que me esta quitando bastante tiempo y no puedo dar con la solución, tengo un formulario en donde envío por ajax una variable "fecha" mas otras variables para ser agregada en la tabla "cuentas" pero antes debo separar la fecha y obtener el numero del mes y de año para ingresar estos datos en una consulta que busca el atributo "codigo" dentro de la tabla "mes" en donde los atributos coincidan y luego se ejecuta el insert con los datos del formulario y el código obtenido en la consulta. El problema es que al ejecutar esto, no se inserta nada en la bd pero si borro la consulta en la tabla "mes" y reemplazo ese dato por un numero la cosa si funciona por lo que el problema claramente esta en la consulta a "mes".

Formulario:
Código PHP:
Ver original
  1. <form method="post">
  2.                     <div class="field-box">
  3.                         <label>Fecha </label>
  4.                         <div class="col-md-7">
  5.                             <input class="form-control" name="fecha" id="fecha" required type="text"/>
  6.                             <script type="text/javascript">
  7.                             RANGE_CAL_2 = new Calendar({
  8.                                 inputField: "fecha",
  9.                                 dateFormat: "%Y-%m-%d",
  10.                                 trigger: "fecha",
  11.                                 bottomBar: false,
  12.                                 onSelect: function() {
  13.                                     var date = Calendar.intToDate(this.selection.get());
  14.                                     LEFT_CAL.args.max = date;
  15.                                     this.hide();
  16.                                 }
  17.                             });
  18.                             function clearRangeEnd() {
  19.                                 document.getElementById("fecha").value = "";
  20.                                 LEFT_CAL.args.max = null;
  21.                             };
  22.                             </script>
  23.                         </div>                            
  24.                     </div>
  25.                     <div class='field-box'>
  26.                         <label>Detalle</label>
  27.                         <div class='col-md-7'>
  28.                             <input type='text' class='form-control' name='deta' id='deta'>
  29.                         </div>
  30.                     </div>
  31.                     <div class='field-box'>
  32.                         <label>Monto</label>
  33.                         <div class='col-md-7'>
  34.                             <input type='text' class='form-control' name='monto' id='monto'>
  35.                         </div>
  36.                     </div>...
  37. //siguen datos

Registro:
Código PHP:
Ver original
  1. <?php
  2. include_once('conexion.php');
  3.    
  4.   $fecha = $_POST['fecha'];
  5.   $deta = $_POST['deta'];
  6.   $monto = $_POST['monto'];
  7.   list($anio, $mes, $dia)= explode("-", $fecha);
  8.   $sql2 = "SELECT * FROM mes m WHERE m.nombre_mes = '$mes' AND m.anio_mes= '$anio' LIMIT 1;";
  9.   $res2 = $con->query($sql2);
  10.   if($mes_cuentas = $res2->fetch_array()){
  11.     $mesId = $mes_cuentas[0];
  12. }
  13.     $sql = "INSERT INTO cuenta (mes_codigo, saldos_codigo, fecha, detalle, cantidad) VALUES ('$mesId',1, '$fecha', '$deta', '$monto');";
  14.     $res = $con->query($sql);
  15.    
  16.     if ( isset( $res ) )
  17.         echo "correcto";
  18.     else
  19.         echo "error";  
  20. ?>
Tablas:
  #2 (permalink)  
Antiguo 26/02/2015, 06:15
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dividir fechas para insertar en bd

tampoco tengo éxito cambiando la consulta por:
Código PHP:
Ver original
  1. list($anio, $mesNum, $dia)= explode("-", $fecha,3);
  2.   $sql2 = "SELECT codigo FROM mes m WHERE m.nombre_mes = '$mesNum' LIMIT 1;";
  3.   $res2 = $con->query($sql2);
  4.   while($mes_cuentas = $res2->fetch_array()){
  5.     $mesId = $mes_cuentas[0];
  6.   }
  #3 (permalink)  
Antiguo 26/02/2015, 06:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Dividir fechas para insertar en bd

A mi entender te estás complicando innecesariamente...
Si la fecha está llegando como "AAAA-MM-DD HH:MI:SS", ni siquiera necesitas separarla para manejarla en la base:
Código PHP:
Ver original
  1. $sql2 = "SELECT * FROM mes m WHERE m.nombre_mes = MONTH('$fecha')
  2. AND m.anio_mes= YEAR('$fecha') LIMIT 1;";

Lo que te conviene es aproyechar las capacidades de SQL cuando haces la consulta...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 26/02/2015, 07:04
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dividir fechas para insertar en bd

Cita:
Iniciado por gnzsoloyo Ver Mensaje
A mi entender te estás complicando innecesariamente...
Si la fecha está llegando como "AAAA-MM-DD HH:MI:SS", ni siquiera necesitas separarla para manejarla en la base:
Código PHP:
Ver original
  1. $sql2 = "SELECT * FROM mes m WHERE m.nombre_mes = MONTH('$fecha')
  2. AND m.anio_mes= YEAR('$fecha') LIMIT 1;";

Lo que te conviene es aproyechar las capacidades de SQL cuando haces la consulta...
al parecer ese no es el problema ya que aun no me funciona, en todo caso la fecha esta en formato YYYY-MM-DD, esto se declara en el jscalendar del formulario (dateFormat: "%Y-%m-%d",).

Última edición por Begotten; 26/02/2015 a las 07:26
  #5 (permalink)  
Antiguo 26/02/2015, 09:47
 
Fecha de Ingreso: enero-2015
Ubicación: Valparaiso
Mensajes: 88
Antigüedad: 9 años, 3 meses
Puntos: 0
Respuesta: Dividir fechas para insertar en bd

probé ingresando la fecha manualmente y sigo en la mismas, el proceso se detiene antes de llegar a insertar los datos

Etiquetas: bd, dividir, fecha, formulario, registro, select, sql, tabla, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:46.