Trabalhando com JTable
De Basef
Extender a classe JTable facilita o trabalho para inserir, alterar, remover e coletar dados de uma tabela.
Segue abaixo modelo:
class Avatar extends JTable { // Configurações de campos da tabela. Para cada campo da tabela deve haver // uma propriedade e o respectivo valor padrão var $user_id = '0'; var $avatar = '/images/avatar/sem_imagem.gif'; function __construct( &$db ) { // Informe neste constructor, o nome da tabela no primeiro parâmetro // e campo índice da tabela (auto-increment) no segundo parâmetro parent::__construct( '#__usuarios_mais', 'user_id', $db ); } // Replaces a row into a table based on an objects properties function replaceObject( ) { $table = $this->_tbl; $object = $this; $fmtsql = 'REPLACE INTO '.mysql_escape_string($table).' ( %s ) VALUES ( %s ) '; $fields = array(); foreach (get_object_vars( $object ) as $k => $v) { if (is_array($v) or is_object($v) or $v === NULL) { continue; } if ($k[0] == '_') { // internal field continue; } $fields[] = mysql_escape_string( $k ); $values[] = "'" . mysql_escape_string( $v ) . "'"; } $this->_db->setQuery( sprintf( $fmtsql, implode( ",", $fields ) , implode( ",", $values ) ) ); if (!$this->_db->query()) { return false; } return true; } }
Para usar a classe Avatar acima:
// Pega instância do banco de dados do Joomla $db =& JFactory::getDBO(); // Instancia a classe da tabela Avatar $tabela = new Avatar( $db ); // Preenche os campos $campos = array(); $campos['user_id'] = 15; $campos['avatar'] = '/images/minha_imagem.jpg'; // Insere os dados na tabela $tabela->bind( $campos ); $tabela->store();