Estoy haciendo una nueva sección para el blog (ya está casi terminada), y necesitaba calcular el horóscopo Chino y el horóscopo del Zodiaco, mediante la fecha de nacimiento. Dado que no encontré en Google ningún script en PHP que lo hiciera, escribí yo uno.
En principio es bastante simple, para cada mes comprueba los dos horóscopos posibles, mirando si la fecha es antes o después de un determinado día. Seguramente hay muchas más formas de hacerlo, pero esta me pareció la más sencilla.
<?
function Zodiaco ($dia, $mes) {
switch ($mes) {
case 1: if ($dia >= 21) return 'Acuario'; else return 'Capricornio';
case 2: if ($dia >= 20) return 'Piscis'; else return 'Acuario';
case 3: if ($dia >= 21) return 'Aries'; else return 'Piscis';
case 4: if ($dia >= 21) return 'Tauro'; else return 'Aries';
case 5: if ($dia >= 22) return 'Géminis'; else return 'Tauro';
case 6: if ($dia >= 22) return 'Cancer'; else return 'Géminis';
case 7: if ($dia >= 24) return 'Leo'; else return 'Cancer';
case 8: if ($dia >= 24) return 'Virgo'; else return 'Leo';
case 9: if ($dia >= 24) return 'Libra'; else return 'Virgo';
case 10: if ($dia >= 24) return 'Escorpio'; else return 'Libra';
case 11: if ($dia >= 23) return 'Sagitario'; else return 'Escorpio';
case 12: if ($dia >= 22) return 'Capricornio'; else return 'Sagitario';
}
}
?>
El horóscopo Chino, cuyo ciclo se repite cada 12 meses, es un poco mas complicado:
<?
function HChino ($anio) {
//0004 - Año de la rata
$fraccion = ($anio - 4) / 12;
//Obteniendo los decimales
$fraccion = (round ($fraccion - floor ($fraccion), 2));
if ($fraccion == 0) return 'Rata';
if ($fraccion == round (1/12, 2)) return 'Buey';
if ($fraccion == round (2/12, 2)) return 'Tigre';
if ($fraccion == round (3/12, 2)) return 'Conejo';
if ($fraccion == round (4/12, 2)) return 'Dragon';
if ($fraccion == round (5/12, 2)) return 'Serpiente';
if ($fraccion == round (6/12, 2)) return 'Caballo';
if ($fraccion == round (7/12, 2)) return 'Cabra';
if ($fraccion == round (8/12, 2)) return 'Mono';
if ($fraccion == round (9/12, 2)) return 'Gallo';
if ($fraccion == round (10/12, 2)) return 'Perro';
if ($fraccion == round (11/12, 2)) return 'Cerdo';
}
?>
Creo que no tiene errores, todos los años que probé los calcula bien, ¿te sirvió?
Hace unos días tenía que pasar el contenido de un documento Excel a Sql, pero pasar todo eso a mano es un suicidio...
Encontré algunas librerías en SourceForge, pero el código era demasiado largo y no solucionaba mi problema fácilmente, finalmente encontré información sobre las librerías COM de Excel y elaboré un pequeño script en PHP.
Se me ocurrió subirlo al blog por si alguien tenia el mismo problema, así que si necesitas pasar un archivo Excel con formato .xls, .xlsx o similar a Sql, este Script PHP podría serte útil.
<?php
function convertirSql ($hoja, $maxFil, $maxCol, $tabla) {
$hoja->activate;
$consulta = "INSERT INTO `$tabla` (";
$col = 1;
while ($col <= $maxCol) {
$consulta .= '`'.utf8_encode ($hoja->Cells(1, $col)).'`, ';
$col++;
}
$consulta .= '[FIN]';
$consulta = str_replace (', [FIN]', ') VALUES', $consulta);
$fil = 2;
while ($fil <= $maxFil) {
$consulta .= ' (';
$col = 1;
while ($col <= $maxCol) {
$consulta .= "'".utf8_encode ($hoja->Cells($fil, $col))."', ";
$col++;
}
$consulta .= '[FIN]';
$consulta = str_replace (', [FIN]', '), ', $consulta);
$fil++;
}
$consulta .= '[FIN]';
$consulta = str_replace (', [FIN]', ';', $consulta);
echo $consulta;
}
?>
<?php
$excel = new COM ("Excel.sheet");
$excel->Application->DisplayAlerts = false;
$abrir = $excel->application->Workbooks->Open("C:/.../Libro1.xlsx");
$excel->Application->Visible = 1;
$hoja = $abrir->Worksheets("Hoja1");
$numFil = $excel->application->ActiveSheet->UsedRange->Rows->Count;
$numCol = $excel->application->ActiveSheet->UsedRange->Columns->Count;
convertirSql ($hoja, $numFil, $numCol, 'nombreTabla');
?>
El Script está hecho de tal forma, que el primer elemento de cada columna en el Excel compone el conjunto de nombres de los campos de una tabla en Sql, y el resto las filas. No obstante, si sabes PHP puedes adaptarlo a tu hoja del Excel en concreto.
Dado que el script genera una consulta en sql para insertar los datos en una tabla, habrá que crear antes la tabla en la base de datos. Para el ejemplo de la imagen anterior, la tabla sería algo como:
CREATE TABLE `alumnos` (
`id` bigint(7) NOT NULL auto_increment,
`nombre` char(50) NOT NULL,
`apellidos` char(100) NOT NULL,
`DNI` char(10) NOT NULL,
`calificacion` char(4) NOT NULL,
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
Para descargar el script pulsa en: Descargar
Una redirección, es la acción que se produce cuando al acceder a una página determinada, esta nos envía a otra distinta, normalmente del mismo dominio, aunque se puede hacer perfectamente hacia otro distinto.
¿Para qué se necesita una redirección? Para un cambio de dominio, URL borradas desde las cuales no quieres perder visitas, evitar que accedan a zonas restringidas de tu web, redireccionar temporalmente a los usuarios a una página de mantenimiento, etc.
Existen varias formas de hacerlo, dependiendo de la situación:
Redireccionar una página con html o javascript, no está bien visto por los buscadores como Google, y no es para nada seguro, sin embargo puede ser util cuando no dispones de soporte PHP, ASP, o algún tipo de lenguaje del lado del servidor.
<meta http-equiv="refresh" content="10"; url="http://www.dominio.com/pagina.html" />
En content hay que poner los segundos que pasarán antes de que se redireccione la página, si pones 0 se redireccionará al instante, y en url la dirección de la página hacia la que quieres hacer la redirección.
<script languaje="JavaScript">
location.href="http://www.dominio.com/pagina.html";
</script>
Para que funcione hay que ponerlo entre las etiquetas <head> y </head> .
<script type="text/javascript">
setTimeout (window.location="http://www.dominio.com/pagina.html", 10000);
</script>
Sustituye 10000 (10 segundos) por la cantidad de milisegundos que quieres que tarde en redireccionar la página, 1 segundo corresponde a 1000 milisegundos.
Redireccionar en PHP es necesario cuando se quiere redirigir una página incluso antes de cargarla. Ya que el php se ejecuta primero en el servidor, devuelve al usuario directamente la página redirigida.
Además, hay que tener en cuenta que tipo de redirección establecer, 301 indica a los buscadores un cambio permanente (Una URL que cambió de nombre), mientras que un 302 un cambio temporal (Como una redirección por mantenimiento de la web).
<?
header ("HTTP/1.1 301 Moved Permanently"); //Redireccion 301
header ("Location: http://www.dominio.com/pagina.php");
exit();
?>
header("HTTP/1.1 302 Moved Temporarily"); //Redireccion 302
header("Location: http://www.dominio.com/pagina.php");
exit();
Es importante poner la redirección justo al principio de la página, de lo contrario no funcionará.
Redireccionar en ASP es muy parecido a redireccionar en PHP, solo cambia ligeramente el código.
<%
Response.Status = "301 Moved Permanently"
Response.AddHeader "Location", "http://www.dominio.com/pagina.asp"
Response.End
%>
<%
Response.Status = "302 Moved Temporarily"
Response.AddHeader "Location", "http://www.dominio.com/pagina.asp"
Response.End
%>
Una de las mejores formas de hacer una redirección, es con el archivo de configuración .htaccess. Solo hay que crear un nuevo archivo, sin extension y con el nombre ".htaccess", escribir en el las siguientes lineas, y subirlo a tu servidor.
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_URI} /paginaVieja.php$
RewriteRule $ http://www.dominio.com/paginaNueva.php [R=301,L]
Cambiar las URL por las tuyas y poner 301 o 302, dependiendo del tipo de redirección requerida.
Si necesitas más información sobre este archivo de configuración, puedes consultar la web de Apache.
Realmente poner en tu web un vídeo de youtube es una tarea muy sencilla, basta con copiar y pegar el código que ellos mismo te proporcionan.
Cuesta un poco más cuando quieres que el video pase el validador W3C, hay que sustituir el código por otro y cambiar la ID del video.
Por este motivo he escrito una sencilla función en javascript que permite insertar videos de youtube de una forma fácil, con una sola línea.
Copia o descarga el código que aparece a continuación y pégalo en tu web, antes de la etiqueta </head> .
<script type="text/javascript">
//<![CDATA[
function youtube (ID, ancho, altura) {
ancho = ancho || 425; //Ancho Por Defecto
altura = altura || 344; //Altura Por Defecto
document.write (
"<div style="text-align: center;">" +
"<object type="application/x-shockwave-flash"" +
"data="http://www.youtube.com/v/"+ ID +""" +
"width=""+ ancho +""" +
"height=""+ altura +"">" +
"<param name="movie"" +
"value="http://www.youtube.com/v/"+ ID +"" />" +
"</object>" +
"</div>"
);
}
//]]>
</script>
Ahora, cada vez que quieras poner un video de youtube en tu web, solo tienes que insertar el siguiente código en el lugar donde quieras ponerlo:
<script>youtube ("XXXXXXXXXXX")</script>
Por defecto, el ancho y la altura del video es de 425 y 344, si el video que quieres insertar tiene un tamaño diferente ponlo asi:
<script>youtube ("XXXXXXXXXXX", Ancho, Altura)</script>
Recuerda sustituir las XXXXXXXXXXX por la ID del video. Y Ancho y la Altura por los valores numéricos que correspondan a tu video.
Ejemplo:
Video URL: http://www.youtube.com/watch?v=X0-TbUUXDtM
En tu web:
<script>youtube ("X0-TbUUXDtM")</script>
Delivered by FeedBurner
Categorías
Archivos
Blogroll
Enlázanos
Si te gusta MirarPorMirar, puedes poner un enlace en tu web o blog.