Display message after MYSQL query return empty

1

I have a script that does a query in the database and displays the result ...

I would like that when the query returned empty, a message would be displayed to the user.

The code:

<?php

//variavel dinamica
$chave = $_POST['chave'];

// Inclui a conexão PDO
include 'conexao_sup.php';

// Cria a consulta para o MySQL e executa
$consulta = $conexao->query("SELECT * FROM 'pecas' WHERE codigo like '%".$chave."%' or descricao like '%".$chave."%' or aplicacao like '%".$chave."%'");


//Mostra os valores-----------------------------------

//exibe mensagem se a variável dinâmica vier vazia
if (empty($chave)){
    echo "<p style='color:#333; font-size:26px;'><b>Não foi digitado nada para a busca!</b></p>";
}

//exibe a consulta
else{

    while ($linha = $consulta->fetch(PDO::FETCH_ASSOC)){ 
    ?>

    //retorno formatado em HTML

    <?php
    }
}
?>

How do I now to implement a condition where: If $ query is empty ... display the message: "nothing found"?

    
asked by anonymous 27.08.2015 / 18:08

3 answers

1

With the answer from @Everson Moura I formulated the following logic:

1-Count the number of query rows 2-If the number of lines is == 0, then: display message

My code is:

$chave = $_POST['chave'];

// Inclui a conexão PDO
include 'conexao_sup.php';

// Cria a consulta para o MySQL e executa
$consulta = $conexao->query("SELECT * FROM 'pecas' WHERE codigo like '%".$chave."%' or descricao like '%".$chave."%' or aplicacao like '%".$chave."%'");

//atribui a variavel $row o total de linhas da consulta
$rows = $consulta->fetchAll();

//conta o tanto de linhas e atribui a variavel $num_rows
$num_rows = count($rows);

//Mostra os valores

if (empty($chave)){
    echo "<p style='color:#333; font-size:26px;'><b>Digite uma palavra para fazer a busca!</b></p>";
}else if($num_rows == 0){
    echo "<p style='color:#333; font-size:26px;'><b>Não existem registros para o termo: <font color='red'>{$chave}</font>!</b></p>";
}else{

//exibe consulta

}

Thank you all.

    
27.08.2015 / 19:38
2

Just create a condition if the collection is empty:

<?php

require_once "conexao_sup.php";

if (isset($_POST['chave'])) {
    buscarDados($_POST['chave']);
} else {
  //exibe mensagem se não tiver nada enviado
   echo "<p style='color:#333; font-size:26px;'>".
        "<b>Digite uma palavra para fazer a busca!</b></p>";
}

function buscarDados($chave = '') {

    //exibe mensagem se não tiver ao menos 3 caracteres
    if (strlen($chave) < 3) {
        echo "<p style='color:#333; font-size:26px;'>".
             "<b>Digite ao menos 3 caracteres para fazer a busca!</b></p>";
        return;
    }

    // Cria a consulta para o MySQL e executa
    $consulta = $conexao->query("SELECT * FROM 'pecas'
                                 WHERE codigo like '%".$chave."%'
                                 OR descricao like '%".$chave."%'
                                 OR aplicacao like '%".$chave."%'");
   $collection =  $consulta->fetchAll();

   if (count($collection) == 0 || !empty($collection)) {
      echo "<p style='color:#333; font-size:26px;'>" . 
           "<b>Não existem registros para o termo: {$chave}!</b></p>";
      return;
   } else {
   //Mostra os valores-----------------------------------
       foreach ($collection as $key => $value) {
           echo $value['codigo']    . '<br>' .
                $value['descricao'] . '<br>' .
                $value['aplicacao'] . '<br>';
       }
   }
}
    
27.08.2015 / 18:33
1

Maybe this link helps you:

How to check if query-results are empty?

Link content.

$query= 'SELECT * FROM table'." WHERE id IS NOT NULL";

$result = mysql_query($query) or die ("Error in query: $query ".mysql_error());

$row = mysql_fetch_array($result);

$num_results = mysql_num_rows($result);

if ($num_results > 0){ 

echo $row['category']; 

}else{ 

echo 'no category' 

}
    
27.08.2015 / 18:34