Inicio rápido: Creando la base de datos
- Instalación y configuración
- Creando tablas y base de datos
- La interfaz de administración
- Creando una página web
- Mostrando datos en el web (página con listado de datos)
- Mostrando un dato en el web (página de item seleccionado del listado)
En breve: crea tu estructura de datos en classes/tables.class.php
# php -q classes/createsql.php > script.sql
# psql -Uusername -f script.sql database
2. Creando la base de datos
1. Editando la capa intermedia: classes/tables.class.php
Este es un ejemplo típico donde se puede observar cada tabla definida por un class que hereda de Table. Aqui hay cierta sintaxis que seguir, primero el nombre de la clase debe llamarse igual que la tabla en la base de datos, se define no solo después de class sino en el constructor Table como
$this->Table('nombre_de_la_tabla'), la llave de la tabla debe llamarse
id + nombre_de_la_tabla, y el campo principal, el descriptor principal de la tabla debe llamarse igual que la misma tabla. Esta convención no es indispensable pero es de gran ayuda para automatizar la administración y especialmente hacer campos con menus (dropdown box) que hagan referencias a otras tablas, así ayudamos a saber cual esl id y el valor a mostrar del menu select (dropdown box). Nota: Las tablas don doble llave tienen key1, y key2, y herendan de
DoubleKeyTable.
También es importante mencionar los atributos: key (la llave primaria), title (un título descriptor), maxrows (máximo de filas para usar en un datagrid), order (por que campo o campos ordenar por defecto, agregar DESC para orden inverso), y hacen falta aqui el campo filter usado para filtrar (como WHERE) y el campo limit para limitar el numero de respuestas (LIMIT).
<?php
class categoriaTable extends Table {
function categoriaTable() {
$this->Table('categoria');
$this->key = 'idcategoria';
$this->title = 'Categorias';
$this->maxrows = 20;
$this->order = 'categoria';
$this->addColumn('idcategoria','serial',0,1,0,'Id');
$this->addColumn('categoria','varchar',500,0,0,'Categoria');
}
}
class docTable extends Table {
function docTable() {
$this->Table('doc');
$this->key = 'iddoc';
$this->title ='Documentos';
$this->order ='iddoc DESC';
$this->addColumn('iddoc','serial',0,1,0,'Id');
$this->addColumn('doc','varchar',500,0,0,'Titulo');
$this->addColumn('idcategoria','int',0,0,'categoria','Categoria');
$this->addColumn('fecha','date',0,0,0,'Fecha','-20:+1');
$this->addColumn('resumen','text',0,0,0,'Resumen');
$this->addColumn('portada','bool',0,0,0,'Portada?');
$this->addColumn('archivo','file',0,0,0,'Archivo');
$this->addColumn('imagen','image',0,0,0,'Imagen');
}
}
class paginaTable extends Table {
function paginaTable() {
$this->Table('pagina');
$this->key = 'idpagina';
$this->title = 'Paginas';
$this->addColumn('idpagina','varchar',32,1,0,'Id');
$this->addColumn('pagina','varchar',500,0,0,'Titulo');
$this->addColumn('texto','text',0,0,0,'Texto');
$this->addColumn('imagen','image',0,0,0,'Imagen');
$this->addColumn('url','varchar',500,0,0,'URL');
}
}
?>
El método addColumn requiere también cierta sintaxis: el primer argumento es el nombre del campo. El segundo el tipo de dato que puede ser serial, varchar, int o integer, numeric, text, html, image, file, bool o boolean, adivinarán su significado. El tercer argumento es el tamaño del campo o cero (0) en caso de que no se requiere (como con image, file, text, html, int, bool). El cuarto argumento indica si es o no un PRIMARY KEY, el quinto es cero (0) si no es FOREIGN KEY o indica el nombre de la tabla de la cual es FK en caso de serlo. El sexto y usualmente último dato es una etiqueta para el campo, una descripción.
2. Creando el script SQL:
Pueden hacerlo a mano o pueden hacerlo usando el script createsql.php, que toma tables.class.php y genera el DDL en SQL apartir de eso (o sea, los CREATE TABLE). Depende de la version de createsql.php puede requerir ser editado para indicar las tablas a crear, es muy sencillo solo se introducen en un array.
# php -q classes/createsql.php > script.sql
En este caso quedaría así:
CREATE TABLE pagina (
idpagina varchar (32) PRIMARY KEY ,
pagina varchar (500) ,
texto text ,
imagen varchar (500) ,
url varchar (500)
);
CREATE TABLE categoria (
idcategoria serial PRIMARY KEY ,
categoria varchar (500)
);
CREATE TABLE doc (
iddoc serial PRIMARY KEY ,
doc varchar (500) ,
idcategoria int REFERENCES categoria ,
fecha date ,
resumen text ,
portada bool ,
archivo varchar (500) ,
imagen varchar (500)
);
Nota: es importante que en
tables.class.php estén primero las tablas a las que luego se hagan referencia, si no puede dar error al crear la base de datos, en este ejemplo si hubiesemos entrado categoriaTable después de docTable, obtendriamos el error:
ERROR: relation "categoria" does not exist.
En caso de haber un error en la configuración el script no funcioanará, por ejemplo si el username o password son incorrectos puede obtenerse el error:
Unable to connect to PostgreSQL server.
3. Creado las tablas en Postgresql:
# psql -Uusername -f script.sql database
Generalmente username y database son el mismo, por ejemplo para el usuario test: psql -Utest -f script.sql test
Al ser preguntado por un password, es importante aqui usar el password correcto, no el de conexión FTP/SSH si no el de la base de datos, el mismo de classes/config.php
Categorías:
CategoryAlmidon CategoryTutorial
There are no comments on this page. [Add comment]