Revision [301]
Last edited on 2007-06-12 11:12:58 by JavierWilsonAdditions:
1) [[CreandoPagina Creando una página web]]
1) [[MostrandoDatos Mostrando datos en el web]] (página con listado de datos)
1) [[MostrandoUnDato Mostrando un dato en el web]] (página de item seleccionado del listado)
Categorías: CategoryAlmidon CategoryTutorial
1) [[MostrandoDatos Mostrando datos en el web]] (página con listado de datos)
1) [[MostrandoUnDato Mostrando un dato en el web]] (página de item seleccionado del listado)
Categorías: CategoryAlmidon CategoryTutorial
Deletions:
Revision [161]
Edited on 2007-04-18 20:13:09 by WikiAdminAdditions:
1) [[InstalacionyConfiguracion Instalación y configuración]]
1) [[CreandoBasedeDatos Creando tablas y base de datos]]
1) [[CreandoAdministracion La interfaz de administración]]
1) [[CreandoBasedeDatos Creando tablas y base de datos]]
1) [[CreandoAdministracion La interfaz de administración]]
Deletions:
- [[CreandoBasedeDatos Creando tablas y base de datos]]
- [[CreandoAdministracion La interfaz de administración]]
Revision [160]
Edited on 2007-04-18 20:12:37 by WikiAdminAdditions:
- [[InstalacionyConfiguracion Instalación y configuración]]
- [[CreandoBasedeDatos Creando tablas y base de datos]]
- [[CreandoAdministracion La interfaz de administración]]
Nota: En este tutorial asumimos el uso de Linux, Apache y Postgresql:
- [[CreandoBasedeDatos Creando tablas y base de datos]]
- [[CreandoAdministracion La interfaz de administración]]
Nota: En este tutorial asumimos el uso de Linux, Apache y Postgresql:
Deletions:
====Instalación y configuración====
~1. Creación del dominio, como usuario root:
### addwww.pl username password example.org Web de Example##
Nota: Este paso crea el nombre de usuario, los directorios necesarios del dominio (logs y html). Además sugiere una configuración tanto para apache (virtualhost) como para bind (named.conf slave y master)
~2. Instalación básica de almidón:
### setup.sh username example.org##
Nota: Este paso crea el esqueleto de almidón con los permisos necesarios, los htaccess necesario para que el sitio esté en desarrollo, una vez en produccion editar el .htaccess para evitar los display_errors. Sugiere también dos comandos para la creación de la base de datos y su usuario. Pero no crea el .htpasswd, este debe crearse en el directorio casa del usuario, a mano con:
### httpasswd -c .htpasswd username##
~3. Creación de usario de base de datos y base de datos:
### createuser -Upostgres -SDRP username##
Nota: Elegir password, el mismo password debe ser luego ingresado en classes/config.php, a continuación se crea la base de datos, generalmente usamos el mismo nombre que el usuario en el nombre de la base de datos, databasename.
### createdb -Upostgres -Ousername databasename##
~4. Configuración:
Es sano dar una revisada a classes/config.php para ver si todos los datos son correctos, especialmente el password, cambiar pass por el password especificado al momento de crear el usuario. Debe quedar como a continuación:
%%(php)
# Funciones que definen el comportamiento de PHP
setlocale(LC_TIME, "es_ES");
# Constantes de conexion la base de datos
define ('DSN', 'pgsql://username:password@/databasename');
define ('DEBUG', true);
# Constantes del web y filesystem
define ('DOMAIN', 'example.org');
define ('ROOTDIR', '/www/' . DOMAIN);
define ('SQLLOG', ROOTDIR . '/logs/sql.log');
define ('LOGFILE', ROOTDIR . '/logs/cms.log');
define ('HOMEDIR', ROOTDIR .'/public_html');
define ('URL', 'http://www.' . DOMAIN);
define ('EMAIL', 'info@' . DOMAIN);
define ('MAXROWS', 5);
define ('MAXCOLS', 6);
?>
%%
====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 createsql.php > script.sql
En este caso quedaría así:
%%(sql)
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)
);
%%
~3. Creado las tablas en Postgresql:
### psql -Uusername -f script.sql databasename
====La administración del sitio web====
Revision [153]
Edited on 2007-04-18 19:22:40 by WikiAdminAdditions:
En este caso quedaría así:
%%(sql)
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)
);
%%(sql)
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)
);
Deletions:
function galeriaTable() {
$this->Table('galeria');
$this->key = 'idgaleria';
$this->title = 'Galeria';
$this->order = 'idgaleria DESC';
$this->addColumn('idgaleria','serial',0,1,0,'Id');
$this->addColumn('galeria','varchar',500,0,0,'Titulo');
class enlaceTable extends Table {
function enlaceTable() {
$this->Table('enlace');
$this->key = 'idenlace';
$this->title ='Enlaces';
$this->order ='idenlace DESC';
$this->addColumn('idenlace','serial',0,1,0,'Id');
$this->addColumn('enlace','varchar',500,0,0,'Titulo');
Revision [152]
Edited on 2007-04-18 19:19:38 by WikiAdminAdditions:
~1. Editando la capa intermedia: classes/tables.class.php
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 createsql.php > script.sql
~3. Creado las tablas en Postgresql:
### psql -Uusername -f script.sql databasename
====La administración del sitio web====
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 createsql.php > script.sql
~3. Creado las tablas en Postgresql:
### psql -Uusername -f script.sql databasename
====La administración del sitio web====
Deletions:
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.
Revision [151]
Edited on 2007-04-18 19:13:41 by WikiAdminAdditions:
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).
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 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');
}
}
class galeriaTable extends Table {
function galeriaTable() {
$this->Table('galeria');
$this->key = 'idgaleria';
$this->title = 'Galeria';
$this->order = 'idgaleria DESC';
$this->addColumn('idgaleria','serial',0,1,0,'Id');
$this->addColumn('galeria','varchar',500,0,0,'Titulo');
$this->addColumn('imagen','image',0,0,0,'Imagen');
$this->addColumn('idcategoria','int',0,0,'categoria','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 enlaceTable extends Table {
function enlaceTable() {
$this->Table('enlace');
$this->key = 'idenlace';
$this->title ='Enlaces';
$this->order ='idenlace DESC';
$this->addColumn('idenlace','serial',0,1,0,'Id');
$this->addColumn('enlace','varchar',500,0,0,'Titulo');
$this->addColumn('url','varchar',500,0,0,'URL');
$this->addColumn('idcategoria','int',0,0,'categoria','Categoria');
}
}
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.
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).
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 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');
}
}
class galeriaTable extends Table {
function galeriaTable() {
$this->Table('galeria');
$this->key = 'idgaleria';
$this->title = 'Galeria';
$this->order = 'idgaleria DESC';
$this->addColumn('idgaleria','serial',0,1,0,'Id');
$this->addColumn('galeria','varchar',500,0,0,'Titulo');
$this->addColumn('imagen','image',0,0,0,'Imagen');
$this->addColumn('idcategoria','int',0,0,'categoria','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 enlaceTable extends Table {
function enlaceTable() {
$this->Table('enlace');
$this->key = 'idenlace';
$this->title ='Enlaces';
$this->order ='idenlace DESC';
$this->addColumn('idenlace','serial',0,1,0,'Id');
$this->addColumn('enlace','varchar',500,0,0,'Titulo');
$this->addColumn('url','varchar',500,0,0,'URL');
$this->addColumn('idcategoria','int',0,0,'categoria','Categoria');
}
}
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.
Revision [150]
Edited on 2007-04-18 18:57:53 by WikiAdminAdditions:
~1. Creación del dominio, como usuario root:
### addwww.pl username password example.org Web de Example##
~2. Instalación básica de almidón:
### setup.sh username example.org##
### httpasswd -c .htpasswd username##
~3. Creación de usario de base de datos y base de datos:
### createuser -Upostgres -SDRP username##
Nota: Elegir password, el mismo password debe ser luego ingresado en classes/config.php, a continuación se crea la base de datos, generalmente usamos el mismo nombre que el usuario en el nombre de la base de datos, databasename.
### createdb -Upostgres -Ousername databasename##
~4. Configuración:
Es sano dar una revisada a classes/config.php para ver si todos los datos son correctos, especialmente el password, cambiar pass por el password especificado al momento de crear el usuario. Debe quedar como a continuación:
%%(php)
# Funciones que definen el comportamiento de PHP
setlocale(LC_TIME, "es_ES");
# Constantes de conexion la base de datos
define ('DSN', 'pgsql://username:password@/databasename');
define ('DEBUG', true);
# Constantes del web y filesystem
define ('DOMAIN', 'example.org');
define ('ROOTDIR', '/www/' . DOMAIN);
define ('SQLLOG', ROOTDIR . '/logs/sql.log');
define ('LOGFILE', ROOTDIR . '/logs/cms.log');
define ('HOMEDIR', ROOTDIR .'/public_html');
define ('URL', 'http://www.' . DOMAIN);
define ('EMAIL', 'info@' . DOMAIN);
define ('MAXROWS', 5);
define ('MAXCOLS', 6);
?>
%%
====Creando la base de datos====
~1. Editar classes/tables.class.php
----
Categorías: CategoryAlmidon
### addwww.pl username password example.org Web de Example##
~2. Instalación básica de almidón:
### setup.sh username example.org##
### httpasswd -c .htpasswd username##
~3. Creación de usario de base de datos y base de datos:
### createuser -Upostgres -SDRP username##
Nota: Elegir password, el mismo password debe ser luego ingresado en classes/config.php, a continuación se crea la base de datos, generalmente usamos el mismo nombre que el usuario en el nombre de la base de datos, databasename.
### createdb -Upostgres -Ousername databasename##
~4. Configuración:
Es sano dar una revisada a classes/config.php para ver si todos los datos son correctos, especialmente el password, cambiar pass por el password especificado al momento de crear el usuario. Debe quedar como a continuación:
%%(php)
# Funciones que definen el comportamiento de PHP
setlocale(LC_TIME, "es_ES");
# Constantes de conexion la base de datos
define ('DSN', 'pgsql://username:password@/databasename');
define ('DEBUG', true);
# Constantes del web y filesystem
define ('DOMAIN', 'example.org');
define ('ROOTDIR', '/www/' . DOMAIN);
define ('SQLLOG', ROOTDIR . '/logs/sql.log');
define ('LOGFILE', ROOTDIR . '/logs/cms.log');
define ('HOMEDIR', ROOTDIR .'/public_html');
define ('URL', 'http://www.' . DOMAIN);
define ('EMAIL', 'info@' . DOMAIN);
define ('MAXROWS', 5);
define ('MAXCOLS', 6);
?>
%%
====Creando la base de datos====
~1. Editar classes/tables.class.php
----
Categorías: CategoryAlmidon
Deletions:
# addwww.pl username password example.org Web de Example
2. Instalación básica de almidón:
# setup.sh username example.org
# httpasswd -c .htpasswd username
3. Creación de usario de base de datos y base de datos:
# createuser -Upostgres -SDRP obs
Nota: Elegir password, el mismo password debe ser luego ingresado en classes/config.php
# createdb -Upostgres -Oobs obs
4. Configuración:
Es sano dar una revisada a classes/config.php para ver si todos los datos son correctos, especialmente el password, cambiar pass por el password especificado al momento de crear el usuario.