GPDB es una pequeña aplicación web para organizar una videoteca, la idea original es de Octavio Ruelas un amigo, quien hizo su propia videoteca en Microsoft Access, pero tenía la inquietud de poder consultarla en línea, también surgió la idea de que se pudieran generar unos listados que Final Cut utiliza para cargar tomas desde los video cassettes.
Apenas e subido a googlecode.com http://code.google.com/p/gpdb/ la aplicación para organizar la videoteca, por el momento muy sencilla y sin administración o navegación bien definida, a partir de hoy estaré en contacto más frecuente con Octavio para avanzar y dejar esto funcional antes del 15 de Diciembre (espero).
Mostrando las entradas con la etiqueta PHP. Mostrar todas las entradas
Mostrando las entradas con la etiqueta PHP. Mostrar todas las entradas
martes, 4 de diciembre de 2007
miércoles, 18 de julio de 2007
CakePHP templates en Eclipse
Dos de los motivos para usar un IDE son el coloreo de sintaxis y el auto-completado de codigo, sin embargo es comun que los frameworks para desarrollo como Ruby On Rails, Smarty y en este caso CakePHP se inventen alguna extension para sus archivos de template. CakePHP los llama .thtml, empezar a trabajar en un proyecto con CakePHP y Eclipse es bastante sencillo, basta descomprimir y extraer el archivo que descargamos de la pagina de CakePHP renombrar el directorio obtenido e iniciar un proyecto nuevo de PHP en Eclipse.
Sin embargo al crear nuestra primera vista, el coloreo de sintaxis y el auto-completado desaparecen. Para remediar esto, sigue estos pasos:
Sin embargo al crear nuestra primera vista, el coloreo de sintaxis y el auto-completado desaparecen. Para remediar esto, sigue estos pasos:
- Selecciona del menu Window->Preferences.
- Selecciona el nodo General->Content types.
- Selecciona Text->HTML y clic en Add... en el cuadro de dialogo Define a new type escribe *.thtml y clic a OK.
- Selecciona Text->PHP Source File y la misma operacion del paso anterior.
- Selecciona del menu de la izquierda General->Editors->File Associations, si en la lista File Types no aparece *.thtml agregalo.
- Clic en OK de Preferences.
jueves, 4 de mayo de 2006
PHP5 Clase para representar base de datos
Ya hace algún tiempo que me tope con el artículo "Going dynamic with PHP" de Jack Herrington, Senior Software Engineer, "Code Generation Network" en el sitio developerWorks de IBM.
Nos muestra como aprovechando las nuevas características de programación orientada a obejetos en PHP 5 se pueden crear objetos muy flexibles capaces de crear metodos y variables miembro al vuelo.
En la actualidad utilizo el siguiente codigo en mis aplicaciones de PHP como base, para una explicación de como funciona sugiero leer el artículo en developerWorks, yo solo lo pongo aquí para disponer de el en forma inmediata.
getMessage()); }
class DBObject
{
private $id = 0;
private $table;
private $fields = array();
function __construct( $table, $fields )
{
$this->table = $table;
foreach( $fields as $key )
$this->fields[ $key ] = null;
}
function __get( $key )
{
return $this->fields[ $key ];
}
function __set( $key, $value )
{
if ( array_key_exists( $key, $this->fields ) )
{
$this->fields[ $key ] = $value;
return true;
}
return false;
}
function load( $id )
{
global $db;
$res = $db->query(
"SELECT * FROM ".$this->table." WHERE ".
$this->table."_id=?",
array( $id )
);
$res->fetchInto( $row, DB_FETCHMODE_ASSOC );
$this->id = $id;
foreach( array_keys( $row ) as $key )
$this->fields[ $key ] = $row[ $key ];
}
function insert()
{
global $db;
$fields = $this->table."_id, ";
$fields .= join( ", ", array_keys( $this->fields ) );
$inspoints = array( "0" );
foreach( array_keys( $this->fields ) as $field )
$inspoints []= "?";
$inspt = join( ", ", $inspoints );
$sql = "INSERT INTO ".$this->table.
" ( $fields ) VALUES ( $inspt )";
$values = array();
foreach( array_keys( $this->fields ) as $field )
$values []= $this->fields[ $field ];
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
$res = $db->query( "SELECT last_insert_id()" );
$res->fetchInto( $row );
$this->id = $row[0];
return $row[0];
}
function update()
{
global $db;
$sets = array();
$values = array();
foreach( array_keys( $this->fields ) as $field )
{
$sets []= $field.'=?';
$values []= $this->fields[ $field ];
}
$set = join( ", ", $sets );
$values []= $this->id;
$sql = 'UPDATE '.$this->table.' SET '.$set.
' WHERE '.$this->table.'_id=?';
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
}
function delete()
{
global $db;
$sth = $db->prepare(
'DELETE FROM '.$this->table.' WHERE '.
$this->table.'_id=?'
);
$db->execute( $sth,
array( $this->id ) );
}
function delete_all()
{
global $db;
$sth = $db->prepare( 'DELETE FROM '.$this->table );
$db->execute( $sth );
}
}
class Book extends DBObject
{
function __construct()
{
parent::__construct( 'book',
array( 'author', 'title', 'publisher' ) );
}
}
$book = new Book( );
$book->delete_all();
$book->{'title'} = "PHP Hacks";
$book->{'author'} = "Jack Herrington";
$book->{'publisher'} = "O'Reilly";
$id = $book->insert();
echo ( "New book id = $id\n" );
$book->{'title'} = "Podcasting Hacks";
$book->update();
$book2 = new Book( );
$book2->load( $id );
echo( "Title = ".$book2->{'title'}."\n" );
$book2->delete( );
?>
Nos muestra como aprovechando las nuevas características de programación orientada a obejetos en PHP 5 se pueden crear objetos muy flexibles capaces de crear metodos y variables miembro al vuelo.
En la actualidad utilizo el siguiente codigo en mis aplicaciones de PHP como base, para una explicación de como funciona sugiero leer el artículo en developerWorks, yo solo lo pongo aquí para disponer de el en forma inmediata.
getMessage()); }
class DBObject
{
private $id = 0;
private $table;
private $fields = array();
function __construct( $table, $fields )
{
$this->table = $table;
foreach( $fields as $key )
$this->fields[ $key ] = null;
}
function __get( $key )
{
return $this->fields[ $key ];
}
function __set( $key, $value )
{
if ( array_key_exists( $key, $this->fields ) )
{
$this->fields[ $key ] = $value;
return true;
}
return false;
}
function load( $id )
{
global $db;
$res = $db->query(
"SELECT * FROM ".$this->table." WHERE ".
$this->table."_id=?",
array( $id )
);
$res->fetchInto( $row, DB_FETCHMODE_ASSOC );
$this->id = $id;
foreach( array_keys( $row ) as $key )
$this->fields[ $key ] = $row[ $key ];
}
function insert()
{
global $db;
$fields = $this->table."_id, ";
$fields .= join( ", ", array_keys( $this->fields ) );
$inspoints = array( "0" );
foreach( array_keys( $this->fields ) as $field )
$inspoints []= "?";
$inspt = join( ", ", $inspoints );
$sql = "INSERT INTO ".$this->table.
" ( $fields ) VALUES ( $inspt )";
$values = array();
foreach( array_keys( $this->fields ) as $field )
$values []= $this->fields[ $field ];
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
$res = $db->query( "SELECT last_insert_id()" );
$res->fetchInto( $row );
$this->id = $row[0];
return $row[0];
}
function update()
{
global $db;
$sets = array();
$values = array();
foreach( array_keys( $this->fields ) as $field )
{
$sets []= $field.'=?';
$values []= $this->fields[ $field ];
}
$set = join( ", ", $sets );
$values []= $this->id;
$sql = 'UPDATE '.$this->table.' SET '.$set.
' WHERE '.$this->table.'_id=?';
$sth = $db->prepare( $sql );
$db->execute( $sth, $values );
}
function delete()
{
global $db;
$sth = $db->prepare(
'DELETE FROM '.$this->table.' WHERE '.
$this->table.'_id=?'
);
$db->execute( $sth,
array( $this->id ) );
}
function delete_all()
{
global $db;
$sth = $db->prepare( 'DELETE FROM '.$this->table );
$db->execute( $sth );
}
}
class Book extends DBObject
{
function __construct()
{
parent::__construct( 'book',
array( 'author', 'title', 'publisher' ) );
}
}
$book = new Book( );
$book->delete_all();
$book->{'title'} = "PHP Hacks";
$book->{'author'} = "Jack Herrington";
$book->{'publisher'} = "O'Reilly";
$id = $book->insert();
echo ( "New book id = $id\n" );
$book->{'title'} = "Podcasting Hacks";
$book->update();
$book2 = new Book( );
$book2->load( $id );
echo( "Title = ".$book2->{'title'}."\n" );
$book2->delete( );
?>
Labels:
bases de datos,
objetos,
PHP,
Programación
Suscribirse a:
Entradas (Atom)