logo El diario de Pepe Molina (Caricatos)

yo

Para reparar los errores mostrados en el apunte anterior teníamos diferentes opciones que hemos aplicado inmediatamente: reemplazamos el enlace hacia un ".txt" por un comodín (mostrar) que cumple esa misma función, e implementamos una solución al error 404 modificando nuestro fichero ".htaccess".


Última caricatura

IV Asamblea de la AEC: IV Asamblea General de la Asociación Española de Caricaturistas

IV Asamblea de la AEC

RSS de las imágenes: rss


La Cita

La historia es un incesante volver a empezar

Tucídides, historiador griego (c.471-395 a. C.).


En esta zona están las páginas personales del autor.


Mis clientes ahora también son mis amigos (aunque les cobre).


En Mis amigos Informáticos hay una pequeña colección de páginas de colegas webmasters..


En Mis amigos artistas podemos encontrar artistas de cualquier índole (dibujantes, pintores, escritores...)


Las recomendaciones que proponemos son de índole variada.


Aquí un cajón de sastre de enlaces.


Nos referencian desde sitios de toda índole.


Puede contribuir a mantener esta página con su donativo.


botón pay-pal

Metamorfosis con dos ficheros y una tabla

emoticón de Caricatos Publicado el día 16 de febrero de 2012
id=71; categorías: Vicisitudes de un Webmaster, Programación

Para reparar los errores mostrados en el apunte anterior teníamos diferentes opciones que hemos aplicado inmediatamente: reemplazamos el enlace hacia un ".txt" por un comodín (mostrar) que cumple esa misma función, e implementamos una solución al error 404 modificando nuestro fichero ".htaccess".

Después de recapacitar sobre lo acontecido decidimos tomar algunas precauciones para evitar problemas en las próximas publicaciones, y en base a un anterior apunte donde mostramos una básica gestión de tablas: "Sencilla gestión de una base de datos: estructuras, decidimos crear el sistema que dió origen al título de este apunte.

Los dos ficheros... y de paso la tabla...

Espero sepan perdonar el lioso subtítulo, pero tiene su "intríngulis" y espero que se descubra solo. Uno de los ficheros es muy parecido al que ya hemos mostrado diario.jocker.php, con la única diferencia que los elementos que muestra lo hace desde otra tabla, y discrimina el contenido dependiendo si nos encontramos en el modo administrativo.

Este nuevo fichero tendrá principalmente la funcionalidad de complemento o plugin, y por eso lo llamamos diario.plugin.php. Como puede apreciarse cuando se abre la página sin parámetros, muestra el listado de complementos que tenemos; igual que si tuviese como parámetro "plugin=listado_plugins". Es hora de mostrar como hemos llegado a ese comportamiento mágico.

Desde cero

Sin más nos hemos dado cuenta de que ya tenemos el otro fichero (tan solo habíamos comentado la existencia de uno; pero el sistema funciona con dos), y la verdad es que el otro fichero ya existía: es el mismo que teníamos para complementar nuestros comodines. Y también descubrimos una pequeña lista de complementos que aparentemente aparecieron de la nada. Pero el secreto está en el primero de los ficheros, y uno de nuestros últimos apuntes: "Sencilla gestión de una base de datos: estructuras. Del apunte usaremos en nuestro fichero lo concerniente a la creación de una tabla, y lo usaremos en nuestro "fichero complemento", pero con un añadido para evitar errores. O sea que cada vez que entramos a la página se ejecuta la siguiente instrucción sql:

@mysql_query($crear_tabla);

Habiendo antes declarado la variable "$crear_tabla" de esta manera:

$crear_tabla = <<< creando_tabla
	create table if not exists $tabla_de_plugins
	(nombre varchar(50) primary key,
	codigo longtext,
	descripcion longtext,
	tipo tinyint(1));
creando_tabla;

Ya creada la tabla, ¿porqué no insertamos inmediatamente nuestros primeros complementos para dejar el sistema funcional? Esos primeros complementos podrían ser simplemente el de creación de nuevos complementos junto a otro que se encargase de insertarlo en nuestra nueva tabla. La verdad es que hemos añadido alguno más que indicaremos a continuación:

	$formulario_insercion = <<< crear_formulario_insercion

\$body = <<< formulario
<form action="?plugin=insertar_plugin" method="post" enctype="application/x-www-form-urlencoded" > 
<label>Nombre: <input type="text" name="nombre" /></label>
<label for="cod" >Código:</label>
<textarea id="cod" name="codigo" style="width: 100%; height: 100px"></textarea>
<label for="descr" >Descripción:</label>
<textarea id="descr" name="descripcion" style="width: 100%; height: 100px"></textarea>
<label>inactivo<input type="radio" name="tipo" value="0" /></label>
<label>activo<input type="radio" name="tipo" value="1" checked="checked"/></label>
<button type="submit" >crear plugin</button>
</form>

formulario;

crear_formulario_insercion;

	$insertar_plugin = <<< crear_insertar_plugin

