En este tema: http://www.forosdelweb.com/f18/recorrer-dias-del-ano-922844/ tengo un codigo en PHP el cual saca las fechas de todo un año correspondientes a un dia de la semana... por ejemplo el lunes o el martes...etc.
El 2º paso, es guardar esas fechas en una tabla. La tabla tiene la siguiente estructura:
Código:
El codigo que estoy ejecutando es el siguiente, el cual hace un INSERT INTO en la tabla con las fechas correspondientes:TABLA agendas_excepciones (id, id_agenda, fecha_inicio, fecha_fin, activa)
Código PHP:
<?php
include('../../includes/config.php');
include('../../includes/conexion.php');
include('../../includes/funciones.php');
include('../funciones_calendar.php');
include('../funciones_calendar_buscar.php');
include('../funciones_calendar_consulta.php');
include("../../includes/control_usuario.php");
/*
-------------------------------------------------------------------------------------
| |
| Este codigo printa las fechas del año 2011 de un determinado dia por ejemplo |
| lunes (1), martes (2), viernes (5), sabado (6)...etc. |
| [email protected] |
-------------------------------------------------------------------------------------
*/
//--------------------------------------
$id_agenda = 1;
// mysql_query("INSERT INTO agendas_excepciones (id_agenda, fecha_inicio, fecha_fin, activa) VALUES ($id_agenda, '', '', 'si'", $link);
//--------------------------------------
$dia_semana = 5; //establece un dia: lunes=1, martes=2, miercoles=3 .... etc
// Esta funcion devuelve el dia de la semana
function calcula_numero_dia_semana($dia,$mes,$ano){
$numerodiasemana = date('w', mktime(0,0,0,$mes,$dia,$ano));
if ($numerodiasemana == 0)
{
$numerodiasemana = 7;
}
return $numerodiasemana;
}
$mes = 1; //para comenzar a printar desde enero...
$ano = 2011;
$dias_mes_2011 = array(1,31,28,31,30,31,30,31,31,30,31,30,31); //en la posicion 1 del array puede ir cualquier numero ya que no se usa dicha posicion.
//asigno al dia, el numero correspondiente con el calendario del año 2011 del dia de la semana dado.
switch ($dia_semana) {
case '1':
$dia='3';
break;
case '2':
$dia='4';
break;
case '3':
$dia='5';
break;
case '4':
$dia='6';
break;
case '5':
$dia='7';
break;
case '6':
$dia='1';
break;
case '7':
$dia='2';
break;
}
//mientras que el mes es igual a 12...
while ($mes <= 12)
{
//mientras que el dia no pase de los del mes... voy sumando 7
while ($dia <= $dias_mes_2011[$mes])
{
$f_inicio = "$ano-$mes-$dia 00:00:00";
$f_fin = "$ano-$mes-$dia 23:45:00";
$sql = mysql_query("INSERT INTO agendas_excepciones (id_agenda, fecha_inicio, fecha_fin, activa) VALUES (1, 'f_inicio', 'f_fin', 'si')", $link);
echo "sql: $sql <br>";
$dia = $dia + 7;
}
//si el dia a superado a los dias del mes, calculo el dia del mes siguiente con una simple resta...
if ($dia > $dias_mes_2011[$mes])
{
$diferencia = $dia - $dias_mes_2011[$mes];
$dia = $diferencia;
}
echo "<br>";
$mes = $mes +1;
}
?>
Código:
Como ven, la fecha_inicio y la fecha_fin me las deja con todo CEROS...332 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 347 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 348 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 349 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 350 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 351 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 352 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 353 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 354 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 355 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 356 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 357 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 346 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 345 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si 344 1 0000-00-00 00:00:00 0000-00-00 00:00:00 si ...................etc
Un campo de ejemplo que estaria bien seria este:
Código:
142 3 2011-11-09 00:00:00 2011-11-09 23:45:00 si
No se cual es el problema y porque me guarda los ceros...
Código PHP:
$f_inicio = "$ano-$mes-$dia 00:00:00";
$f_fin = "$ano-$mes-$dia 23:45:00";
$sql = mysql_query("INSERT INTO agendas_excepciones (id_agenda, fecha_inicio, fecha_fin, activa) VALUES (1, 'f_inicio', 'f_fin', 'si')", $link);
mmmm.... es necesario que si por ejemplo la fecha es 1-4-2011 solo funcionara si guardo 01-04-2011??? porque igual ese es el problema... nose
Gracias