uma cláusula if não está dando certo - PHP - Fórum iMasters
By betomunhoz, January 19, 2018 in PHP
betomunhoz 0
bom estou fazendo um codigo simples de um app de consulta de preço tipo de mercado, porém não estou conseguindo fazer o if para quando não encontrar o código de barras no banco de dados apresentar a mensagem de código não encontrado, ele está apresentando a mensagem em qualquer codigo que passo... abaixo esta o código:
<div align="center" style="color:#0000FF">
$senha = "senha1";
$result_produtos = "select * from cadpro inner join arqbar where cadpro.codpro01=arqbar.codpro and arqbar.codbarra='$pesquisar'";
$resultado_produtos = mysqli_query($conn, $result_produtos);
if($result_produtos = 0) {
while($rows_produtos = mysqli_fetch_array($resultado_produtos)){
echo '<font size="20" style="color:#000000"'.">";
echo "".$rows_produtos['descpro01']."<br>";
echo '<font size="20" style="color:#FF0000"'.">";
echo 'R$  ' . number_format($rows_produtos['prevend01'], 2, ',', '.');
echo "PRODUTO NÃO LOCALIZADO!";
window.setTimeout("history.back(-2)", 3000);
Edited January 19, 2018 by Matheus Tavares
Olá @betomunhoz, seja bem-vindo.
Essa linha está completamente incorreta.
1 - Você está atribuindo 0 à variável, e não fazendo uma verificação/validação/comparação. Você deveria estar utilizando "==" ou "===".
2 - $result_produtos contém apenas a consulta em String (texto puro). Você precisa trabalhar em cima do mysqli_query, que está em $resultado_produtos.
Para verificar se não foram encontrados registros, você deveria fazer assim:
// "> 0" é opcional, mas fica mais fácil de entender...
if ( mysqli_num_rows( $resultado_produtos ) > 0 ) {
Veja o exemplo do manual: http://php.net/manual/pt_BR/mysqli.query.php
leomarriel 7
A um Deus sobre todas as nações.
Localização:Vitoria - ES. Brasil
Interesses:Ajudar o próximo, e ser ajudado, em dúvidas referentes a qualquer área ligada a informática, e web.
if($resultado_produtos) { .... echo "produto encontrado"; } else { .... echo "nenhum produto encontrado"; }
Se não tiver nenhum retorno, o próprio IF identificará que a string está vazia, pois não retornou nenhum resultado, ou pelo contrário é verdadeira.
48 minutos atrás, leomarriel disse:
O retorno do mysqli_query é:
Isso significa que verificar somente se ela possui um valor pseudo-verdadeiro apenas iria dizer se a consulta está correta.
Resumindo, se a consulta fosse absurda como:
SELECT * FROM `tabela` WHERE `id` = 1 AND `id` != 1
Ainda assim o if iria permitir o prosseguimento da execução.
O ideal mesmo seria verificar ambos: se mysqli_query não é FALSE e a quantidade de registros de num_rows é maior que zero.
Mas se confiarmos que a consulta está correta, num_rows é suficiente...
17 minutos atrás, Matheus Tavares disse:
Utilizo da forma que apresentei e me atende perfeitamente, utilizo codeigniter portanto ele informaria se a consulta apresentasse algum erro. Vai do contexto da aplicação e da necessidade. Na realidade que ele apresentou, funcionaria, mas poderia ocorrer um erro na consulta e não retornaria valor algum, então ele não identificaria se foi um erro na consulta ou se o produto realmente não existe.
Seguindo uma aplicação para extrair mais condições, antecipando algum problema futuro, o correto seria:
if ($resultado_produtos)
if(mysqli_num_rows( $resultado_produtos ) > 0) { echo "Produto encontrado"; }
else { echo "Produto não encontrado"; }
{ echo "Erro na consulta."; }
Dessa forma se houver algum erro, teria como identificar em que etapa o mesmo ocorreu e retornar uma mensagem mais exata.