domingo, 1 de marzo de 2009

Mostrar y Ocultar DIV's

Para hacer aplicaciones web más dinámicas, que puedan incluir elementos que aparezcan y se oculten, hace falta "jugar" con las propiedades del estilo de los elementos; en este ejemplo mostraré como se pueden modificar dichas propiedades mediante JavaScript.
Este sería el código JavaScript con las funciones que mostrarán y Ocultarán el DIV.

function quitar()
{
div = document.getElementById('uno');
div.style.display="none";
}

function poner()
{
div = document.getElementById('uno');
div.style.display="block";
}

function ocultar()
{
div = document.getElementById('uno');
div.style.visibility="hidden";
}

function mostrar()
{
div = document.getElementById('uno');
div.style.visibility="visible";
}

Las primeras dos funciones, quitar() y poner(), modifican el atributo display, en el caso de quitar(), el DIV dejará de ocupar un espacio, y poner() revertirá el cambio.
Las funciones ocultar() y mostrar() cambiarán el atributo visibility, que solo hará que no se muestre el contenido del DIV, pero a diferencia de display, el DIV seguirá ocupando el espacio que le corresponde.

 div id="uno" style="background-color:#CCCCCC">
Contenido de UNO
 /div>

Atributo display
<input type="button" value="Quitar" onclick="quitar()" />
<input type="button" value="Poner" onclick="poner()" />

Atributo visibility
<input type="button" value="Ocultar" onclick="ocultar()" />
<input type="button" value="Mostrar" onclick="mostrar()" />

miércoles, 25 de febrero de 2009

Ejemplo sencillo de AJAX con PHP

Este es un ejemplo de lo más sencillo del funcionamiento de AJAX en un sitio web, y de como se puede obtener respuesta de parte del servidor sin necesidad de recargar la página. Lo primero que debemos tener en cuenta es que el servidor web PHP ya debe de estar instalado en la máquina, después vamos a dar de alta un sitio que se llame pruebas o algo similar, y ahí vamos a crear los dos archivos que necesitamos para la prueba: Primero, la parte del cliente. cliente.php:
<script>
/* esta función sirve para obtener el objeto de JavaScript que tendrá la 
   interacción con el servidor, intenta varios métodos para crearlo, y si falla
   manda una alerta
*/
function getHTTPObject(){
 if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
 else if (window.XMLHttpRequest) return new XMLHttpRequest();
 else {
 alert("Su navegador no soporta AJAX.");
 return null;
 }
}

/* esta es la función a la que se manda llamar para que haga el trabajo */
function trabaja ( texto_capturado ){

 mi = new Date(); // se crea una fecha
 httpObject = getHTTPObject(); // se obtiene el objeto de conexción
 
 if (httpObject != null ) {

               /* esta es la cadena con la URL a la cual mandaremos la petición
                le mandamos por GET el datos texto, que fue el que recibimos desde el intput en esta función */
  cadena = "respuesta.php?texto="+texto_capturado+"&m="+mi;
  
               /* le indicamos que queremos la petición por el método GET, a la dirección que tiene la variable "cadena" */
  httpObject.open("GET", cadena  , true);
  httpObject.send(null);
                
                 // aquí le indicamos que cuando esté lista la petición al servidor, nos mande el control a la función llamada "funcionSalida"
  httpObject.onreadystatechange = funcionSalida;
 }
}

/* esta es la función a la que se manda llamar desde la función trabaja
function funcionSalida(){

// el readyState == 4 indica que está lista la respuesta del servidor
 if(httpObject.readyState == 4)
 {
// con la función responseText obtenemos la respuesta y la guardamos
  respuesta = httpObject.responseText;
// en le input con id=salida mostramos la respuesta del servidor
// es decir, la cadena original en mayúsculas
  document.getElementById('salida').value = respuesta;
 }
}

var httpObject = null;
</script>

Original:<input type="text" name="texto" id="texto" onkeyup="trabaja(this.value)"/>

En Mayúsculas<input type="text" name="salida" id="salida" />
Y después la parte del servidor. respuesta.php
<?php
/* esta es la parte del servidor, en este ejemplo lo único que haremos será
imprimir la cadena recibida en mayúsculas */
echo strtoupper( $_GET['texto'] );
?>
En este ejemplo hacemos algo muy sencillo como es convertir a mayúsculas la cadena recibida, pero de manera similar se podrían hacer consultas a la base de datos, a archivos, etc.

lunes, 23 de febrero de 2009

Reemplazar texto por asteriscos JavaScript

