Hola Miguel, bienvenidos al foro

Gracias por sus comentarios sobre el script en general y por mi español, no es mi lengua nativo pero hago lo que puedo y incluso a veces me sale mejor que mi inglés

Bueno, lo que pides es interesante aunque lo cierto es que no tengo claro si debemos hacerlo en ajax, no por el php sea complejo (ya que es lo mismo a lo que voy a poner aqui) sino por el tema del modificación "en directo" de todas los días del mes - creo que podemos sobrecargar el navegador y/o servidor si intentamos modificar hasta 31 fechas a la vez con javascript, ¿no?
Asi que te voy a plantear un solución que va a necesitar una recarga de página. Quizás mas adelante podemos volver a mirarlo para ver si podemos hacerlo con ajax o no.
En fin, detallo los paso a seguir (no son muchos):
En "includes/functions.inc.php" dentro de la función draw_cal(), modificamos el rotolo de cada mes con un enlace asi:
- Code: Select all
<a href="index.php?book_month='.$month.'&book_year='.$year.'&id_item='.ID_ITEM.'">'.$month_name.' '.$year.'</a>
Como puedes ver, eso no hace mas crear un enlace al mismo página con los datos del mes y año que quieres reservar.
Ahora, en el "index.php" (o como tienes llamado la hoja principal que contiene el calendario) añadimos el siguiente código para capturar este petición mas o menos al principio de la página depsues de conectar con la bbdd y antes de sacar los datos de las "reservas" (por supuesto puedes poner este en una hoja aparte y redigirilo al calendario cuando se termina de grabar los datos):
- Code: Select all
// booking complete month
if( (isset($_REQUEST["book_month"])) && ($_REQUEST["book_month"]!="") ){
// book complete month
$cal_days=cal_days_in_month(CAL_GREGORIAN,$_REQUEST["book_month"],$_REQUEST["book_year"]);
for($day=1;$day<=$cal_days;$day++){
$insert_data.="('".$_REQUEST["id_item"]."','".$_REQUEST["book_year"]."-".$_REQUEST["book_month"]."-".$day."'),";
}
$insert_data=substr($insert_data,0,-1); # remove last comma
$insert="INSERT INTO ".T_BOOKINGS." (id_item,the_date) VALUES ".$insert_data."";
mysql_query($insert) or die("Error booking complete month<br>".mysql_error());
}
En realidad este código es bastante sencillo, se calcula el numero de días en el mes seleccionado y añade una entrada por cada dia en la tabla.
Bueno, pruebalo y dimi como lo ves.
Si realmente necesitas (quieres) que se hace con ajax, lo miararé.
saludos
Chris
PD. Ten en cuenta que tal y como lo he detallado aqui, este script NO contempla la posibilidad de que un mes ya tiene algúna reserva hecha ya. Para ello quizas habrá que condiciona el enlace en el rótulo de cada mes para no mostrarse en el caso que dicho mes contiene reservas - avisame si te interesá esta opción y si necesitas ayuda en detectarlo.