drinllyn 0 Denunciar post Postado Abril 10, 2015 boa tarde, a algum tempo busco uma solução para fazer a requisição de dados do banco FIREBIRD para o MYSQL, apos muita busca e pouco resultado resolvi fazer no braço. porem como nem tudo são sombra e água fresca, encontrei alguns problemas nos meus códigos que ainda não consegui solucionar, vou explicar um pouco melhor no exemplo. Exemplo1: fiz a conexão do FIREBIRD no PHP. CONEXÃO COM FIREBIRD // conecta no banco do firebird $servidor = '127.0.0.1:C:banco.gdb'; if (!($dbh=ibase_connect($servidor, 'SYSDBA', 'masterkey'))) die('Erro ao conectar: ' . ibase_errmsg()); // seleciona tudo do banco PRODUTO $sql = 'SELECT * FROM PRODUTO'; // faz uma busca no banco $query= ibase_query ($dbh, $sql) CONEXÃO COM MYSQL // conecta no banco do mysql $conn = mysql_connect("localhost", "root", ""); $db = mysql_select_db("teste", $conn); // seleciona tudo de um $tabela = "produto"; Ate então tudo simples, conectado e com resultado agora comecei a fazer o necessário. while ($row = ibase_fetch_object ($query)) { echo $row->codigo_produto; echo "<br/>"; echo $row->nome_produto; echo "<br/>"; echo $row->preco_produto; echo "<br/>"; $dados1 = $row->codigo_produto; $dados2 = $row->nome_produto; //agora vou grava as informações que eu quero $gravar = "INSERT INTO $tabela(codigo_produto,nome_produto) VALUES('$row->codigo_produto','$row->nome_produto')"; mysql_query($gravar) or die(mysql_error); } Perfeito, fez oq eu queria peguei dados do FIREBIRD e coloquei no MYSQL. agora a segunda etapa do código que manipular esses dados. falta eu lança preço e estoque que ficam em tabelas diferente. // conecta no banco do mysql $conn = mysql_connect("localhost", "root", ""); $db = mysql_select_db("teste", $conn); // variavel com nome das tabelas $tabela = "preco_produto"; $tabela2 = "produto"; //faço as consultas das tabelas que quero manipular $consulta=mysql_query("SELECT * FROM $tabela"); $consulta2=mysql_query("SELECT * FROM $tabela2"); //faz o laço para cadastro dos produtos // fazer ele buscar oq ja tem no preço caso tenho fazer update do contrario vai colocar. while ($row = mysql_fetch_object ($consulta2)) { if ($row->codigo_produto == $gravar['VALUES']) // agora aqui acontece o meu erro, não consigo puxar o valor do banco para //fazer uma comparação { echo $row->codigo_produto,'---'; echo 'certo','-----', $row->nome_produto; echo '<BR>' ; } else { echo $row->codigo_produto,'---'; echo 'errado','-----', $row->nome_produto; echo '<BR>' ; } } o Erro se encontra no IF onde eu peguntaria, (se o valor de ID do produto for = ao código de preço), me mostra resultado correto. do contrario, caso ele não exista ele vai criar ou modificar caso o valor esteja errado. espero ter explicado corretamente meu problema. Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 O nome da coluna, é codigo_produto ou product_id? Você está gravando codigo_produto e lendo product_id. Compartilhar este post Link para o post Compartilhar em outros sites
drinllyn 0 Denunciar post Postado Abril 10, 2015 desculpe por alterei no post para facilitar o intendimento de todos. fiz a correção do post. O nome da coluna, é codigo_produto ou product_id? Você está gravando codigo_produto e lendo product_id. o product_id e codigo_produto pois na tabela de preço consulto pelo valor da ID do produto, pois o mesmo pode ter vários preços por moedas diferentes, Exemplo tabela produto ID nome_produto 1 notebook teste tabela produto_preco ID codigo_produto valor moeda 1 1 10 R$ 1 1 5 U$ Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 O que vem na variável $gravar['VALUES']? Compartilhar este post Link para o post Compartilhar em outros sites
drinllyn 0 Denunciar post Postado Abril 10, 2015 O que vem na variável $gravar['VALUES']? essa variável foi mais um teste sem sucesso. Eu queria que o if fosse. IF(produto_codigo == id(da tabela produto)){ Mostra Certo } else{ vamos colocar ou modificar dependendo do caso. } pra ser mais correto oq estou tentando fazer e uma variável que faça uma while no codigo_produto. e se tiver um == a $row->id ele não vai fazer nada. pois o mesmo já se encontra cadastrado. Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 <?php // conecta no banco do mysql $conn = mysql_connect("localhost", "root", ""); $db = mysql_select_db("teste", $conn); // variavel com nome das tabelas $tabela = "preco_produto"; $tabela2 = "produto"; //faço as consultas das tabelas que quero manipular $consulta = mysql_query("SELECT * FROM $tabela"); $consulta2 = mysql_query("SELECT * FROM $tabela2"); while($registro2 = mysql_fetch_object($consulta2)) { while($registro1 = mysql_fetch_object($consulta)) { if ($registro1->codigo_produto == $registro2->id) { // mesmo produto } else { // produto diferente } } } ?> Você terá de fazer um loop para cada select e colocar um dentro do outro. Compartilhar este post Link para o post Compartilhar em outros sites
drinllyn 0 Denunciar post Postado Abril 10, 2015 foi um avanço agradeço. só que ainda persiste alguns erros. ele busca o valor na tabela de preço compara ver que e diferente mas não altera. vou mostrar o resultado abaixo 2003---6---errado-----NOME DO PRODUTO2003---5---errado-----NOME DO PRODUTO ele comparou as duas ID que encontrou em preço a 6 e 5. a ID 2003 e do primeiro produto no banco. ele viu que tava errado mas não continuo o loop ate achar todos os registro e comparar todos os registro. Compartilhar este post Link para o post Compartilhar em outros sites
diegotiko 0 Denunciar post Postado Abril 10, 2015 Estranho. O código acima percorrerá toda a tabela2 (produto), e com cada produto, vai comparar com todos os preços da tabela1. Você pode postar uma amostra do conteúdo das duas tabelas no banco? Compartilhar este post Link para o post Compartilhar em outros sites
drinllyn 0 Denunciar post Postado Abril 10, 2015 consegui uma avanço, 2003---6---errado-----NOME DO PRODUTO2---6---errado-----NOME DO PRODUTO3---6---errado-----NOME DO PRODUTO4---6---errado-----NOME DO PRODUTO5---5---certo-----NOME DO PRODUTO5---6---errado-----NOME DO PRODUTO6---6---certo-----NOME DO PRODUTO7---6---errado-----NOME DO PRODUTO vou postar novamente o código. while($registro2 = mysql_fetch_object($preco)) { while($registro1 = mysql_fetch_object($produto)) { $produtoteste = $registro1->product_id; $precoteste = $registro2->price_product_id; $preco2=mysql_query("SELECT price_product_id FROM $tabela WHERE price_product_id = $registro1->product_id "); while($registro3 = mysql_fetch_object($preco2)){ $precoteste2 = $registro3->price_product_id; if ($produtoteste == $precoteste2) { echo $produtoteste,'---',$precoteste2; echo 'certo','-----', $registro1->product_name; echo '<BR>' ; } else { echo $produtoteste,'---',$precoteste; echo 'errado','-----', $registro1->product_name; echo '<BR>' ; } } if ($produtoteste == $precoteste) { } else{ echo $produtoteste,'---',$precoteste; echo 'errado','-----', $registro1->product_name; echo '<BR>' ; } } } Compartilhar este post Link para o post Compartilhar em outros sites
Diego Arent 19 Denunciar post Postado Abril 10, 2015 Você consegue passar a estrutura das tabelas (nome da tabela e dos campos) que você utiliza neste script? Compartilhar este post Link para o post Compartilhar em outros sites
drinllyn 0 Denunciar post Postado Abril 10, 2015 deu Certo agradeço toda a ajuda. agora e desenvolver os códigos dentro das if <?php // conecta no banco do firebird $servidor = '127.0.0.1:C:banco.gdb'; if (!($dbh=ibase_connect($servidor, 'SYSDBA', 'masterkey'))) die('Erro ao conectar: ' . ibase_errmsg()); // seleciona tudo do banco PRODUTO $sql = 'SELECT * FROM PRODUTO'; $query= ibase_query ($dbh, $sql); // conecta no banco do mysql $conn = mysql_connect("localhost", "root", ""); $db = mysql_select_db("utimo", $conn); // seleciona tudo de um $tabela = "s7b2o_hikashop_price"; $tabela2 = "s7b2o_hikashop_product"; $preco=mysql_query("SELECT * FROM $tabela"); $produto=mysql_query("SELECT * FROM $tabela2"); //faz o laço para cadastro dos produtos // fazer ele buscar oq ja tem no preço caso tenho fazer update do contrario vai colocar. //faz um loop nos preços. while($registro2 = mysql_fetch_object($preco)) { //faz um loop nos produtos while($registro1 = mysql_fetch_object($produto)) { $produtoteste = $registro1->product_id; $precoteste = $registro2->price_product_id; //faz uma nova busca com o ID do produto $preco2=mysql_query("SELECT * FROM $tabela WHERE price_product_id = $registro1->product_id "); //faz um loop com a busca no loop while($registro3 = mysql_fetch_object($preco2)) { $precoteste2 = $registro3->price_product_id; //começa o if if ($produtoteste == $precoteste2) { echo $produtoteste,'---',$precoteste2; echo 'certo','-----', $registro1->product_name; echo '<BR>' ; } //termina o if //começa o else else { echo $produtoteste,'---',$precoteste2; echo 'errado','-----', $registro1->product_name; echo '<BR>' ; } //termina o else } $precoteste3 = $precoteste2; // um segundo if pq o primeiro so mostrou os TRUE if ($produtoteste == $precoteste3) { } // Fim do IF // inicio do segundo else pois o primeiro nao mostra os produtos que são diferentes else { echo $produtoteste,'---',$precoteste3; echo 'errado','-----', $registro1->product_name; echo '<BR>' ; } //fim do else } } ?> a ajuda. vou posta o código final para terem uma ideia. Compartilhar este post Link para o post Compartilhar em outros sites