Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Erro de lógica - help


mrf20

Pergunta

Alguém consegue perceber porque esse if/else não funciona? Vou colocar parte do código aqui e explicar o que acontece pra ficar mais claro.

//busca os dados na tab_estoque do bd
      $sql3="SELECT nomeprojeto,numrecurso,dia,recebimento FROM tab_estoque WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." AND dia=".$data_r." ";

      $res6=mysql_query($sql3, $db) or die(mysql_error());

      if($res6) { //  se já existe registro para aquele material e dia...

            $sqla=mysql_fetch_array($res6);
            $recebimento = $sqla['recebimento'];
            $recebido = $recebimento+$q_receber;  // adiciona a quantidade comprada ao que já existe

           // atualiza o registro já existente
            $sqlb=mysql_query("UPDATE tab_estoque SET recebimento=".$recebido." WHERE nomeprojeto='".$nome."' AND numrecurso=".$material." AND dia=".$data_r." AND recebimento=".$recebimento." ");// or die(mysql_error());
            if($sqlb){
            $aviso1 = "Este recurso já tem dado de recebimento gravado nesta data e não FOI GRAVADO, SÓ ATUALIZADO";
            echo $aviso1; 
            }
      }else{
          // caso não exista, grava novo registro
            $sqlc="INSERT INTO tab_estoque(nomeprojeto,numrecurso,dia,consumo,recebimento) VALUES('$nome','$material','$data_r',0,'$q_receber')";
            $res2=mysql_query($sqlc, $db) or die (mysql_errno());
            $aviso2 = "O campo ".$recebido." foi inserido com sucesso";
            echo $aviso2;
       }

Bom a idéia é a seguinte: faz-se o select para verificar se já existe um registro como ditado pela cláusula WHERE. Caso haja entra no if e atualiza o registro, se não (else), grava outro registro.

O problema é que não entra no else e eu estou quebrando a cabeça pra descobrir porque.

Alguém entendeu e pode me ajudar? Caso possam, por favor, help me....

thanks

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Acontece que você está testando errado!

if($res6) { <- Aqui você está verificando se a query retornou TRUE, só que ela retorna true independente de ter ou não resultados, ela só vai retornar FALSE se por acaso houver um erro na query (sintaxe). Você deve utilizar o mysql_num_rows para ver quantos registros retornaram, no caso:

if(mysql_num_rows($res6) != 0) {

Link para o comentário
Compartilhar em outros sites

  • 0

Cara

Muito bom, maravilhoso, e olha que eu já tinha tentado quase tudo, só não tinha pensado nisso.

Agradeço-lhe imensamente..

Acontece que você está testando errado!

if($res6) { <- Aqui você está verificando se a query retornou TRUE, só que ela retorna true independente de ter ou não resultados, ela só vai retornar FALSE se por acaso houver um erro na query (sintaxe). Você deve utilizar o mysql_num_rows para ver quantos registros retornaram, no caso:

if(mysql_num_rows($res6) != 0) {

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...