website stats » Frase del día utilizando PHP+MySQL | Solo Código |

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:

MySQL:
  1. CREATE TABLE `cita` (
  2.   `cod` INT(11) NOT NULL AUTO_INCREMENT,
  3.   `cita` TEXT,
  4.   PRIMARY KEY  (`cod`)
  5. ) 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í:

MySQL:
  1. INSERT INTO `cita` (`cod`, `cita`) VALUES
  2. (1, '"Hay ojos que eyaculan miradas" (Bresson)'),
  3. ...
  4. ...

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

PHP:
  1. //error_reporting(0); //Ésto evita que se muestra cualquier tipo de error al usuario
  2. $dia=date(z)//Para elegir que fecha mostrar, seleccionamos el día del año
  3. $conectado=false;
  4. if($id_conexion=mysql_connect("servidor","usuario","password"))
  5. {
  6.    if(mysql_select_db("la_base_datos_que_sea",$id_conexion))
  7.     {
  8.       $conectado=true;
  9.     }
  10. }

$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.

PHP:
  1. <div id="estilo_para_lacita">
  2. <? include("funciones.php");
  3. if($conectado=true)
  4.   {
  5.    $orden="select cita from cita where cod=$dia";
  6.    $consulta=mysql_query($orden,$id_conexion);
  7.    while($fila=mysql_fetch_row($consulta))
  8.      {?>
  9.       <blockquote>Frase del d&iacute;a:<i><?=$fila[0];?></i></blockquote> 
  10.    <?  } 
  11.   }
  12.  else exit;?>
  13. </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

4 Comentarios

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!

Escribir un comentario

Puedes usar las siguientes etiquetas HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Solo Código

Solo Código es una colección de códigos de todo tipo que pueden resultar útiles para el diseño de páginas web. Está enfocado tanto para aquellos que son expertos, como para aquellos principiantes que quieren encontrar recursos útiles, o no saben implementar determinadas funciones en sus webs. No olvides que Solo Código es un blog de Informática Práctica, donde tenemos otras secciones interesantes como:
| Tutoriales | Trucos | Software | Links | Buscar |