Frase del dÃa utilizando PHP+MySQL
Escrito por J.F. el Friday, 29 de June del 2007 a las 15:17
En muchas ocasiones habremos visto en diferentes sitios web una apartado donde se indicaba "Frase del dÃa". Vamos a aprender como mostrar cada dÃa una frase diferente, mediante el uso de PHP y conexión a base de datos MySQL. Vayamos por partes:
En primer lugar, es necesaria la creación de una nueva tabla en una base de datos. Utilizaremos una estructura bastante simple, con un campo código, y otro campo text para guardar la cita. PodrÃamos añadir más, por ejemplo autor, categorÃa, pero en éste caso he decidido guardar todo en el mismo campo. El código SQL para la creación de la tabla es el siguiente:
-
CREATE TABLE `cita` (
-
`cod` INT(11) NOT NULL AUTO_INCREMENT,
-
`cita` TEXT,
-
PRIMARY KEY (`cod`)
-
) ENGINE=MyISAM;
Una vez creada la tabla, insertaremos los datos mediante órdenes INSERT. Aquà vemos un ejemplo con algunas frases, lógicamente no pongo las 366 frases, ya que serÃa un listado demasiado largo, pero puedes descargarte todo el listado desde aquÃ:
-
INSERT INTO `cita` (`cod`, `cita`) VALUES
-
(1, '"Hay ojos que eyaculan miradas" (Bresson)'),
-
...
-
...
Con ésto ya estarÃan introducidas todas las frases. Si quieres mostrar citas diferentes a las del fichero, deberás editar el fichero y poner las que tu desees. Por último deberemos realizar la conexión a MySQL desde PHP. Para tal efecto, incluiremos el siguiente código en un fichero aparte, para cuando queramos mostrar la cita, simplemente lo llamaremos con include. En éste caso he llamado al fichero funciones.php.
funciones.php
-
//error_reporting(0); //Ésto evita que se muestra cualquier tipo de error al usuario
-
$conectado=false;
-
{
-
{
-
$conectado=true;
-
}
-
}
$dia=date(z); sirve para recoger el dÃa del año en que nos encontramos (su valor se encuentra entre 1 y 366), por eso cada dÃa se muestra una frase diferente.
Finalmente, llamaremos a ese fichero e incluiremos las siguientes lÃneas para mostrar la frase del dÃa.
-
<div id="estilo_para_lacita">
-
<? include("funciones.php");
-
if($conectado=true)
-
{
-
$orden="select cita from cita where cod=$dia";
-
{?>
-
<blockquote>Frase del día:<i><?=$fila[0];?></i></blockquote>
-
<? }
-
}
-
else exit;?>
-
</div>
De ésta forma, obtendrÃamos una frase distinta cada dÃa con el siguiente formato:
Frase del dÃa: "En igualdad de condiciones la solución más sencilla es probablemente la correcta" (Occam)
Comentarios (4)
Categoria: PHP
- Añadir este post a
- Del.icio.us -
- Meneame -
- Digg -
- Webeame
Entradas relacionadas
Comentario de Pere David Porquer
Realizado el Sunday, 7 de September del 2008 a las 9:41
Este script tiene dos problemas importantes:
1. Sólo puedes tener 366 citas. Si tienes más, nunca aparecerán. La función date(“z”) te devuelve un número de 0 a 365, por lo que nunca podrás acceder al registro 390. Aunque 366 citas parecen muchas, los sitios de citas tienen más de 10.000.
2. Si un dÃa decides borrar una cita, provocarás que haya un “cod” no correlativo, por lo que el dÃa que no exista el cod correspondinte, no aparecerá nada.
Propongo otra solución, donde podemos poner todas las citas que queramos en la base de datos y no tiene importancia el código que tenga la fila. Par ello, en lugar de acceder al registro mediante un “select cita from cita where codi=$dia”, usaremos “select cita from cita” y usaremos la función mysql_data_seek() para movernos entre los registros. Además, en lugar de usar date(“z”), usaremos una marca de tiempo, asà siempre tendremos un número creciente.
Ahà va:
$citas=mysql_query("select cita from citas order by cod");
$numcitas=mysql_num_rows($citas);
if ($numcitas>0) {
mysql_data_seek( $citas, intval(floor(mktime()/60/60/24)%$numcitas) );
$cita=mysql_fetch_array($citas);
echo '
Frase del día:'.$cita[0].'>
';
}
Comentario de dsrmnotmrg
Realizado el Monday, 12 de January del 2009 a las 19:59
Comentario de FeDe
Realizado el Saturday, 13 de February del 2010 a las 9:31
Al insertar en la base de datos esto
INSERT INTO `cita` (`cod`, `cita`) VALUES
(1, ‘”Hay ojos que eyaculan miradas” (Bresson)’),
Me tira error
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ”
Comentario de FeDe
Realizado el Saturday, 13 de February del 2010 a las 9:43
Solucionado!

