martes, 1 de octubre de 2013

Consultar datos en una tabla que no están en otra

Por lo general cuando tenemos relaciones entre dos tablas en cualquier consulta tradicional, queremos saber por ejemplo cuáles son los datos que faltan en alguna tabla.

Me explico.  Por ejemplo queremos sabes cuáles son los eventos que no están en el historial de actividades.

La consulta será entonces:

SELECT tbl_eventos.id  
from 
tbl_eventos left join tbl_historial_actividades
on tbl_eventos.id=tbl_historial_actividades.evento_id
where 
tbl_historial_actividades.evento_id is null

Esta sencilla y extremadamente útil consulta, nos puede salvar el día.

Funciona en cualquier tipo de base de datos transaccional: MySQL, SQL Server, Oracle, Postgress, y muchas otras más.

miércoles, 19 de junio de 2013

Warning: Cannot modify header information - headers already sent by...

Situación:

Aparece este error en nuestro servidor de PHP:


Warning:  Cannot modify header information - headers already sent
 by (output started at 
/home/dominio/public_html/includes/functions/incrustaciones.php:496)
 in /home/dominio/public_html/general.php on line 108

Entendiendo el Problema:

En PHP podemos incrustar codigo para funciones recurrentes, esto lo hacemos con los siguientes comandos: include_once('archivodefunciones.php'), require('archivodefunciones.php').

Estos archivos incrustados solo deben contener PHP, y debemos asegurarnos que tanto al comienzo como al final se usen los TAG de código para determinar el contenido del archivo.  Estos tag son <?php al comienzo y ?> al final, entonces una estructura de un archivo incrustado debe ser:

Al comienzo:




Y al final:



Causas del problema:

El error se genera cuando hay contenido luego del cierre del archivo incrustado.  Es decir, el mensaje de eeror nos indica que debemos revisar el archivo incrustaciones.php (segun nuestro ejemplo), y debemos mirar al final del documento.  En pocas palabras encontraremos el archivo con el siguiente final:



Solución:

Hay dos maneras de solucionar el problema:
  1. Quitando el contenido restante luego del Tag de cierre de código.
  2. Quitando el Tag de cierre de código, indicando que el código de PHP no se ha terminado.
 

viernes, 18 de enero de 2013

A potentially dangerous Request.Form value was detected from the client

Es tal vez un error ya muy fácil de corregir por la mayoría en un sitio desarrollado en ASP.NET, pero con Framework 2.0. Sucede que en un servidor recientemente, fue necesario cambiarlo a Framework 4.0 y apareció este error.

Causas:
La principal causa de este tipo de errores es el envío en algun campo de texto de un formulario un contenido que esté encerrado en un TAG, es decir entre símbolos menor qué y mayor qué "< cualquier cosa >".

Realmente cualquier contenido entre estos símbolos no son potencialmente peligrosos, salvo cuando su contenido pueda ser comandos de ejecución tipo Javascript.  Entonces nos pueden incluso infectar el sitio web de algun tipo de troyano o gusano que se replique entre los archivos de nuestro servidor.

Solución:
En Framework 4.0, es necesario poner la siguiente línea de código en el web.config entre el TAG de <system.web>:


<system.web>
   <httpRuntime requestValidationMode="2.0" />
</system.web> 

Si alguien quiere de manera global, quitar las validaciones en todas las páginas de la aplicación, entonces es necesario incluir dentro del mismo TAG de sistem.web, el comando para evitar esta validación:

<system.web>
   <pages validateRequest="false" />
</system.web>

Calcular edad con la fecha de nacimiento en PHP

 En este tutorial, aprenderemos cómo calcular la edad a partir de la fecha de nacimiento en PHP. Daré dos ejemplos de Cómo calcular la edad....