PHP - Generar un calendario semanal PhP ingresando una fecha

   
Vista:

Generar un calendario semanal PhP ingresando una fecha

Publicado por Alexis (13 intervenciones) el 08/01/2012 16:48:46
Hola amigos, lo que quiero realizar es lo siguiente, desde un archivo voy a ingresar una fecha seleccionada desde un calendario, el dato que se enviraría sería, por ejemplo, "07-01-2012", la idea es que en el archivo receptor, distinga qué día de la semana es y en base a eso armar un calendario de la semana con los nombres de los días y las fechas correspondientes, por ejemplo, el "07-01-2012" es sábado, entonces deberá generarse una tabla con lo siguiente (creo que será necesario usar un bucle):

LUNES 2 MARTES 3 MIÉRCOLES 4 JUEVES 5 VIERNES 6 SÁBADO 7

Y luego, en las filas inferiores, imprimiré datos de una tabla en la BD que correspondan con cada día de cada columna.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Devolver el dia de la semana de una fecha dada

Publicado por xve (5522 intervenciones) el 08/01/2012 17:25:56
Hola Alexis, no se muy bien donde tienes el problema, pero para obtener el día de la semana de una fecha podría ser algo así:
1
echo date("w", strtotime("2012/01/07"));

Coméntame exactamente donde tienes el problema para intentar ayudarte...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Devolver el dia de la semana de una fecha dada

Publicado por Alexis (13 intervenciones) el 08/01/2012 17:43:42
Hola, el problema está, primero, cuando captura la variable, yo la envío en formato día-mes-año y en el archivo receptor la convierto a año-mes-día de esta forma:

list($dia, $mes, $anio) = split('[/.-]', $_GET['semanal']);
$fecha2 = $anio."-".$mes."-".$dia;

He impreso cada uno de los datos de la segunda fila de código que estoy mostrando y coinciden con los que envío, sin embargo, probando tu función, me muestra "0", incluso probando otros métodos como usando un array con los días de la semana, lo que logra capturar es el miércoles 31 de diciembre de 1969, fecha completamente diferente a la que envío:

Este es el método que usé:

