fabricawebs
Blog donde podrás encontrar el árticulo o tutorial que estas buscando sobre PHP, JavaScript, XML, Flash, Ruby on Rails, o desarrollo web en general.

Informes semanales en Mysql

Category: By Carlos

A la hora de hacer informes de estadísticas, o de cualquier otro tipo, es bastante común que te pidan mostrar los resultados pertenecientes a una determinada semana. Lo primero que se le ocurre a uno es hacer complicados cálculos para hallar las fechas límite de esa semana y de esta forma conociendo ya el rango de fechas poner una condición tipo Fecha_lunes < Fecha_field < Fecha _viernes . Pero mirando la referencia de MySQL, en la sección funciones de Fecha y tiempo, de pronto ves la función WEEK() y se te enciende la bombilla, la función WEEK() te devuelve el ordinal de la semana dentro del año para una fecha, de este modo dos fechas que están en la misma semana tienen el mismo número, con este método no tenemos que calcular ninguna fecha y es tan simple como poner la siguiente condición WEEK(Fecha_field) = WEEK(Fecha_semana).


Pero ¡OJO!, a la hora de utilizar WEEK() hay que tener en cuenta los siguientes puntos:



  • ¿La semana empieza en Domingo o en Lunes? Por omisión en Domingo.

  • ¿Se empiezan a contar las semanas desde 0 o desde 1? Por omisión 0.

  • Normalmente la primera semana del año es al mismo tiempo la misma que la última del año anterior, si estamos haciendo comparaciones podría resultar problemático, ¿qué se debe devolver 0 o 52? Por omisión se devuelve 0.


Estas 3 cuestiones se pueden configurar, pasando un segundo parámetro a la función:


La siguiente tabla describe cómo funciona el argumento mode :



Primer día

Modo de semana Rango Semana 1 es la primera semana...
0 Domingo 0-53 con un domingo en este año
1 Lunes 0-53 con más de 3 días este año
2 Domingo 1-53 con un domingo este año
3 Lunes 1-53 con más de 3 días este año
4 Domingo 0-53 con más de 3 días este año
5 Lunes 0-53 con un lunes en este año
6 Domingo 1-53 con más de 3 días este año
7 Lunes 1-53 con un lunes en este año
 

Doble asignación en PHP

Category: , By Josetonyp
Me preguntaba esta mañana si era posible hacer una doble asignación de variables tal que se pueda crear una función en PHP que realice la siguiente tarea:

$a = 3; $b = 4;
function change ( &a, &b){ }

devuelva: $a = 4; $b = 3;


Pensaba al principio que no se podía pero se me ocurre lo siguiente:

$a = 3;
$b = 4;
echo " a = $a y b = $b ";
function change ( &$a , &$b){
list ( $a , $b ) = array( $b , $a);
}
change($a,$b);
echo " a = $a y b = $b ";

Sin embargo viéndolo detenidamente array( $b, $a) ¿no es una variable nueva aunque sea una variable arreglo?.
¿Existe otra solución a este problema?