Problem in displaying the result in php when there is only one record in the DB

0

The code below returns some value, when there are several records with the same name or similar, when there is only one record in bd does not return the value of that record.

<?php
include_once '../../Modulos/Database/Banco.php';

$pesquisa=$_POST['pesquisa'];
echo ($pesquisa);
$sql = "select * from fornecedor where razaoSocial like '%$pesquisa%' or nomeFantasia like '%$pesquisa%';";
$salva = mysqli_query($conexao, $sql);

if ($resultado = mysqli_fetch_array($salva)) {
   while ($resultado = mysqli_fetch_array($salva)) {

       $id = $resultado[0];
       $razaoSocial = $resultado[1];
       $cnpj = $resultado[2];
       $nomeFantasia = $resultado[3];
       $tel = $resultado[4];
       $contato = $resultado[5];
       $email = $resultado[6];
       //$dataCadastro = $resultado[6]
       // testando a função edita.php
       //começará com 0 e vai evoluindo, isso também pode registrar quantas resultados tem a tabela
       $parimpar++;
       //A tabela do sbadmin precisa marcar com par ou ímpar cada linha
       if ($id % 2 == 0) {
           $parimpar = "odd";
       } else {
           $parimpar = "even";
       }

       //echo"<tr><th>$id</th><th>$nome</th><th>$codBarra</th><th>$descricao</th><th>$vCusto</th><th>$vVenda</th></tr>";

       echo'

       <tr class="' . $parimpar . ' gradeX">
       <td><a href="cadastrarPedido.php?id=' . $id . '">' . $id . '</a></td>
       <td>' . $razaoSocial . '</td>
       <td>' . $cnpj . '</td>
       <td>' . $nomeFantasia . '</td>
       <td class="center">' . $tel . '</td>
       <td class="center">' . $contato . '</td>
       <td>' . $email . '</td>
       </tr>';


       }
   } else {
       echo ("Problema ao realizar a consulta n banco de dados" . mysqli_error($conexao));
   }

   mysqli_close($conexao);
?>
    
asked by anonymous 23.01.2018 / 23:40

1 answer

1

In your if you are reading the first row of the resulting table and then when you enter the while it reads the second row without using the first one:

if ($resultado = mysqli_fetch_array($salva)) { //lê a primeira
   while ($resultado = mysqli_fetch_array($salva)) { //aqui lê a segunda

You end up losing the first record.

You can fix it by swapping your if to test how many records you have available:

if (mysqli_num_rows($salva) > 0){
   while ($resultado = mysqli_fetch_array($salva)) { 
    
24.01.2018 / 00:40