Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » Chamando do php funções mysql
Conheça o Plugfeed | » Início » Desenvolvimento » Banco de dados e SQL » Chamando do php funções mysql -->
 
Avaliação: Não avaliado | Publicado em: 30/06/2008
Chamando do php funções mysql
José Roberto Gomes da Silva programador PHP na RCT Retail, desenvolve trabalhos em PHP/Javascript, Action Script
Chamando do php funções mysql

//Criação da tabela para o manter os dados iniciais
CREATE TABLE  `testetrigger`.`teste1` (
  `id` int(11) NOT NULL auto_increment,
  `nome` varchar(60) NOT NULL,
  `sts` enum('0','1') NOT NULL,
  `obs` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)

//Inclui dados para teste
INSERT INTO `testetrigger`.`teste1` VALUES  (1,'teste1','0','Incluido manualmente'),
 (2,'teste2','0','Incluido manualmente'),
 (3,'teste3','0','Incluido manualmente'),
 (4,'teste4','1','Incluido manualmente'),
 (5,'teste5','1','Incluido manualmente'),
 (6,'teste6','1','Incluido manualmente'),
 (7,'teste7','1','Incluido manualmente');


//Criação da tabela que será gravada pela funcion
CREATE TABLE  `testetrigger`.`teste2` (
  `id` int(11) NOT NULL auto_increment,
  `nome` varchar(60) NOT NULL,
  `sts` enum('0','1') NOT NULL,
  `obs` varchar(255) NOT NULL,
  PRIMARY KEY  (`id`)
)


Já com a base de dados teste criada vamos construir nossa function no mysql.

//Altera o delimitador de código
DELIMITER $$

//criação da função testando
CREATE FUNCTION  `testando`() RETURNS int(11)

//delimitando bloco da função
BEGIN
   
    //Declarando variáveis para receber os valores
    DECLARE nm    VARCHAR(25);
    DECLARE st     ENUM('0','1');

    //declarando a variável de controle do laço
    DECLARE done     INT DEFAULT 0;

    //Declarando o cursor que retornará o respectivo sql da tabela 1
    DECLARE cur     CURSOR FOR SELECT nome, sts FROM teste1;

    //Declaração do handler para o loop do cursor 'cur'
    DECLARE         CONTINUE HANDLER FOR NOT FOUND SET done=1;

    //Abro o cursor para o loop
    OPEN cur;
   
    //Bloco do loop do cursor
    REPEAT
        //Com o fatch extraio os valores do cursor para as variáveis nm e st
        FETCH cur INTO nm,st;

        //Este if verifica se o cursor está encerrado... caso não esteja executa a query
        IF NOT done THEN

           //neste momento executa a query que irá incluir os valores vindo do sql da tabela1 para a tabela2 alterando apenas a observação
            INSERT INTO teste2( nome , sts , obs ) VALUES( nm, st , CONCAT( 'Incluido por trigger|status=' , st ) );
           
        //encerra o if
        END IF;
       
    //verifica se chegou ao fim do cursor, caso não retorna até o campo repeat para continuar com o loop
    UNTIL done END REPEAT;
   
    //Encerra o cursor
    CLOSE cur;
   
    //retorno da função
    RETURN 1;
   
//encerra o bloco da função
END $$

//retorna o delimitador padrão do mysql
DELIMITER ;



Como podem ver não é muito complicado trabalhar com uma função no mysql utilizando cursor... basicamente vc declara uma variável do tipo cursor setando a query
diretamente nela... declara o handler que vai controlar o laço desse cursor... uma boleana que vai verificar se esse laço chegou até o seu fim, abre o cursor e coloca ele em loop com o comando repeat.
Dentro do laço recupera a informação do cursor como comando fetch e executa o insert com os valores retornado.
após a transação fecha o cursor e encerra a função

depois de criada a função, vamos ao php


<?php

//Conexão com base de dados
$db = mysql_connect( "localhost" , "nome do usuario" , "senha do usuario" );
mysql_select_db("testetrigger");

//Chamando a função na base de dados
mysql_query( "SELECT testando()" );

print "<h2>Ativando Funcition no mysql</h2>";

for( $i = 1 ; $i < 3 ; $i++ ){
   
    //select das tabelas para exibir conteudo na tela
    $qry = mysql_query( "SELECT * FROM teste{$i}" );
   
    print     "<div style='border:solid 1px #DDD; width:650px'>" .
            "<h3>Exibindo resultado tabela {$i}</h3>";

    //Exibe conteudo na tela
    while( $rs = mysql_fetch_object( $qry ) )
        print "<hr>Descricao = {$rs->nome} - obs = {$rs->obs}<hr>";
       
    print "</div>";   

}

die("################### [ Fim de teste ] ###################");
?>
 

Bem... no php eu basicamente chamo a função do mysql, e depois rodo as querys para ver os valores das duas tabelas.
O exemplo que estou mostrando aqui é bem símples e com pouca utilidade, mas você pode usar uma função pra infinitas utilidades, e concerteza pode savar sua vida.
Exemplos interessantes é validação de cpf, ou formatação de campos ou atualização de dados de várias tabelas com apenas um comando... sei la, a imaginação é quem manda!!

Se quiser pode baixar os fonts para estudar o código

Espero que tenham gostado... até a próxima!
Páginas: « Anterior 1 2 Próximo » 
Arquivos anexos ao artigo

desconhecido
isso é grego , tem que ter saco : Não avaliado








Um produto Detetive.net