Reemplazar texto por asteriscos JavaScript Estube buscando internet una función que reemplace cualquier caracter por un asterisco en un campo de texto pero la verdad no lo encontré, así es que lo implementé yo mismo, en realidad es algo muy sencillo utilizando expresiones regulares. Al value del objeto le hacemos un replace, usamos la expresión regular /./g el punto quiere decir que encuentre cualquier caracter (menos el salto de linea), y la g despues de las diagonales quiere decir que lo reemplace todas las veces que lo encuentre, si no lo pusieramos lo haría solo la primera vez. En este caso se manda llamar a la función en el evento OnBlur del campo de texto. Código:

<script>

function valorAsteriscos( campo )
{
campo.value = campo.value.replace(/./g,"*");
}

</script>

<input type='text' name='campo' onblur='valorAsteriscos( this )'>

domingo, 22 de febrero de 2009

Obtener fecha de ayer en PHP

Obtener fecha de ayer en PHP Un pequeño tip para obtener la fecha del día de ayer en PHP. Código PHP:
<?php
date("d/m/Y", strtotime("yesterday"));
?>

Para cambiar el formato se puede cambiar los diagonales "/" por cualquier símbolo, o cambiar el orden de las letras d (Day), m (month), Y (Year). Para más información sobre la función date de php: http://www.php.net/date Fuente: Aquí

Dias hábiles entre dos fechas [SQL]

He aquí una función útil para calcular la diferencia de días hábiles entre dos fechas. (MSSQL) Primero, una función para dar de alta fechas feriadas. Puede variar mucho de acuerdo al país. La encontré aqui: http://www.eggheadcafe.com/articles/20030626.asp. Pero le hice la modificación para que, en caso de que la fecha final sea menor que la inicial regrese un valor negativo.
/*
función para determinar si un día es festivo
trabaja en conjunto con dbo.GetBusinessDays
para calcular la diferencia en días hábiles
entre dos fechas
*/
CREATE function dbo.IsDateAHoliday
(
@CurDate datetime
)
returns int
as
begin

declare @ret int

select @ret = 0

select @ret = case
/*
el datepart(mm,@CurDate) es la parte del mes
datepart(dd,@CurDate) es la parte del día
-para dar de alta un día festivo se pone un when con el mes y el día
que se necesite
*/
when datepart(mm,@CurDate) = 1 and datepart(dd,@CurDate) = 1 then 1 --año nuevo
when datepart(mm,@CurDate) = 16 and datepart(dd,@CurDate) = 1 then 1 --indep.
when datepart(mm,@CurDate) = 12 and datepart(dd,@CurDate) = 25 then 1 --navidad
else 0
end

return @ret

Y ahora la función para calcular la diferencia
create function dbo.GetBusinessDays
(
@StartDate datetime,
@EndDate datetime
)
returns int
as
begin

declare @factor int
set @factor = 1

if @StartDate > @EndDate
begin
declare @tempo datetime
set @tempo = @StartDate
set @StartDate=@EndDate
set @EndDate=@tempo
set @factor=-1
end

declare @DaysBetween int
declare @BusinessDays int
declare @Cnt int
declare @EvalDate datetime

select @DaysBetween = 0
select @BusinessDays = 0
select @Cnt=0

select @DaysBetween = datediff(Day,@StartDate,@endDate) + 1

while @Cnt < @DaysBetween
begin

select @EvalDate = @StartDate + @Cnt

if (dbo.IsDateAHoliday(@EvalDate) = 0)
BEGIN
if ((datepart(dw,@EvalDate) <> 1) and (datepart(dw,@EvalDate) <> 7))
BEGIN
select @BusinessDays = @BusinessDays + 1
END
END

select @Cnt = @Cnt + 1
end

return (@BusinessDays*@factor)
end

Espero que les sirva.

sábado, 21 de febrero de 2009

Bromas con Tags de HTML

Bueno esto se sale un poco de tema, pero navegando por la red me encontré este sitio donde postearon estas imagenes con bromas usando algunas etiquetas HTML, aquí algunas de las mejores: Muchas mas en este otro sitio.

Validar caracteres especiales PHP

Validar cadenas en PHP Esta es una función que usa expresiones regulares para validar la entrada de una cadena y reemplazar cualquier caracter que no sea letras ( mayúsculas y minúsculas ), números, espacios o puntos. Esto puede ser útil para quitar caracteres como letras con asentos y ñ's que podrían causar errores con algunas tecnologías ( como xml ).

<?php
function valida_cadena( $cadena )
{
$nueva_cadena = ereg_replace("[^A-Za-z0-9 .]", "", $cadena);
return $nueva_cadena;
}
?>


El segundo parámetro de la función ereg_replace puede cambiarse por el caracter que se desea que reemplace a los caracteres no deseados.