$week_days = array ("Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado");
$months = array ("", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
$year_now = date ("Y", $fecha2);
$month_now = date ("n", $fecha2);
$day_now = date ("j", $fecha2);
$week_day_now = date ("w", $fecha2);
$fecha_completa = $week_days[$week_day_now] . ", " . $day_now . " de " . $months[$month_now] . " de " . $year_now;
echo "La fecha enviada es: ". $fecha_completa;

La respuesta que me da es "Miercoles, 31 de diciembre de 1969", la verdad no veo en dónde está el error. Por otro lado, mi objetivo principal es armar una tabla con 6 columnas en las que la cabecera de cada una contenga los datos de la semana de la fecha que envío, por ejemplo, si envío el "07-01-2012" que es sábado, debe imprimirse una tabla con los siguientes encabezados:

LUNES 2 MARTES 3 MIERCOLES 4 JUEVES 5 VIERNES 6 SABADO 7

En base a esos datos, en las filas inferiores se deberán mostrar datos de la BD que coincidan con cada fecha de cada columna, algo así como una agenda semanal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

RE: Devolver el dia de la semana de una fecha dada

Publicado por xve (5522 intervenciones) el 08/01/2012 19:58:52
Hola Dave, creo que tienes algunos errores...te comento...

split() es una instrucción deprecated. La he reemplazado por preg_split()

date("n") y date("w") devuelve un numero, no un nombre, por lo que te tienes que definir el array como clave=>valor... para así, vincular el número con el texto.

date("..",int timestamp) A la función date, tienes que pasarle un parametro numerico, no una fecha dada, por eso utilizamo la función strtotime() que pasa una fecha a su valor timestamp.

Este código te funcionara perfectamente.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$week_days = array (0=>"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado");
$months = array (1=>"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");
 
#defino el valor de manera manual
$_GET['semanal']="07-01-2012";
 
list($dia, $mes, $anio) = preg_split('/[\/-]+/', $_GET['semanal']);
$fecha2 = $anio."-".$mes."-".$dia;
 
$year_now = date ("Y", strtotime($fecha2));
$month_now = date ("n", strtotime($fecha2));
$day_now = date ("j", strtotime($fecha2));
$week_day_now = date ("w", strtotime($fecha2));
 
$fecha_completa = $week_days[$week_day_now] . ", " . $day_now . " de " . $months[$month_now] . " de " . $year_now;
echo "La fecha enviada es: ". $fecha_completa;
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Devolver el dia de la semana de una fecha dada

Publicado por Alexis (13 intervenciones) el 08/01/2012 18:10:55
Ya logro mostrar la fecha completa y de manera correcta:

1
2
3
4
5
6
7
8
9
10
11
12
function GetDateES($Fecha) {
 
$a[1] = "Enero"; $a[2] = "Febrero"; $a[3] = "Marzo"; $a[4] = "Abril"; $a[5] = "Mayo"; $a[6] = "Junio";    $a[7] = "Julio"; $a[8] = "Agosto"; $a[9] = "Septiembre"; $a[10] = "Octubre"; $a[11] = "Noviembre"; $a[12] = "Diciembre";
 
$b = array("Domingo","Lunes","Martes","Mi&eacute;rcoles","Jueves","Viernes","S&aacute;bado");
 
return $b[date("w",strtotime($Fecha))] .", ". date("d",strtotime($Fecha)) ." de " . $a[date("n",strtotime($Fecha))] . " de " . date("Y",strtotime($Fecha));
 
}
 
$Var_data = GetDateES($fecha2);
echo "La fecha enviada es : ".$Var_data;


Ahora debo de imprimir la tabla que mencioné en la respuesta anterior y la verdad que no se me ocurre cómo podría hacerlo, si pudieras darme una pauta sería genial, saludos y gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por Alexis (13 intervenciones) el 09/01/2012 00:36:04
Después de analizar y probar con diferentes cambios, he logrado mostrar los datos de la semana correspondiente a la fecha ingresada, el problema está ahora cuando se trata del primer y último día del mes, por ejemplo, si es "jueves 1 de mayo", deberá imprimirse:

LUNES 28 | MARTES 29 | MIÉRCOLES 30 | JUEVES 1 | VIERNES 2 | SÁBADO 3

Debe de verificar cuál es el último día del mes anterior para realizar la impresión, del igual modo cuando se selecciona el último día del mes, en el caso de febrero, se debe verificar si es bisiesto o no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por Alexis (13 intervenciones) el 16/01/2012 23:33:28
Finalmente pude darle solución a todo lo que necesitaba.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por xve (5522 intervenciones) el 17/01/2012 08:53:42
Hola Alexis, nos puedes mostrar finalmente como lo realizaste??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por Alexis (13 intervenciones) el 27/01/2012 23:00:26
Este es para el calendario semanal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
<?php require_once('../Connections/cnx_WebApp.php'); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/print.css" media="print"/>
</head>
<body>
<?php
//BUSCANDO NOMBRE DEL COLEGIO
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsColegio = "SELECT * FROM opciones";
$rsColegio = mysql_query($query_rsColegio, $cnx_WebApp) or die(mysql_error());
$row_rsColegio = mysql_fetch_assoc($rsColegio);
$totalRows_rsColegio = mysql_num_rows($rsColegio);
 
//BUSCANDO ALUMNOS
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsAlumnos = "SELECT * FROM persona, alumnos, matricula WHERE matricula.IdSeccion_Mat = ".$_GET['seccion']." AND matricula.IdAlumno_Mat = alumnos.Id_Alumno AND alumnos.IdPersona_Alu = persona.Id_Persona ORDER BY persona.Paterno_Per,persona.Materno_Per,persona.Nombres_Per ASC";
$rsAlumnos = mysql_query($query_rsAlumnos, $cnx_WebApp) or die(mysql_error());
$row_rsAlumnos = mysql_fetch_assoc($rsAlumnos);
$totalRows_rsAlumnos = mysql_num_rows($rsAlumnos);
 
//BUSCANDO SECCION, GRADO Y NIVEL
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsSeccion = "SELECT * FROM seccion, grado, niveles WHERE seccion.Id_Seccion = ".$_GET['seccion']." AND grado.Id_Grado = seccion.IdGrado_Sec AND niveles.Id_Niveles = grado.IdNivel_Gra";
$rsSeccion = mysql_query($query_rsSeccion, $cnx_WebApp) or die(mysql_error());
$row_rsSeccion = mysql_fetch_assoc($rsSeccion);
$totalRows_rsSeccion = mysql_num_rows($rsSeccion);
 
//AHORA SUMAMOS 5 DÍAS MÁS A LA FECHA RECIBIDA PARA OBTENER EL ÚLTIMO DÍA HÁBIL DE LA SEMANA
$dia_final_semana = date('d-m-Y', strtotime($_GET['fecha']. '+ 5 day'));
?>
 
<table border="0" align="center" width="100%">
	<tr>
    	<td rowspan="2" width="10%">
        	<img src="../img/<?=$row_rsColegio['logo_opc']?>">
        </td>
        <td width="90%" valign="top">
        	<h2 style="font-family:Arial, Helvetica, sans-serif" align="center"><?=utf8_encode($row_rsColegio['licencia_opc'])?></h2>
            <h3 style="font-family:Arial, Helvetica, sans-serif" align="center">FICHA DE ASISTENCIA SEMANAL</h3>
        </td>
	</tr>
</table>
 
<p align="center">
  <table border="0" cellpadding="2" cellspacing="2" width="100%" class="fuente">
        <tr>
        	<td align="center"><strong>Periodo:</strong>&nbsp;Del&nbsp;<strong><?=$_GET['fecha']?></strong>&nbsp;Al&nbsp;<strong><?=$dia_final_semana?></strong></td>
            <td>&nbsp;</td>
            <td align="center"><strong>Nivel:</strong>&nbsp;<?=utf8_encode($row_rsSeccion['Nombre_Niv'])?></td>
            <td>&nbsp;</td>
            <td align="center"><strong>Grado:</strong>&nbsp;<?=utf8_encode($row_rsSeccion['Nombre_Gra'])?></td>
            <td>&nbsp;</td>
            <td align="center"><strong>Secci&oacute;n:</strong>&nbsp;<?=utf8_encode($row_rsSeccion['Nombre_Sec'])?></td>
        </tr>
  </table>
</p>
 
<table border="1" cellpadding="0" cellspacing="0" width="100%" align="center" style="font-family:Arial, Helvetica, sans-serif;border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px">
	<tr>
    	<td align="center" width="5%" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"></td>
    	<td align="center" width="28%" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><strong>Alumno</strong></td>
        <?php
			//------------------------------------------------------------------------------
			$fecha_base = $_GET['fecha']; //FECHA RECIBIDA
			$dia_sem = date("w", strtotime($fecha_base)); //DÍA DE LA SEMANA DE LA FECHA RECIBIDA
 
			$dias = array('D','L','M','M','J','V','S'); //ARRAY DE DÍAS DE LA SEMANA 
			$meses = array('','Ene','Feb','Mar','May','Jun','Jul','Ago','Set','Oct','Nov','Dic'); //ARRAY DE MESES DEL AÑO
 
			list($day, $month, $year) = split('[/.-]', $fecha_base);
			$dia_fecha = $day; //DÍA DE LA FECHA RECIBIDA
			$month_fecha = $month; //MES DE LA FECHA RECIBIDA
			$year_fecha = $year; //AÑO DE LA FECHA RECIBIDA
 
			$nro = 1; //INICIALIZO EN 1 EL NRO. DE ORDEN EN EL QUE SE IMPRIMIRÁN LOS DATOS DE LOS ALUMNOS
 
			$limite_semana = $dia_fecha + 5; //OBTENGO EL ÚLTIMO DÍA DE LA SEMANA
 
			$fecha_inicio = $year_fecha."-".$month_fecha."-".$dia_fecha; //FECHA DE INICIO PARA LA BÚSQUEDA EN LA BD
			$fecha_fin = $year_fecha."-".$month_fecha."-".$limite_semana; //FECHA FINAL PARA LA BÚSQUEDA EN LA BD
			//------------------------------------------------------------------------------
 
 
			for ($i=0;$i<7;$i++) { //Genero los divisiones de la semana
				if ($dia_sem>6){ $dia_sem = 0; } // Con esto reinicio los dias de Sabado a Domingo.
				?>
				<div class="cuadro<? if ($dia_sem==0) { echo " rojo"; } else { echo " verde"; } // Verifico si es domingo entonces ?>" align="center">
				<?php
				$actual = date('d-m-Y', strtotime($fecha_base. '+'.$i.' day')); // Dia actual y va sumando hasta llegar a ser menor que 7, osea genera la semana
				list($dia, $mes, $year) = split('[/.-]', $actual); //Separo los dias
				$cero = substr($mes,0,1);
				if ($cero==0) { $mesreal = substr($mes,-1,1); } else { $mesreal = $mes; }
			 		if($dias[$dia_sem]!='D'){
				?>
						<td align="center" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=$dias[$dia_sem]."<br />".$dia?></td>
                <?php
					}
				$dia_sem++;
				$dia++;
				?>
                </div>
                <?php
			}
			?>
    </tr>
    <?php
		//AHORA SE IMPRIMEN LOS NOMBRES DE ALUMNOS Y LOS ESTADOS DE ASISTENCIA
		do{
			$id_alu = $row_rsAlumnos['Id_Alumno'];
		?>
        	<tr>
            	<td align="center" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=$nro?></td>
            	<td align="center" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=utf8_encode($row_rsAlumnos['Paterno_Per'])?>&nbsp;<?=utf8_encode($row_rsAlumnos['Materno_Per'])?>,&nbsp;<?=utf8_encode($row_rsAlumnos['Nombres_Per'])?></td>
 
                <?php
					$actual2 = $_GET['fecha'];
 
					for($z=1;$z<7;$z++){
						//CAMBIAMOS EL FORMATO DE FECHA DE ACTUAL2
						list($day, $month, $year) = split('[/.-]', $actual2);
						$fecha_actual = $year."-".$month."-".$day;
 
						//BUSCANDO ASISTENCIA
						mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
						$query_rsAsistencia = "SELECT * FROM asistencia WHERE Fecha_Asi = '".$fecha_actual."' AND IdAlumno_Asi=".$id_alu;
						$rsAsistencia = mysql_query($query_rsAsistencia, $cnx_WebApp) or die(mysql_error());
						$row_rsAsistencia = mysql_fetch_assoc($rsAsistencia);
						$totalRows_rsAsistencia = mysql_num_rows($rsAsistencia);
						
						switch($row_rsAsistencia['Tipo_Asi']){
							case 1:
								$estado = "P";
							break;
							
							case 2:
								$estado = "TJ";
							break;
							
							case 3:
								$estado = "TI";
							break;
							
							case 4:
								$estado = "FJ";
							break;
							
							case 5:
								$estado = "FI";
							break;
						}
						
						if($totalRows_rsAsistencia>0){
						?>
							<td align="center" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=$estado?></td>
						<?php
						}
						else{
						?>
                            <td align="center" style="border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px">&nbsp;</td>
                           <?php
						}
						$actual2 = date('d-m-Y', strtotime($actual2. '+ 1 day'));
					}
				?>
            </tr>
		<?php
			$nro++;
		}while($row_rsAlumnos = mysql_fetch_assoc($rsAlumnos));
	?>
</table>
<br />
<table border="0" align="center">
	<tr>
    	<td align="center" style="background:#0F0"><strong>P: Presente</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#F60"><strong><font color="#FFFFFF">TJ: Tardanza Justificada</font></strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#FF0"><strong>TI: Tardanza Injustificada</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#0FF"><strong>FJ: Falta Justificada</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#F00"><strong><font color="#FFFFFF">FI: Falta Injustificada</font></strong></td>
        <td>&nbsp;</td>
    </tr>
</table>
 
<div id="print">
<p><a href="javascript:print()" title="Imprimir asistencia" class="linksrojo fuente"><img src="../img/icono_print.png" border="0" /><strong>Imprimir</strong></a></p>
</div>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por Alexis (13 intervenciones) el 27/01/2012 23:00:53
Y este es el calendario mensual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<?php require_once('../Connections/cnx_WebApp.php'); ?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="../css/print.css" media="print"/>
</head>
<body>
<?php
//BUSCANDO NOMBRE DEL COLEGIO
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsColegio = "SELECT * FROM opciones";
$rsColegio = mysql_query($query_rsColegio, $cnx_WebApp) or die(mysql_error());
$row_rsColegio = mysql_fetch_assoc($rsColegio);
$totalRows_rsColegio = mysql_num_rows($rsColegio);
 
//BUSCANDO ALUMNOS
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsAlumnos = "SELECT * FROM persona, alumnos, matricula WHERE matricula.IdSeccion_Mat = ".$_GET['seccion']." AND matricula.IdAlumno_Mat = alumnos.Id_Alumno AND alumnos.IdPersona_Alu = persona.Id_Persona ORDER BY persona.Paterno_Per,persona.Materno_Per,persona.Nombres_Per ASC";
$rsAlumnos = mysql_query($query_rsAlumnos, $cnx_WebApp) or die(mysql_error());
$row_rsAlumnos = mysql_fetch_assoc($rsAlumnos);
$totalRows_rsAlumnos = mysql_num_rows($rsAlumnos);
 
//BUSCANDO SECCION, GRADO Y NIVEL
mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
$query_rsSeccion = "SELECT * FROM seccion, grado, niveles WHERE seccion.Id_Seccion = ".$_GET['seccion']." AND grado.Id_Grado = seccion.IdGrado_Sec AND niveles.Id_Niveles = grado.IdNivel_Gra";
$rsSeccion = mysql_query($query_rsSeccion, $cnx_WebApp) or die(mysql_error());
$row_rsSeccion = mysql_fetch_assoc($rsSeccion);
$totalRows_rsSeccion = mysql_num_rows($rsSeccion);
?>
<table border="0" align="center" width="100%">
	<tr>
    	<td rowspan="2" width="10%">
        	<img src="../img/<?=$row_rsColegio['logo_opc']?>">
        </td>
        <td width="90%" valign="top">
        	<h2 style="font-family:Arial, Helvetica, sans-serif" align="center"><?=utf8_encode($row_rsColegio['licencia_opc'])?></h2>
            <h3 style="font-family:Arial, Helvetica, sans-serif" align="center">FICHA DE ASISTENCIA MENSUAL</h3>
        </td>
	</tr>
</table>
 
<?php
$dias = array('D','L','M','M','J','V','S'); //ARRAY DE DÍAS DE LA SEMANA 
$meses = array('','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciciembre'); //ARRAY DE MESES DEL AÑO
?>
 
<p align="center">
  <table border="0" cellpadding="2" cellspacing="2" width="100%" class="fuente">
        <tr>
        	<td align="right"><strong>Periodo:</strong></td>
            <td align="left"><?=$meses[$_GET['fecha_month']]?> - <?=$_GET['fecha_year']?></td>
            <td>&nbsp;</td>
            <td align="right"><strong>Nivel:</strong></td>
            <td align="left"><?=utf8_encode($row_rsSeccion['Nombre_Niv'])?></td>
            <td>&nbsp;</td>
            <td align="right"><strong>Grado:</strong></td>
            <td align="left"><?=utf8_encode($row_rsSeccion['Nombre_Gra'])?></td>
            <td>&nbsp;</td>
            <td align="right"><strong>Secci&oacute;n:</strong></td>
            <td align="left"><?=utf8_encode($row_rsSeccion['Nombre_Sec'])?></td>
        </tr>
  </table>
</p>
 
<table border="1" cellpadding="0" cellspacing="0" width="100%" align="center" style="font-family:Arial, Helvetica, sans-serif; ; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px">
	<tr>
    	<td align="center" width="5%" style="; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"></td>
    	<td align="center" width="28%" style="; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><strong>Alumno</strong></td>
        <?php
			//-----------------------------------------------------------------------------			
			$limite_mes = date('t', mktime(0, 0, 0, $_GET['fecha_month'], 1, $_GET['fecha_year'])); //ÚLTIMO DÍA DEL MES
			$fecha_base = "01-".$_GET['fecha_month']."-".$_GET['fecha_year']; //FECHA DE PARTIDA DEL MES
			$dia_sem = date("w",strtotime($fecha_base)); //DÍA DE LA SEMANA DE LA FECHA DE PARTIDA DEL MES
 
			$fecha_inicio = $_GET['fecha_year']."-".$_GET['fecha_month']."-01"; //FECHA DE INICIO PARA LA BÚSQUEDA EN LA BD
			$fecha_fin = $_GET['fecha_year']."-".$_GET['fecha_month']."-".$limite_mes; //FECHA FINAL PARA LA BÚSQUEDA EN LA BD
			//------------------------------------------------------------------------------
 
			//EMPIEZA LA IMPRESIÓN DE LAS CABECERAS
			for ($j=0;$j<$limite_mes;$j++) { //Genero los divisiones de la semana
				if ($dia_sem>6){ $dia_sem = 0; } // Con esto reinicio los dias de Sabado a Domingo.
				?>
				<div class="cuadro<? if ($dia_sem==0) { echo " rojo"; } else { echo " verde"; } // Verifico si es domingo entonces ?>" align="center">
					<?php
                    $actual = date('d-m-Y', strtotime($fecha_base. '+'.$j.' day'));
                    list($dia, $mes, $year) = split('[/.-]', $actual); //Separo los dias
                    $cero = substr($mes,0,1);
                    if ($cero==0) { $mesreal = substr($mes,-1,1); } else { $mesreal = $mes; }
 
					if($dia_sem == 0){
						$color = "#F06";
					}
					else{
						$color = "#FFF";
					}
                    ?>
                        <td style="background:<?=$color?>; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px" align="center"><?=$dias[$dia_sem]."<br />".$dia?></td>
                    <?php
                    $dia_sem++;
                    $dia++;
                    ?>
                </div>
                <?php
			}
			?>
    </tr>
 
        <?php
		$nro = 1;
 
		//AHORA SE IMPRIMEN LOS NOMBRES DE ALUMNOS Y LOS ESTADOS DE ASISTENCIA
		do{
			$id_alu = $row_rsAlumnos['Id_Alumno'];
		?>
        	<tr>
            	<td align="center" style="; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=$nro?></td>
            	<td align="center" style="; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px"><?=utf8_encode($row_rsAlumnos['Paterno_Per'])?>&nbsp;<?=utf8_encode($row_rsAlumnos['Materno_Per'])?>,&nbsp;<?=utf8_encode($row_rsAlumnos['Nombres_Per'])?></td>
 
                <?php
					$actual2 = $_GET['fecha_year']."-".$_GET['fecha_month']."-01";
 
					for($z=1;$z<=$limite_mes;$z++){
						//BUSCANDO ASISTENCIA
						mysql_select_db($database_cnx_WebApp, $cnx_WebApp);
						$query_rsAsistencia = "SELECT * FROM asistencia WHERE Fecha_Asi = '".$actual2."' AND IdAlumno_Asi = ".$id_alu;
						$rsAsistencia = mysql_query($query_rsAsistencia, $cnx_WebApp) or die(mysql_error());
						$row_rsAsistencia = mysql_fetch_assoc($rsAsistencia);
						$totalRows_rsAsistencia = mysql_num_rows($rsAsistencia);

						$dia_sem2 = date("w", strtotime($actual2));
						
						if($dia_sem2 == 0){
							$color = "#F06";
						}
						else{
							$color = "#FFF";
						}
						
						switch($row_rsAsistencia['Tipo_Asi']){
							case 1:
								$estado = "P";
							break;
							
							case 2:
								$estado = "TJ";
							break;
							
							case 3:
								$estado = "TI";
							break;
							
							case 4:
								$estado = "FJ";
							break;
							
							case 5:
								$estado = "FI";
							break;
						}
						
						//SI EL ID DEL ALUMNO EN LA TABLA ASISTENCIA COINCIDE CON EL DE LA TABLA ALUMNOS Y LA FECHA EN LA BASE COINCIDE CON LA FECHA MOMENTÁNEA
						if($totalRows_rsAsistencia>0){
						?>
							<td style="background:<?=$color?>;; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px" align="center"><?=$estado?></td>
						<?php
						}
						else{
						?>
                            <td style="background:<?=$color?>;; border:#333; border-bottom:#000 solid 1px; border-left:#000 solid 1px; border-right:#000 solid 1px; border-top:#000 solid 1px" align="center">&nbsp;</td>
                           <?php
						}
 
						$actual2 = date('Y-m-d', strtotime($actual2. '+ 1 day'));
					}
				?>
            </tr>
        <?php
		$nro++;
		}while($row_rsAlumnos = mysql_fetch_assoc($rsAlumnos));
        ?>
</table>
<br />
<table border="0" align="center">
	<tr>
    	<td align="center" style="background:#0F0"><strong>P: Presente</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#F60"><strong><font color="#FFFFFF">TJ: Tardanza Justificada</font></strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#FF0"><strong>TI: Tardanza Injustificada</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#0FF"><strong>FJ: Falta Justificada</strong></td>
        <td>&nbsp;</td>
 
        <td align="center" style="background:#F00"><strong><font color="#FFFFFF">FI: Falta Injustificada</font></strong></td>
        <td>&nbsp;</td>
    </tr>
</table>
 
<div id="print">
<p><a href="javascript:print()" title="Imprimir asistencia" class="linksrojo fuente"><img src="../img/icono_print.png" border="0" /><strong>Imprimir</strong></a></p>
</div>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE: Generar un calendario semanal PhP ingresando una fecha

Publicado por josue (1 intervención) el 29/01/2013 14:35:51
bueb dia se que el articulo esta un poco viejo pero me sirve para una asistencia docente que estoy realizando. me gustaria saber que valores introduciste para relacionar la BD con la asistencia??? osea en conjunto y que almacene asistencia en tu caso por cada alumno semanalmente
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar