Furian 0 Denunciar post Postado Janeiro 12, 2010 Boa tarde galera!! Observem o seguinte código: <?php $ca = mysql_query("SELECT CARRINHO.COD_PRODUTO,CARRINHO.QUANT,CARRINHO.OPCAO,OPCOES.PRODUTOS_COD_PRODUTO,OPCOES.OPCAO,OPCOES.QUANTIDADE FROM CARRINHO,OPCOES WHERE SESSAO='$sessao' AND CARRINHO.COD_PRODUTO=OPCOES.PRODUTOS_COD_PRODUTO"); while ($res = mysql_fetch_array($ca)) { $car = $res['QUANT']; $opc = $res['QUANTIDADE']; if ($car > $opc) { print "<div align='center'><font color='#ff0000'><b>AVISO</b> Não existe quantidade disponível em estoque para o produto solicitado!</div>"; break; } else { include_once("finaliza.php"); } } ?> Ele faz uma consulta no banco de dados e me retorna valores do mesmo, o que eu quero é que quando a condição não seja aceita a página "finaliza.php" seja incluída, porém ela está sendo incluída se este select possui mais de um resultado, a mensagem é exibida e abaixo é incluída a página "finaliza.php", no caso de ser retornado apenas um valor neste select ele exibe a mensagem e não inclui a página, gostaria que independente da quantidade de resultados do select, se a condição fosse aceita não incluísse a página. Alguém poderia me ajudar a resolver esse problema. Desde já agradeço pela atenção dedicada, grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Cruz 1 Denunciar post Postado Janeiro 12, 2010 gostaria que independente da quantidade de resultados do select, se a condição fosse aceita não incluísse a página. Como assim? Você quer que inclua ou não a página? E em que condição? Um mysql_num_rows($ca) resolveria? http://www.php.net/manual/pt_BR/function.mysql-num-rows.php Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 12, 2010 Amigo o erro esta na lógica utilizada. Você colocou o if dentro de um while. De uma olha em como funciona o loop while na documentação do PHP (Link Abaixo) www.php.net/while Se o seu SELECT trouxer 3 registros e a condição if só for atendida após o 3 loop a sua pagina será incluida 2x pois a condição não foi antendida nos outros 2 registros expostos pelo laço. Você pode apagar este if e criar um array com 2 valores por exemplo: 0 e 1. Se a condição for atendida ele adiciona 1 ao array, se não ele adiciona o 0; Depois, fora do loop While, você verifica se dentro do array existe o valor 1. Se existir você não faz o include, caso contrário você faz o include. É simples de se fazer, basta ajustar a lógica Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 12, 2010 Do lance do while eu já sabia, e sabia também que minha lógica estava errada, por isso postei logo o código de cara pra ver se alguém me ajudava nisso... no caso o if não é pra ser apagado né? É só colocar a condição e dentro dela o array, né isso? Valeu pela ajuda brother... Grande abraço, até... Um mysql_num_rows($ca) resolveria? Vlw meu camarada, mas acho que o mysql_num_rows não adiantaria não, o que eu preciso é comparar os valores dos arrays que vem como resultado da consulta... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 12, 2010 Isso ai amigo, ao invés de você apagar o if usa ele para incrementar o array e fora do loop você faz o if como te expliquei. Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/natal_biggrin.gif Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 12, 2010 Bom... não sei se agora estou fazendo alguma besteira... estou tentando fazer o que o Periscuelo disse, mas não estou conseguindo resultados positivos, ou a mensagem é exibida constantemente e o valor retornado é sempre 1 para o array ou então a inclusão da página não é efetuada... simplesmente não exibe nada... Vou postar aqui como ficou o código, quem puder ajudar eu agradeço desde já... <?php $ca = mysql_query("SELECT CARRINHO.COD_PRODUTO,CARRINHO.QUANT,CARRINHO.OPCAO,OPCOES.PRODUTOS_COD_PRODUTO,OPCOES.OPCAO,OPCOES.QUANTIDADE FROM CARRINHO,OPCOES WHERE SESSAO='$sessao' AND CARRINHO.COD_PRODUTO=OPCOES.PRODUTOS_COD_PRODUTO"); $top = array(); while ($res = mysql_fetch_array($ca)) { $car = $res['QUANT']; $opc = $res['QUANTIDADE']; if ($car > $opc) { $top[] = 0; } else { $top[] = 1; } } if ($top < 1) { print " <div align='center'><font color='#ff0000'><b>AVISO</b> Não existe quantidade disponível em estoque para o produto solicitado!</div>"; print_r($top); } else { include_once("finaliza.php"); } ?> Grande abraço a todos, até... Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 12, 2010 Para $top < 1 estar correto teria de ser count($top)<1 e ai você estaria perguntando se o array topo esta vazio ou seja possui 0 elementos. Mas vamos ao código correto: <?php $ca = mysql_query("SELECT CARRINHO.COD_PRODUTO,CARRINHO.QUANT,CARRINHO.OPCAO,OPCOES.PRODUTOS_COD_PRODUTO,OPCOES.OPCAO,OPCOES.QUANTIDADE FROM CARRINHO,OPCOES WHERE SESSAO='$sessao' AND CARRINHO.COD_PRODUTO=OPCOES.PRODUTOS_COD_PRODUTO"); $top = array(); while ($res = mysql_fetch_array($ca)) { $car = $res['QUANT']; $opc = $res['QUANTIDADE']; /* código correto */ if ($car > $opc) { $top[] = 1; } else { $top[] = 0; } } /* código correto 2 */ if (in_array(1,$top)) { print " <div align='center'><font color='#ff0000'><b>AVISO</b> Não existe quantidade disponível em estoque para o produto solicitado!</div>"; print_r($top); } else { include_once("finaliza.php"); } ?> Com o código acima, como te falei, caso a condição seja atendida você incrementa 1 ao array e não o 0. Depois você verifica se existe o valor 1 dentro do array. Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 12, 2010 Bom Periscuelo... primeiramente agradeço por toda a atenção dedicada, mas ainda assim está ocorrendo o mesmo que antes, no caso do primeiro item ser modificado e exceder a quantidade presente no estoque é exibida a mensagem, mas com mais de um item ele não está exibindo a mensagem de erro, e agora a página "finaliza.php" não está sendo incluída em nenhuma hipótese... Vou postar aqui como está o código: <?php $ca = mysql_query("SELECT CARRINHO.COD_PRODUTO,CARRINHO.QUANT,CARRINHO.OPCAO,OPCOES.PRODUTOS_COD_PRODUTO,OPCOES.OPCAO,OPCOES.QUANTIDADE FROM CARRINHO,OPCOES WHERE SESSAO='$sessao' AND CARRINHO.COD_PRODUTO=OPCOES.PRODUTOS_COD_PRODUTO"); $top = array(); while ($res = mysql_fetch_array($ca)) { $car = $res['QUANT']; $opc = $res['QUANTIDADE']; unset($top); if ($car > $opc) { $top[] = 1; } else { $top[] = 0; } } if (in_array(1,$top)) { print "<br><br><div align='center'><font color='#ff0000'><b>AVISO</b><br>Não existe quantidade disponível em estoque para o produto solicitado!</font></div>"; print_r($top); } else { print_r($top); include_once("finaliza.php"); } ?> Grande abraço até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 13, 2010 Bom dia galera!! E aí... alguem tem alguma dica aí do que fazer para funcionar?? Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 13, 2010 Bom resolvi em parte o problema do código... retirei o unset($top); do código e agora ele está adicionando 0 ou 1 no array de forma correta e exibindo a mensagem quando tem que exibir... porém ainda estou com um problema, a página "finaliza.php" ainda não está sendo inclusa quando o valor do array é diferente de 1, ou seja 0... alguém saberia dizer o que pode estar acontecendo? Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 13, 2010 O array tem de estar apenas com o valor 0. não pode existir nenhum valor 1 no mesmo. Já verificou se ele esta passando pelo else? Se estiver entrando na condição do include faça testes no mesmo. Adicione no começo do script as linhas ini_set("display_errors",1); error_reporting(E_ALL); E veja quais erros ele exibe. Tente debugar para ver oq ocorre. De um die("passei aqui"); no começo do finaliza.php pra ver se aparece e por ai vai. Espero ter ajudado http://forum.imasters.com.br/public/style_emoticons/default/natal_smile.gif Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 13, 2010 Vlw Periscuelo... vou tentar... estou achando que o erro está mesmo na página finaliza.php, apesar de eu não ter editado ela e ela aparecer antes, alguma coisa deve estar errado nela, utilizei o print_r para verificar o número recebido pelo array, e ao que tudo indica está tudo certo quanto a isso, meu único problema agora é que a finaliza.php não está aparecendo quando entra no else... Grande abraço, vlw pela força, até... Compartilhar este post Link para o post Compartilhar em outros sites
Furian 0 Denunciar post Postado Janeiro 13, 2010 Vlw Periscuelo... problema resolvido... tava faltando o $ em um array no finaliza.php... rsrsrs Brigadão pela força brother... Grande abraço, até... Compartilhar este post Link para o post Compartilhar em outros sites
Periscuelo 20 Denunciar post Postado Janeiro 13, 2010 Opa nada que um debug não resolva Abraços e boa sorte http://forum.imasters.com.br/public/style_emoticons/default/natal_happy.gif Compartilhar este post Link para o post Compartilhar em outros sites