\$nombre = \$_POST['nombre'];
\$tipo = \$_POST['tipo'];
\$codigo = \$_POST['codigo'];
\$descripcion = \$_POST['descripcion'];
\$sql = "insert into \$tabla_de_plugins (nombre, codigo, descripcion, tipo) values ('\$nombre', '\$codigo', '\$descripcion', '\$tipo')";
@mysql_query(\$sql);

header("Location: ?plugin=listado_plugins");

crear_insertar_plugin;

	$modificar_plugin = <<< crear_modificar_plugin

\$nombre = \$_POST['nombre'];
\$tipo = \$_POST['tipo'];
\$codigo = \$_POST['codigo'];
\$descripcion = \$_POST['descripcion'];
\$sql = "update \$tabla_de_plugins set codigo='\$codigo', descripcion='\$descripcion', tipo='\$tipo' where nombre='\$nombre'";
mysql_query(\$sql);

header("Location: ?plugin=listado_plugins");

crear_modificar_plugin;

	$editar_plugin = <<< crear_editar_plugin

\$nombre = \$_GET['nombre'];
\$sql = "select * from \$tabla_de_plugins where nombre='\$nombre'";
\$res = @mysql_query(\$sql);
if (\$res)	{
	if (mysql_num_rows(\$res) == 0)	echo "no se encontró plugin '\$nombre'";
	else	{
		\$dato = mysql_fetch_array(\$res);
		\$tipo = \$dato["tipo"];
		\$codigo = htmlentities(\$dato["codigo"]);
		\$descripcion = htmlentities(\$dato["descripcion"]);
	}
}
echo <<< formulario

<form action="?plugin=modificar_plugin" method="post" enctype="application/x-www-form-urlencoded">
<label>Nombre: <input type="text" name="nombre" value="\$nombre"/></label>
<label for="cod" >Código:</label>
<textarea id="cod" name="codigo" style="width: 100%; height: 100px">\$codigo</textarea>
<label for="descr" >Descripción:</label>
<textarea id="descr" name="descripcion" style="width: 100%; height: 100px">\$descripcion</textarea>
<label>inactivo<input type="radio" name="tipo" value="0" /></label>
<label>activo<input type="radio" name="tipo" value="1" checked="checked"/></label>
<button type="submit" >modificar plugin</button>
</form>

formulario;

crear_editar_plugin;

	$listado_plugins = <<< crear_listado_plugins
\$sql = "select nombre, tipo from \$tabla_de_plugins";
\$res = @mysql_query(\$sql);
if (\$res)	{
	if (mysql_num_rows(\$res) == 0)	echo "no se encontraron plugines...";
	else	{
		\$listado = array();
		while (\$dato = mysql_fetch_array(\$res))	{
			\$nombre = \$dato["nombre"];
			\$tipo = \$dato["tipo"];
			\$editar = " | <a href='?plugin=editar_plugin&nombre=\$nombre'>editar</a>";
			\$item = (\$tipo == 0) ? "<li>\$nombre\$editar</li>" : "<li><a href='?plugin=\$nombre'>\$nombre</a>\$editar</li>";
			array_push(\$listado, \$item);
		}
		echo "<ul>".implode("", \$listado)."</ul>";
	}
}
crear_listado_plugins;

Hemos creado casi todos los elementos de la lista que terminan en "_plugin", y luego de insertar algunos de prueba para comprobar que todo funcionaba correctamente, nos hemos visto obligados a crear el que se llama "borrar_plugin", con prácticamente el mismo número de lineas para la inserción y modificación de los mismos.

Solo nos queda mucho trabajo (o mucha diversión) por delante

Es evidente que los básicos códigos originales no son los que pueden verse entrando en el sistema de complementos que hemos creado. Lo primero que hemos hecho es mejorar un poco la apariencia y las indicaciones que se pueden ver en el modo informativo.

Iremos indicando las modificaciones en futuros apuntes.

Zona de comentarios

Este apunte aún no tiene comentarios.

Evaluación

Valoración de esta página: (apunte.71) valor

Valoración evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar evaluar

Respuesta: Zona de mensajes (proceso de evaluación)

Historial de navegación

Esta página ha sido visitada en 6469 ocasiones


Disponemos de rss sindicar

Y del Mapa del sitio, además del sitemap.xml.


Aquí podemos encontrar los apuntes más visitados.

"Top 10" reemplaza a la sección Últimos apuntes.


Una buena forma de buscar un apunte es a partir de su categoría.


También es posible buscar apuntes por medio de las etiquetas (tags).


Hemos decidido poner al alcance de todos algunos comodines.

Adjuntamos una versión reducida del "buscador interno" que vemos en la lista anterior:

Buscar en apuntes

También estamos recopilando antiguas páginas del sitio.


Desde este recuadro se puede hacer una búsqueda cronológica.


Se puede crear una postal nueva desde el enlace del sector "Otras páginas del dominio", o editar la que sale en el recuadro, pulsando sobre ella..

../diario.imagen.php?id=2&max=480
enlace a la postal
Copyright © 2002-2024 www.pepemolina.com
RSS rss | Ver Mapa del sitio