Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/06/2011, 05:36
Avatar de fbedia88
fbedia88
 
Fecha de Ingreso: enero-2011
Ubicación: Santander
Mensajes: 83
Antigüedad: 13 años, 10 meses
Puntos: 20
problema INSERT INTO mysql y php

Muy buenas a todos! Les explico el problema.

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:
TABLA agendas_excepciones (id, id_agenda, fecha_inicio, fecha_fin, activa)
El codigo que estoy ejecutando es el siguiente, el cual hace un INSERT INTO en la tabla con las fechas correspondientes:

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

?>
La SQL se ejecuta, pero cuando voy a ver la tabla me aparecen todos los campos asi:

Código:
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
Como ven, la fecha_inicio y la fecha_fin me las deja con todo CEROS...

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); 
$f_inicio y $f_fin contienen bien lo que deberia de guardar....

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