Cómo colocar nuestros contenidos en una base de datos y llamarlo desde la Url.
En esta ocasión tengo la oportunidad de explicar algo extremadamente sencillo en PHP, como lo es colocar nuestros contenidos en una base de datos y llamarlos desde una URL como esta: contenidos.php?id=6565.
Crearemos una tabla de datos:
<? CREATE TABLE `contenidos` (
`id` int(11) NOT NULL auto_increment,
`titulo` varchar(50) NOT NULL default '',
`fecha` date NOT NULL default '0000-00-00',
`descripcion` text NOT NULL,
PRIMARY KEY (`id`)
)TYPE=MyISAM AUTO_INCREMENT=1 ;
Luego el código Fuente:
<?PHP
#####CONEXIÓN A MYSQL
@mysql_connect('localhost','user','pass')or die ('Ha fallado la conexión: '.mysql_error());
@mysql_select_db('base_de_datos')or die ('Error al seleccionar la BD: '.mysql_error());
////end conexión
$ssql_=mysql_query("SELECT * FROM contenidos WHERE id='".$_GET[id]."'")or die(mysql_error());
if(mysql_num_rows($ssql_)==0) die ('Error: intentas accesar a un artículo o contenido inexistente');
$obj=mysql_fetch_object($ssql_);
echo 'Titulo: <strong>'.$obj->titulo.'</strong> Fecha: '.$obj->fecha.'<br> Descripción: '.nl2br(strip_tags($obj->descripcion)); ?>
Explicando:
Primero que nada como de costumbre, creamos una conexión al servidor Mysql para que tenga efecto en las líneas posteriores del documento Php.
Obviamente debemos modificar los datos ( localhost, user, pass y 'base_de_datos' por los existentes.
Luego enviamos una petición al servidor Mysql con la función mysql_query, con una consulta que traducida al español seria algo como:
SELECCIONAR TODOS LOS CAMPOS DE contenido DONDE id SEA IGUAL A $_GET[id]
Una vez generada la respuesta, Con la función mysql_num_rows(), extraemos el total de registros que debe ser siempre 1, y utilizamos este valor como elemento indispensable para iniciar una condición elemental que generara un error con la función die(); siempre y cuando no haya ningún registro.
if(mysql_num_rows($ssql_)==0).
La función die(); se encarga de imprimir un mensaje, pero además detiene hasta ese punto la ejecución del script, por lo cual es innecesario utilizar ( else De lo contrario a si (if) ) Condicional.
Agrupamos en la variable $obj, la fila devuelta por la consulta mysql_fetch_object () COMO OBJETO, si queremos hacerlo como array debemos utilizar mysql_fetch_array(), en vez de mysql_fetch_object(), la diferencia radica esencialmente en el tipo de valor ( Objeto / Matriz ) siendo el resultado igual.
Para imprimir nuestros datos utilizáramos:
Con mysql_fetch_object = $obj->nombre_del_campo , similar a como llamamos las variables o funciones de una clase.
Con mysql_fetch_array() = $obj[nombre_del_campo]. Finalmente imprimimos el resultado, con los valores extraídos en procesos anteriores, utilizando la función strip_tags(); para extraer todas la entidades de html si las tuviera, y nl2br(); para agregar un salto de linea al final de la misma.
Ya quedaría de parte de cada quien, crear el diseño de su página dinámica ó diagramar de una manera más exacta y personalizada la tabla de datos con los posteriores elementos definidos en el script.
De esta manera, nosotros simplemente vamos a crear una página web, que recibe por parámetro el contenido que se debe mostrar, en lugar de tener que realizar una página para cada uno de los contenidos del sitio.
Nota: Cabe destacar el inconveniente que hasta cierto punto se presenta con este tipo de URL con los principales robots recopiladores de documentos html en Internet. Pues los buscadores como Google no tratan muy bien a las URLs que reciben datos por parámetro en la propia URL. |
Crearemos una tabla de datos:
<? CREATE TABLE `contenidos` (
`id` int(11) NOT NULL auto_increment,
`titulo` varchar(50) NOT NULL default '',
`fecha` date NOT NULL default '0000-00-00',
`descripcion` text NOT NULL,
PRIMARY KEY (`id`)
)TYPE=MyISAM AUTO_INCREMENT=1 ;
Luego el código Fuente:
<?PHP
#####CONEXIÓN A MYSQL
@mysql_connect('localhost','user','pass')or die ('Ha fallado la conexión: '.mysql_error());
@mysql_select_db('base_de_datos')or die ('Error al seleccionar la BD: '.mysql_error());
////end conexión
$ssql_=mysql_query("SELECT * FROM contenidos WHERE id='".$_GET[id]."'")or die(mysql_error());
if(mysql_num_rows($ssql_)==0) die ('Error: intentas accesar a un artículo o contenido inexistente');
$obj=mysql_fetch_object($ssql_);
echo 'Titulo: <strong>'.$obj->titulo.'</strong> Fecha: '.$obj->fecha.'<br> Descripción: '.nl2br(strip_tags($obj->descripcion)); ?>
Explicando:
Primero que nada como de costumbre, creamos una conexión al servidor Mysql para que tenga efecto en las líneas posteriores del documento Php.
Obviamente debemos modificar los datos ( localhost, user, pass y 'base_de_datos' por los existentes.
Luego enviamos una petición al servidor Mysql con la función mysql_query, con una consulta que traducida al español seria algo como:
SELECCIONAR TODOS LOS CAMPOS DE contenido DONDE id SEA IGUAL A $_GET[id]
Una vez generada la respuesta, Con la función mysql_num_rows(), extraemos el total de registros que debe ser siempre 1, y utilizamos este valor como elemento indispensable para iniciar una condición elemental que generara un error con la función die(); siempre y cuando no haya ningún registro.
if(mysql_num_rows($ssql_)==0).
La función die(); se encarga de imprimir un mensaje, pero además detiene hasta ese punto la ejecución del script, por lo cual es innecesario utilizar ( else De lo contrario a si (if) ) Condicional.
Agrupamos en la variable $obj, la fila devuelta por la consulta mysql_fetch_object () COMO OBJETO, si queremos hacerlo como array debemos utilizar mysql_fetch_array(), en vez de mysql_fetch_object(), la diferencia radica esencialmente en el tipo de valor ( Objeto / Matriz ) siendo el resultado igual.
Para imprimir nuestros datos utilizáramos:
Con mysql_fetch_object = $obj->nombre_del_campo , similar a como llamamos las variables o funciones de una clase.
Con mysql_fetch_array() = $obj[nombre_del_campo]. Finalmente imprimimos el resultado, con los valores extraídos en procesos anteriores, utilizando la función strip_tags(); para extraer todas la entidades de html si las tuviera, y nl2br(); para agregar un salto de linea al final de la misma.
Ya quedaría de parte de cada quien, crear el diseño de su página dinámica ó diagramar de una manera más exacta y personalizada la tabla de datos con los posteriores elementos definidos en el script.
Emmanuel García De Caro
Webmaster de Blasten.com