Categoria: Joomla
|
Publicado em 12 de Fevereiro de 2011
|
Extender a classe JTable facilita o trabalho para inserir, alterar, remover e coletar dados de uma tabela.
Segue abaixo modelo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
// 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();
|
|