Display only one message at the end of an operation within a WHILE

Asked

Viewed 80 times

1

I have a situation. I do a search in a table and from the returned data, insert in a new table and update the current one. Ex:

$busca = $link->prepare("SELECT valor FROM tabela1 WHERE funcionario = ? and confere = 0");

$busca->bind_param("i", $funcionario);

$busca->execute();

$busca->bind_param($valor);

$busca->store_result();

if($busca->num_rows() == 0){
  echo "Nenhuma linha na primeira tabela";
} else {

  while($busca->fetch()){

    $novo_registro = $link->prepare("INSERT INTO tabela2 (caixa) VALUES (?)");
    $novo_registro->bind_param("i", $valor);

    $novo_registro->execute();

    if($novo_registro == true){

      $update_tabela1 = $link->prepare("UPDATE tabela1 SET confere = 0 WHERE funcionario = ?");

      $update_tabela1->bind_param("i",$funcionario); 

      $update_tabela1->execute();

      if($update_tabela1 == true){

      echo "Ok<br>Debitado com Sucesso.";

      }else{

      echo "erro ao tentar atualizar a tabela 1";

     } // Esta chave fecha if($update_tabela1 == true){

    } else{

      echo "Oocrreu um erro ao executar a inserção.";

    } // Esta chave fecha if($novo_registro == true){


  } // Esta chave fecha o while($busca->fetch()){


} // Esta chave fecha if($busca->num_rows() == 0){

It’s working ok, however I’m having difficulties with the return of the message

Okay. Successfully Debited.

When I have more than one record on tabela1, the success message appears more than once because of the while($busca->fetch()){.

while_duas_vezes

How can I proceed in this situation. I just wanted a final return of success or failure, like this:

rsultado_esperado

3 answers

2


Web, what you can do is use a variable as a helper, follow this example:

// variavél auxiliar
   $auxiliar = "";

// seu While
   while( $busca->fetch() )
   {
       if ( $auxiliar != $update_tabela1 )
       {
         // printa os dados
       }

     // aqui você atribiu o valor de $update_tabela1 para $auxiliar
       $auxiliar = $update_tabela1;
   }

See if this works and if it helps you. :)

2

//código ocultado

$mensagem = ""; // declara essa variavel antes do while

//código ocultado

while($busca->fetch()){

//código ocultado

    if($update_tabela1 == true){
        $mensagem = "Ok<br>Debitado com Sucesso."; //atribui uma mensagem a ela
    }

//código ocultado


if(!empty($mensagem)){  //no fim do código você exibe a mensagem
    echo $mensagem;
}

0

searching I could find a solution. Tell me if it is viable:

while($busca->fetch()){

  if (!$i++){
 if($update == true){
   
   echo "Ok<br>Debitado com sucesso";
 
 }else{
  
   echo "Erro<br>Falha ao debitar";
 
  } // Esta chave fecha o if($update == true){
  
   }// Esta chave fecha if (!$i++){
 
} // Esta chave fecha o while aberto acima

It worked perfectly, but it’s a viable way?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.