Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/11/2011, 09:46
H_Chinaski
 
Fecha de Ingreso: septiembre-2011
Ubicación: Almería
Mensajes: 20
Antigüedad: 13 años, 2 meses
Puntos: 2
Repetir eventos con jQuery Week Calendar

Hola a todos:

Estoy adaptando el jQuery Week Calendar para usarlo con una base de datos. Ya tengo casi todo hecho y funcionando, pero quiero añadirle la opción de crear eventos que se repitan, diariamente, semanalmente,etc. La idea de como hacerlo ya la tengo, pero cuando me he puesto a aplicarla, me aparece una advertencia de PHP. El error es el siguiente:
Cita:
Warning: date() expects parameter 2 to be long, string given in C:\xampp\htdocs\calendario_luis\calendario\guardar .php on line 16
Lo más cómico, es que sólo me manda la advertencia la primera vez que introduzco una nueva fecha para la fecha final de repetición. Si vuelvo a crear un evento, la fecha se guarda correctamente. Pero en cuanto actualizo la página, el primer intento siempre falla. Con el Firebug he visto que aparentemente el parámetro que se pasa no es numérico (NaN). Dejo el código para entenderlo mejor.

Los datos llegan por JSON, del script calendario.js.
Código Javascript:
Ver original
  1. eventNew : function(calEvent, $event) {
  2.     $('#repeat_field').change(calendar_new_get_recurring_end);
  3.          var $dialogContent = $("#event_edit_container");
  4.          resetForm($dialogContent);
  5.          var startField = $dialogContent.find("select[name='start']").val(calEvent.start);
  6.          var endField = $dialogContent.find("select[name='end']").val(calEvent.end);
  7.          var titleField = $dialogContent.find("input[name='title']");
  8.          var bodyField = $dialogContent.find("textarea[name='body']");
  9.      var repeatField = $dialogContent.find("select[name='repeat']").val(calEvent.repeat);
  10.      var repeatEndField = $dialogContent.find("#calendar_new_recurring_end").val(calEvent.repeatEndDate);
  11.  
  12.  
  13.  
  14.  
  15.          $dialogContent.dialog({
  16.             modal: true,
  17.             title: "Nueva Cita",
  18.             close: function() {
  19.                $dialogContent.dialog("destroy");
  20.                $dialogContent.hide();
  21.                $('#calendar').weekCalendar("removeUnsavedEvents");
  22.             },
  23.             buttons: {
  24.                Guardar : function() {
  25.                   calEvent.id = id;
  26.                   id++;
  27.                   calEvent.start = new Date(startField.val());
  28.                   calEvent.end = new Date(endField.val());
  29.                   calEvent.title = titleField.val();
  30.                   calEvent.body = bodyField.val();
  31.           calEvent.repeat = repeatField.val();
  32.           calEvent.repeatEndDate = new Date(repeatEndField.val());
  33.                    $.getJSON("guardar.php?titulo="+titleField.val()+"&cuerpo="+bodyField.val()+"&fecha_inicio="+calEvent.start.getTime()/1000+"&fecha_final="+calEvent.end.getTime()/1000+"&repetir="+repeatField.val()+"&final_repeticion="+calEvent.repeatEndDate.getTime()/1000+"&tipo=ingreso&id="+calEvent.id, { }, function(json){});
  34.  
  35.                   $calendar.weekCalendar("removeUnsavedEvents");
  36.                   $calendar.weekCalendar("updateEvent", calEvent);
  37.                   $dialogContent.dialog("close");
  38.                },
  39.                Cancelar : function() {
  40.                   $dialogContent.dialog("close");
  41.                }
  42.             }

El parámetro que falla aquí es repeatEndDate.

El archivo guardar.php es el que inserta los datos en la DB.
Código PHP:
Ver original
  1. <?  
  2. include('conf/config.php') ;
  3. include('clases/base_datos.php') ;
  4. $bd = new base_datos() ;
  5. $bd1 = new base_datos() ;
  6. $titulo = addslashes($_GET['titulo']);
  7. $cuerpo = addslashes($_GET['cuerpo']);
  8. $fecha_inicio = $_GET['fecha_inicio'];
  9. $fecha_final = $_GET['fecha_final'];
  10. $repetir = $_GET['repetir'];
  11. $final_repeticion = $_GET['final_repeticion'];
  12. $id = $_GET['id'];
  13. $tipo = $_GET['tipo'];
  14. $fecha_inicio=date('Y-m-d H:i:s',$fecha_inicio);
  15. $fecha_final=date('Y-m-d H:i:s',$fecha_final);
  16. $final_repeticion=date('Y-m-d',$final_repeticion);

La variable $final_repeticion es la que se guarda en la DB.
No entiendo muy bien que puede pasar, el hecho de que sólo se produzca la primera vez me desconcierta. Si alguien puede ayudarme, se lo agradezco de antemano.

Un saludo!