Furian 0 Denunciar post Postado Janeiro 18, 2010 Bom dia galera!! Bom, sei que talvez não esteja colocando este tópico no lugar certo, porém eu o coloquei também no tópico referente a e-commerce e não obtive nenhuma resposta, talvez aqui eu possa receber algum esclarecimento quanto ao procedimento que posso utilizar para resolver este problema. Tenho o seguinte código: <?php if ($confirma) { // Recebendo Dados $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = $_POST['NumItens']; for ($i=1; $i<$NumItens; $i++) { $ProdQuantidade = $_POST['ProdQuantidade_$i']; $ProdDescricao = $_POST['ProdDescricao_$i']; $ProdID = $_POST['ProdID_$i']; } // Gravando Dados mysql_query("INSERT into PagSeguroTransacoes SET TransacaoID='$TransacaoID', VendedorEmail='$VendedorEmail', Referencia='$Referencia', TipoFrete='$TipoFrete', ValorFrete='$ValorFrete', Extras='$Extras', Anotacao='$Anotacao', TipoPagamento='$TipoPagamento', StatusTransacao='$StatusTransacao', CliNome='$CliNome', CliEmail='$CliEmail', CliEndereco='$CliEndereco', CliNumero='$CliNumero', CliComplemento='$CliComplemento', CliBairro='$CliBairro', CliCidade='$CliCidade', CliEstado='$CliEstado', CliCEP='$CliCEP', CliTelefone='$CliTelefone', NumItens='$NumItens', Data=now(), Quantidade='$ProdQuantidade', Descricao='$ProdDescricao', ID='$ProdID'"); } ?> Lógicamente este código não está completo, porém tem tudo o que é preciso para resolver meu problema, o que eu quero é passar pegar os valores de: $ProdQuantidade, $ProdDescricao e ProdID que são arrays e salvá-los no banco de dados, gostaria de saber o que eu posso fazer para que venha a funcionar corretamente, pois da forma como está ele não salva estes itens no banco de dados, já utilizei outras formas, mas o máximo que consegui foi salvar apenas o primeiro valor do array no banco... Desde já agradeço a atenção dispensada, grande abraço até... Compartilhar este post Link para o post Compartilhar em outros sites
Avelino.US 1 Denunciar post Postado Janeiro 18, 2010 for ($i=1; $i<$NumItens; $i++) { $ProdQuantidade[$i] = $_POST['ProdQuantidade_$i']; $ProdDescricao[$i] = $_POST['ProdDescricao_$i']; $ProdID[$i] = $_POST['ProdID_$i']; } Agora para pegar este valor basta fazer isso: echo $ProdQuantidade[1]; echo $ProdQuantidade[2]; e assim vai, você esta pegando o indice que você quer de um array; Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 18, 2010 Caro Furian, Seu outro tópico foi excluído. Para uma melhor participação, sugiro que leia o tópico de orientações para uma boa participação.. Sobre o seu problema, adicione este código ao início do seu script e poste aqui o resultado. echo '<pre>'; print_r($_POST); die('</pre>'); Veja que o código acima NÃO vai resolver o problema. Somente vai mostrar como estão vindo os dados para podermos ajudar melhor. Poste também a estrutura das tabelas. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 18, 2010 Vlw Avelino, obrigado pela atenção, mas acontece que estes valores tem que ser pegos de forma automática, não posso definir quais itens devem ser pegos para serem gravados no banco, se eu fizer o que você está dizendo acredito que eu pegarei com $ProdQuantidade[1] o primeiro valor do array, correto? Caso esteja eu salvaria apenas este valor no BD, e eu preciso salvar todos os valores destes arrays no BD de forma dinâmica, veja se estou correto... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 18, 2010 Alguém tem alguma idéia de como posso resolver este problema?? Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 18, 2010 Você leu o meu POST? Porque não postou o que eu pedi aqui? Ajude-nos a te ajudar. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 Você leu o meu POST? Porque não postou o que eu pedi aqui? Ajude-nos a te ajudar. Carlos Eduardo Foi mal Matias, não tinha lido teu post, vou fazer o que tu pediu e postar o resultado aqui... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 Valor retornado após a inserção do código na 2ª tentativa: Array () Na primeira tentativa ele não retornou nada, foi para a página de agradecimento. Estrutura da tabela: `pagsegurotransacoes` ( `TransacaoID` varchar(36) NOT NULL, `VendedorEmail` varchar(200) NOT NULL, `Referencia` varchar(200) DEFAULT NULL, `TipoFrete` char(2) DEFAULT NULL, `ValorFrete` decimal(10,2) DEFAULT NULL, `Extras` decimal(10,2) DEFAULT NULL, `Anotacao` text, `TipoPagamento` varchar(50) NOT NULL, `StatusTransacao` varchar(50) NOT NULL, `CliNome` varchar(200) NOT NULL, `CliEmail` varchar(200) NOT NULL, `CliEndereco` varchar(200) NOT NULL, `CliNumero` varchar(10) DEFAULT NULL, `CliComplemento` varchar(100) DEFAULT NULL, `CliBairro` varchar(100) NOT NULL, `CliCidade` varchar(100) NOT NULL, `CliEstado` char(2) NOT NULL, `CliCEP` varchar(9) NOT NULL, `CliTelefone` varchar(14) DEFAULT NULL, `NumItens` int(11) NOT NULL, `Data` datetime NOT NULL, `Quantidade` int(11), `Descricao` varchar(50), `ID` varchar(50), `status` tinyint(1) unsigned NOT NULL DEFAULT '0', UNIQUE KEY `TransacaoID` (`TransacaoID`,`StatusTransacao`), KEY `Referencia` (`Referencia`), KEY `status` (`status`) ) Vou postar aqui o código... para que os valores de $_POST sejam printados na tela onde eu deveria colocar este código? <? $retorno_site = '**'; // Site para onde o usuário vai ser redirecionado $retorno_token = '**'; // Token gerado pelo PagSeguro$retorno_host = '*****'; // Local da base de dados MySql $retorno_database = '*****'; // Nome da base de dados MySql $retorno_usuario = '*****'; // Usuario com acesso a base de dados MySql $retorno_senha = [email=""]'*****'[/email]; // Senha de acesso a base de dados MySql $lnk = mysql_connect($retorno_host, $retorno_usuario, $retorno_senha) or die ('Nao foi possível conectar ao MySql: ' . mysql_error()); mysql_select_db($retorno_database, $lnk) or die ('Nao foi possível ao banco de dados selecionado no MySql: ' . mysql_error()); // Validando dados no PagSeguro$PagSeguro = 'Comando=validar'; $PagSeguro .= '&Token=' . $retorno_token; $Cabecalho = "Retorno PagSeguro";foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; }if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) { $fsocket = true; }if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); $resp = curl_exec($ch); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; break; } } fclose ($fp); } else { echo "$errstr ($errno)<br />\n"; } } if ($confirma) { echo '<pre>'; print_r($_POST); die('</pre>'); // Recebendo Dados $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = $_POST['NumItens']; $ProdQuantidade = $_POST['ProdQuantidade_1']; $ProdDescricao = $_POST['ProdDescricao_1']; $ProdID = $_POST['ProdID_1']; // Gravando Dados mysql_query("INSERT into PagSeguroTransacoes ('TransacaoID', 'VendedorEmail', 'Referencia', 'TipoFrete', 'ValorFrete', 'Extras , 'Anotacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', 'Data=now()', 'Quantidade', 'Descricao', 'ID') VALUES ('$TransacaoID', '$VendedorEmail', '$Referencia', '$TipoFrete', '$ValorFrete', '$Extras', '$Anotacao', '$TipoPagamento', '$StatusTransacao', '$CliNome', '$CliEmail', '$CliEndereco', '$CliNumero', '$CliComplemento', '$CliBairro', '$CliCidade', '$CliEstado', '$CliCEP', '$CliTelefone', '$NumItens', '$ProdQuantidade', '$ProdDescricao', '$ProdID')");}Header("Location: $retorno_site"); exit(); ?> Obrigado pela atenção... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 19, 2010 Antes do if($confirma). Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 O código ficou assim: <?php $PagSeguro = 'Comando=validar'; $PagSeguro .= '&Token=' . $retorno_token; $Cabecalho = "Retorno PagSeguro"; echo '<pre>'; print_r($_POST); die('</pre>'); foreach ($_POST as $key => $value) { $value = urlencode(stripslashes($value)); $PagSeguro .= "&$key=$value"; } if (function_exists('curl_exec')) { $curl = true; } elseif ( (PHP_VERSION >= 4.3) && ($fp = @fsockopen ('ssl://pagseguro.uol.com.br', 443, $errno, $errstr, 30)) ) { $fsocket = true; } elseif ($fp = @fsockopen('pagseguro.uol.com.br', 80, $errno, $errstr, 30)) { $fsocket = true; } if ($curl == true) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $PagSeguro); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_URL, 'https://pagseguro.uol.com.br/Security/NPI/Default.aspx'); $resp = curl_exec($ch); curl_close($ch); $confirma = (strcmp ($resp, "VERIFICADO") == 0); } elseif ($fsocket == true) { $Cabecalho = "POST /Security/NPI/Default.aspx HTTP/1.0\r\n"; $Cabecalho .= "Content-Type: application/x-www-form-urlencoded\r\n"; $Cabecalho .= "Content-Length: " . strlen($PagSeguro) . "\r\n\r\n"; if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; break; } } fclose ($fp); } else { echo "$errstr ($errno)<br />\n"; } } if ($confirma) { // Recebendo Dados $TransacaoID = $_POST['TransacaoID']; $VendedorEmail = $_POST['VendedorEmail']; $Referencia = $_POST['Referencia']; $TipoFrete = $_POST['TipoFrete']; $ValorFrete = $_POST['ValorFrete']; $Extras = $_POST['Extras']; $Anotacao = $_POST['Anotacao']; $TipoPagamento = $_POST['TipoPagamento']; $StatusTransacao = $_POST['StatusTransacao']; $CliNome = $_POST['CliNome']; $CliEmail = $_POST['CliEmail']; $CliEndereco = $_POST['CliEndereco']; $CliNumero = $_POST['CliNumero']; $CliComplemento = $_POST['CliComplemento']; $CliBairro = $_POST['CliBairro']; $CliCidade = $_POST['CliCidade']; $CliEstado = $_POST['CliEstado']; $CliCEP = $_POST['CliCEP']; $CliTelefone = $_POST['CliTelefone']; $NumItens = $_POST['NumItens']; $ProdQuantidade = $_POST['ProdQuantidade_1']; $ProdDescricao = $_POST['ProdDescricao_1']; $ProdID = $_POST['ProdID_1']; // Gravando Dados mysql_query("INSERT into PagSeguroTransacoes ('TransacaoID', 'VendedorEmail', 'Referencia', 'TipoFrete', 'ValorFrete', 'Extras , 'Anotacao', 'TipoPagamento', 'StatusTransacao', 'CliNome', 'CliEmail', 'CliEndereco', 'CliNumero', 'CliComplemento', 'CliBairro', 'CliCidade', 'CliEstado', 'CliCEP', 'CliTelefone', 'NumItens', 'Data=now()', 'Quantidade', 'Descricao', 'ID') VALUES ('$TransacaoID', '$VendedorEmail', '$Referencia', '$TipoFrete', '$ValorFrete', '$Extras', '$Anotacao', '$TipoPagamento', '$StatusTransacao', '$CliNome', '$CliEmail', '$CliEndereco', '$CliNumero', '$CliComplemento', '$CliBairro', '$CliCidade', '$CliEstado', '$CliCEP', '$CliTelefone', '$NumItens', '$ProdQuantidade', '$ProdDescricao', '$ProdID')"); } Header("Location: $retorno_site"); exit(); ?> O valor retornado foi: Array() E agora... o que fazer? Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 19, 2010 Você colocou no lugar errado... Assim. echo '<pre>'; print_r($_POST); die('</pre>'); if ($confirma) { Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 Você colocou no lugar errado... Assim. echo '<pre>'; print_r($_POST); die('</pre>'); if ($confirma) { Carlos Eduardo Só tu mesmo pra aturar o orelhudo aqui heim... Coloquei no local indicado, porém retornou a mesma coisa: Array() Será que o problema está no pagseguro? Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 19, 2010 Nesta parte do código, você está fazendo o IF: if (strcmp ($res, "VERIFICADO") == 0). Mas será que ele está entrando aí ? Porquê só se ele entrar nesse IF que ele declara a variável $confirma como TRUE. Verifique se ele está entrando no IF. Dentro do If, coloque algo assim: echo "Entrou no If";. if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { $confirma=true; ##################################### coloque aqui dentro o que eu falei. break; } } fclose ($fp); } Se nao entrar, o problema está aí. =) Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 Bom Dee... esta parte do código ficou assim: if ($fp || $errno>0) { fputs ($fp, $Cabecalho . $PagSeguro); $confirma = false; $resp = ''; while (!feof($fp)) { $res = @fgets ($fp, 1024); $resp .= $res; if (strcmp ($res, "VERIFICADO") == 0) { //$confirma=true; echo "entrou no IF"; break; } } fclose ($fp); } Também tentei sem comentar o $confirma=true; e está indo direto para a mensagem de compra efetuada... onde pode estar o erro aí? Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Dee 0 Denunciar post Postado Janeiro 19, 2010 Mas ele mostrou a mensagem "Entrou no If" ? Em vez de echo, coloca die("Entrou no if"); Compartilhar este post Link para o post Compartilhar em outros sites
Matias Rezende 50 Denunciar post Postado Janeiro 19, 2010 Adicione este código, abaixo desta linha. $resp = curl_exec($ch); echo '<pre>'; print_r($resp); exit; Poste aqui o que aparecer. Carlos Eduardo Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 19, 2010 Bom galera... dei uma lida no tópico de E-commerce e vi que o retorno do pagseguro não imprime dados na tela, então não vai adiantar tentar printar nada na tela quando o retorno for acessado, resolvi mudar de tática já que tá complicado de fazer funcionar, então gostaria de uma ajuda de vocês em relação a isso. Preciso pegar o valor $TransacaoID, que é um valor único e salvar no banco de dados tantas vezes quanto for necessário, essa variável faz referência ao id da transação que foi efetuada e é única para cada transação, porém um transação pode possuir diversos produtos então quero fazer mais ou menos isso: Vou postar aqui abaixo o código: $ref = mysql_query("SELECT COD_PRODUTO,QUANT,OPCAO FROM CARRINHO WHERE SESSAO='$Referencia'"); while ($ref_res = mysql_fetch_array($ref)) { $prod = $ref_res['COD_PRODUTO']; $op = $ref_res['OPCAO']; $qua = $ref_res['QUANT']; mysql_query("INSERT INTO VENDAS VALUES (0,'$TransacaoID','$prod','$op','$data','$qua')"); } Com esse código quero pegar os produtos adicionados ao carrinho e incluir na tabela VENDAS juntamente com o código da transação referente a compra de cada produto... Caso eu não esteja sendo claro me avisem... Obrigado a todos pela atenção... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 21, 2010 Podem dar este post como encerrado, vou postar minha nova dúvida em outro post... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites