Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Diego Carlos

Parar depois do UPDATE

Recommended Posts

Boa Noite, 

 

Tenho um código que quero , que faça o seguinte.

Tenho um update que se o valor dentro do banco for < 0 ele pare e não de continuidade, senão ele continua e da um insert no banco

 

segue código a baixo

 

<?php 


if (isset($_POST['Salvar'])) {

              $Umedi = $_POST['ff_medi'];
              $dispensa = $_POST['ff_qtda'];


            if (mysql_query("UPDATE fmedicamentos SET FM_EST=FM_EST - '$dispensa' WHERE FM_MEDI='$Umedi' and ((FM_EST - '$dispensa') >= 0)")) {
              
              $iff_data = $_POST['ff_data'];
              $iff_medi = $_POST['ff_medi'];
              $iff_qtda = $_POST['ff_qtda'];
              $iff_qmes = $_POST['ff_qmes'];
              $iff_poso = $_POST['ff_poso'];
              $iff_resp = $_POST['ff_resp'];
              $iff_func = $_POST['ff_func'];
              $iff_cone = $_POST['ff_cone'];
              $iff_nome = $_POST['ff_nome'];


                            if ($iff_data == "") {
                      $msg = "<span class='aviso'><b>Atenção!</b> Campo Data esta vazio!</span>";

                      }else if ($iff_medi == ""){
                        $msg = "<span class='aviso'><b>Atenção!</b> Campo Medicamento esta vazio!</span>";

                      }else if ($iff_qtda == ""){
                        $msg = "<span class='aviso'><b>Atenção!</b> Campo Quantidade esta vazio!</span>";

                      }else{
                        $inseri = mysql_query("INSERT INTO fficha (FF_DATA, FF_MEDICAMENTO, FF_QTDA, FF_QTDAMES, FF_POSOLOGIA, FF_RESP, FF_FUNC, FF_CONECT, FF_NOME) VALUES ('$iff_data', '$iff_medi', '$iff_qtda', '$iff_qmes', '$iff_poso', '$iff_resp', '$iff_func', '$iff_cone', '$iff_nome')");

                      }


           }else{




              echo "<span class='aviso'><b>Atenção!</b> Quantida Inserida Maior que Estoque Atual!</span>";
           }
          }


    ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguns problemas com o seu código:

  • Funções mysql_* foram descontinuadas no PHP 5.5 e removidas no PHP 7 (utilize PDO ou MySQLi);
  • Um update sempre retornará TRUE, mesmo que não altere nenhum registro, quando o comando for executado e não possuir erros de sintaxe.

 

Ao ponto principal, se existe um evento, conhecido/esperado, que depende de um tratamento especial, considere tratá-lo como uma Exception (exceção)

throw new RuntimeException("Quantida Inserida Maior que Estoque Atual");

E, para capturar a exception e tratá-la, utilize try/catch:

try
{
    
}
catch(\RuntimeException $exception)
{
    echo $exception->getMessage();
}

Exception são estremamente poderosas e são parte natural do fluxo de trabalho do software.

 

Na realidade, todos os locais aonde você imprime uma mensagem de atenção, pode ser usada uma exception.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por vicente386
      Ola. Tenho uma tabela no 3 campos que sao "LIVRO, POS, PAGINA" ao qual a logica e a seguinte: cada livro tem 100 paginas cada pagina tem 30 posiçoes tenho 8,364 registros pra inserir chegando a 100 paginas com 30 posiçoes cada passa para o livro 2 e como fazer o update na tabela inserindo nos campos LIVRO = 1, POS de 0 a 30 e PAGINA 1 para cada 30 registros logos apos pagina 2 ?
      estou tentando fazer assim:
      <?php > ini_set('max_execution_time', 2000); $pdo = new > DO(DB_SERVER.":host=".DB_HOST.";dbname=".DB_BASE,DB_USER,DB_PASSWORD); > $sql = $pdo->prepare("SELECT count(*) FROM tabela2018"); > $sql->execute(); > $livro = 1; > foreach($sql as $obj){ > $variavel = $obj[0]; > ceil((float)$variavel/100); > $qtdlaco = ceil((float)$variavel/100); > for ($id = 1; $id <= 35; $id++) { > for($L=1; $L < $qtdlaco; $L++) { > for ($P = 0; $P <= 30; $P++) { > $sql = $pdo->prepare("UPDATE tabela2018 SET LIVRO = :LIVRO, POS = :POS, PAGINA = :PAGINA WHERE idtabela2018 = $id"); > $sql->bindValue(':LIVRO', $livro); > $sql->bindValue(':POS', $P); > $sql->bindValue(':PAGINA', $L); > $sql->execute(); > } > } > } >} ?> mas na tebela so aparece: LIVRO POS PAGINA 1 30 83 1 30 83 1 30 83 e nao como deveria : LIVRO POS PAGINA 1 0 1 1 1 1 1 2 1
    • Por Luiz Henrique
      Olá,
       
      Preciso fazer uma inserção no DB de registros referente a pagamentos, quando for no crédito será realizado o insert com sua respectiva data de compensação e valor da parcela exemplo:
       3 parcelas de 100.00 e cada registro em seu devido mês:
      INSERT INTO tabela (valor, data) VALUES (100, 2022-08-17),(100, 2022-09-17),(100, 2022-10-17) É mais eficiente fazer da forma acima ou colocar 3 INSERT?
      Ou existe forma melhor de fazer isso?
       
      Obrigado.,
       
    • Por Carlos Antoliv
      Senhores, bom dia.
       
      tenho um campo status. Então, a ideia é mudar o status. Consigo alterar o status quando necessário. Daí, pensei em todas vez que alterar, salvar o id do usuário, data, hora, o último status alterado...
      consigo fazer isso com INSERT, depois do UPDATE.
       
      Nao uso trigger. Até tentei fazer, mas não saiu como eu queria.
       
      Então, para os maiores entendedores do assunto, a melhor prática seria a TRIGGER ou INSERT ? Melhor prática ou o que mais funciona na prática ?
       
      Alguém poderia dissertar sobre isso ?
      Vlw..abço
    • Por unset
      Olá, estou com uma falha de lógica pegando aqui se alguém puder ajudar
       
      Eu tenho um formulário tranquilo, como abaixo
      <label for="cidades" class="form-label">Cidades</label> <select class="form-select mb-3" name="cidades[]" id="cidades" multiple="multiple"> <option value="1">Cidade 1</option> <option value="2">Cidade 2</option> <option value="3">Cidade 3</option> <option value="4">Cidade 4</option> <option value="5">Cidade 5</option> </select>  
      Blz eu recebe os dados do formulário ou seja os ids da cidade certinho em um array 
       
      array(3) { [0]=> string(1) "2" [1]=> string(2) "3" [1]=> string(1) "5" }
      <?php $dados = filter_input_array(INPUT_POST, FILTER_SANITIZE_STRIPPED); var_dump($dados); ?> Agora como inserir todos os ids no banco? utilizando um for? um while? algum exemplo?
       
      Pergunto pq ao tentar inserir no banco somente um registro é inserido e não todos do select
       
    • Por lezão
      Boa tarde, galera!
      Td bem com vcs?
       
      Estou precisando de um UPDATE que qnd eu seleciono o checkbox e clico no botão submit ele chama para a pagina que ira fazer a alteração.
      Tenho um exemplo só que  em asp, vejam abaixo:
      Imagem UPDATE
       
      espero ter explicado certo.
       
      obrigado!
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.