Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Erro de lógica - help


mrf20

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.1k
    • Total Posts
      651.8k
×
×
  • Create New...