sexta-feira, 5 de junho de 2009

PHP - Como inserir o resultado de uma consulta Mysql num array utilizando a função array_push

A seguir será demonstrado como conectar com banco de dados Mysql e realizar uma consulta.

Os dados obtidos serão inseridos num array contendo a chave e o valor de cada elemento. A chave é nome do campo da tabela, o valor é o conteúdo do campo.



/** Conexão **/
mysql_connect("localhost", "root","") or
die("Não foi possível conectar: " . mysql_error()); // mensagem de excessão

mysql_select_db("testes"); // seta o banco de dados

$resultado = mysql_query("SELECT * FROM tb_usuario"); // consulta sql

$arrayDados = array(); // criar array vazio

while($linha = mysql_fetch_array($resultado, MYSQL_NUM)) {
// incluir valores no array
array_push($arrayDados,
array('id_usuario'=>$linha[0],
'no_usuario'=>$linha[1]
)
);
}

// conferir valores do array
foreach($arrayDados as $chave) {
echo var_dump($chave). "
";
}

// liberar memória utilizada para consulta
mysql_free_result($resultado);


fonte: php.net

Atenciosamente,
Rondson Lima

quarta-feira, 3 de junho de 2009

PHP - Como criar um array com quantidade de chaves e valores pré-determinados

A função array_fill do PHP possibilita a criação de um array com chaves e valores determinados por parâmetro. Exemplo:

$valoresMes = array_fill(1,31,0);

O primeiro parâmetro é passado o valor inicial da chave.
O segundo parâmetro é passado o valor final da chave.
O terceiro parâmetro é passado o valor que cada elemento terá.

resultado:

Array
(
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[n] => 0
[31] => 0
)


O exemplo acima poderá ser utilizado, na prática, para informar o número de ocorrências em dias de determinados meses.

fonte: php.net

Atenciosamente,
Rondson Lima.

segunda-feira, 1 de junho de 2009

PHP - Zend Framework - Tutorial - Como construir um formulário utilizando Zend_Form

Conforme os padrões de arquitetura do Zend Framework, devemos considerar a estrutura de pastas conforme abaixo:


A classe UsuarioController deverá possuir o conteúdo a seguir:

UsuarioController.php


class UsuarioController extends GenericoController {

public function getForm() {

$form = new Zend_Form();

$form->setAction($this->getBaseUrl().'/usuario/login')
->setMethod('post');

// cria e configura o elemento usuário
$usuario = $form->createElement('text', 'usuario');
$usuario->addValidator('alnum')
->addValidator('regex', false, array('/^[a-z]/i'))
->addValidator('stringLength', false, array(6,20))
->setRequired(true)
->addFilter('StringToLower');

// cria e configura o elemento senha
$senha = $form->createElement('password', 'senha');
$senha->addValidator('StringLength', false, array(6))
->setRequired(true);

// adiciona elementos ao formulário
$form->addElement($usuario)
->addElement($senha)
->addElement('submit', 'login', array('label' => 'Login'));

return $form;
}

public function indexAction() {
// renderize usuario/form.phtml
$this->view->form = $this->getForm();
$this->render('form');
}

public function loginAction() {
if(!$this->getRequest()->isPost()) {
return $this->_forward('index');
}

$form = $this->getForm();

if(!$form->isValid($_POST)) {
//falha na validação; exibe o formulário novamente
$this->form = $form;
return $this->render('form');
}

$valor = $form->getValues();
}

}


Observação no $this->getBaseUrl(). Deverá ser inserida a baseUrl do projeto, inseri o método no GenericoController para ser utilizado nos demais Controllers, o método é público e contém o código return $this->getFrontController()->getBaseUrl();

O arquivo form.phtml deverá possuir o seguinte conteúdo: < ? = $this->form; ?>

Caso seja exibido apenas form; ?>, é necessário habilitar as short tags no PHP conforme exemplo a seguir:

Habilitar short tags no PHP

No arquivo configuração do PHP, php.ini procure pela palavra abaixo:

short_open_tag

Apague off e escreva on.
Reinicie o Apache.

Pronto, agora a tag estará disponível para utilização. Conforme rege a documentação oficial do Zend_Form.

fonte: http://framework.zend.com/manual/en/zend.form.html

Atenciosamente,
Rondson Lima

quarta-feira, 27 de maio de 2009

Zend Framework - Tutorial de sobrescrita do método preDispatch() do Zend_Controller_Action

O Zend_Controller_Action proporciona dois métodos que podem ser chamados a cada Action solicitada, o preDispatch() e o postDispatch(). Este métodos podem ser úteis de variadas maneiras, entre elas o controle de autenticação.

Este tutorial tem como objetivo exemplificar a utilização do método preDispatch() através da sobrescrita por uma classe extendida do Zend_Controller_Action.

No formulario criado pelo Zend_Form, como exemplo a seguir, setAction será atribuído com a baseUrl + Controller + Action:



$form = new Zend_Form();

$form->setAction($this->baseUrl.'/usuario/cadastrar')
->setMethod('post');

$form->addElement('text','username',array(
'validators' => array(
'alnum',
array('regex', false, '/^[a-z]/i')
),
'required' => true,
'filters' => array('StringToLower'),
));

$form->addElement('submit','Enviar');

echo $form->render();



Percebam que a baseUrl foi passada através de do atributo $this->baseUrl. Uma maneira de passar a baseUrl seria no UsuarioController, na cadastrarAction(), conter o seguinte comando:


$this->baseUrl = $this->getFrontController()->getBaseUrl();
$this->view->baseUrl = $this->baseUrl;


Desta maneira seria possível passar no formulário apenas $this->baseUrl. Porém em todos os Controllers e Actions deveria ter as duas linhas de comando acima. Para que isto não seja necessário devemos utilizar o método preDispatch() do Zend_Controller_Action. Aonde para cada Action chamada será executado o método em questão. Uma maneira de sobrescrever é criar uma classe genérica, em que todas os controllers deverão extender desta classe. A classe genérica deverá extender a classe Zend_Controller_Action.

GenericoController.php:



class GenericoController extends Zend_Controller_Action {

private $baseUrl;

/** Este método é uma sobrescrita do preDispatch() do Zend_Controller_Action
*
* @see app/zf/Zend/Controller/Zend_Controller_Action#preDispatch()
*
* Será executado antes de qualquer chamada a um Action do Controller
*
*/
public function preDispatch() {
$this->baseUrl = $this->getFrontController()->getBaseUrl();
$this->view->baseUrl = $this->baseUrl;
}

}


Espero ter ajudado!

Atenciosamente,
Rondson Lima

quarta-feira, 20 de maio de 2009

PostgreSQL - Como converter data (timestamp) para o formato Brasileiro - BRT

A seguir apresento duas maneiras de converter data através de uma consulta SQL:

1) É utilizado a função date_part que retorna parte de uma data conforme parâmetro informado.

modo 1:


SELECT date_part('day',now()) || '/' || date_part('month',now()) || '/' || date_part('year', now())


resultado: "20/5/2009"

2) É utilizado a função to_char que converte a data informada pelo timestamp (data e hora atual) para o formato informado no segundo parâmetro da função.

modo 2:


SELECT to_char(timestamp 'now', 'DD/MM/YYYY)


resultado: "20/05/2009"


fonte: http://www.postgresql.org/docs/6.3/static/c10.htm

Atenciosamente,
Rondson Lima