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

Ajuda: Meu update funciona, mas não aparece a alteração feita no form depois de apertar o botão do submit


Flaviaac

Pergunta

Bom dia Galera,

 

Queria pedir a ajuda de vocês para tentar arrumar um problema no meu sistema.

Tentei procurar sobre isso na internet mas não sei bem como procurar isto, e nem sei muito bem como explicar, então para facilitar coloquei uma imagem aqui em anexo exemplificando.

Vamos lá.

 

Em linhas gerais o sistema cadastra, edita e deleta documentos. Na parte de edição de documentos, altero os dados desejados e clico no botão "Editar", ao salvar esta edição os campos desta página não ficam no estado atual (atualizado), eles voltam ao estado anterior, ou seja, permanecem como estavam antes, mas se eu verificar o banco de dados e a lista de documentos consigo ver que foi atualizado corretamente.

 

Então seguindo a imagem anexada:

(img1) página de edição sem alteração > (img2) altero um campo "Interessado" e clico no botão editar, a página dá refresh, e todos os campos voltam a aparecerem como estavam anteriormente antes da alteração feita (img3) > quando verifico a lista de documentos, vejo que a alteração foi realizada com sucesso, inclusive no banco de dados.

 

A ajuda que eu gostaria é?

Como faço para que os campos sejam atualizados em tempo real assim que clicar no botão "Editar" ou que a alteração que fiz não volte para o estado anterior.

 

Agora vamos a parte do código:

 

editar_doc.php

<?php
  //cabeçalho
  include_once "cabeçalho.php";
  //conexão com o banco de dados
  include_once "conexao.php";
  //buscando dados do banco para lotação
  include_once "campos_selects.php";
?>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Editar Documento</title>
  <script type="text/javascript" src="js/descarte.js"></script>  
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>


<div class="list-group-item principal">

    <!-- TÍTULO -->
    <div class="d-flex mx-2 my-2">
      <div class="mr-auto p-2">
          <h2 class="display-4 titulo">Editar Documento</h2>
      </div>
    </div>
     

            <!-- FORMULÁRIO (CADASTRAR DADOS) -->
            <form action="" method="post">

                    <!---------------  P H P  ---------------->
                    <?php
                      //pegando informações do GET na lista de documentos
                      $codigo_doc = filter_input(INPUT_GET, 'numero_doc_get', FILTER_SANITIZE_STRING);
                      $tipo_doc = intval(filter_input(INPUT_GET, 'tipo_doc_get', FILTER_SANITIZE_NUMBER_INT));                      
                      $titulo_doc = filter_input(INPUT_GET, 'titulo_get', FILTER_SANITIZE_STRING);
                      $interessado_doc = filter_input(INPUT_GET, 'interessado_get', FILTER_SANITIZE_STRING);                      
                      $obs_doc = filter_input(INPUT_GET, 'obs_get', FILTER_SANITIZE_STRING);
                      $descarte = intval(filter_input(INPUT_GET, 'periodicidade_get', FILTER_SANITIZE_NUMBER_INT)); 
                    ?>
                    


                    <!------------------ nº de identificação -------------------------------->
                    <div class="form-row">
                      <!-- nº de identificação -->
                      <div class="form-group col-md-6">
                        <label><span class="text-danger"></span> Número de Identificação</label>
                          <input name="codigo" type="text" class="form-control" id="codigo" value="<?php echo $codigo_doc; ?>">
                      </div>                     

                    <!------------------- tipo de doc ---------------------------------------->
                    <div class="form-row">
                      <!--  tipo de documento -->
                      <div class="form-group col-md-3">
                        <label>Tipo de Documento</label>
                          <select name="tipo" id="tipo" class="form-control">
                            
                                        <!---------------  P H P  ---------------->
                                        <?php
                                          //selecionando do banco as opções do dropdown
                                          while($row3 = $result3->fetch_assoc()){
                                            if($tipo_doc==$row3['id_tipo']){
                                              echo "<option selected value=".$row3['id_tipo'].">".$row3['nome_tipo']."</option>";
                                            }else{
                                              echo "<option value=".$row3['id_tipo'].">".$row3['nome_tipo']."</option>";
                                            }
                                          }
                                        ?>
                                        
                          </select>
                      </div>
                      <!-- Adicionando e excluindo tipo de documento -->
                      <div class="form-group col-md-1">
                          <label>&nbsp;</label></br>
                          <span tabindex="0" data-placement="top" data-toggle="tooltip" title="Adicionar e Excluir Tipo de Documento">
                          &nbsp;<a href="manipular_tipo_doc.php"><span style="font-size: 24px;"><i class="icon ion-md-settings"></i></span></a>
                          </span>
                      </div> 
                      
                    <!------------------- interessado ----------------------------------------->                      
                    <div class="form-row">  
                      <div class="form-group col-md-12">
                        <label>Interessado</label>
                        <input name="interessado" type="text" class="form-control" id="interessado" value="<?php echo $interessado_doc; ?>">
                      </div>
                    </div>  

                    <!------------------- titulo ---------------------------------------------->
                      <div class="form-row">
                      <div class="form-group col-md-12">
                        <label>Título</label>
                        <input name="titulo" type="text" class="form-control" id="titulo" value="<?php echo $titulo_doc; ?>">
                      </div>
                    </div>
                   
                    <!------------------- Observações ----------------------------------------->
                    <div class="form-row">
                      <div class="form-group col-md-12">
                        <label>Observações</label>
                        <textarea class="form-control" name="obs" rows="5" id="obs" value="<?php echo $obs_doc; ?>"></textarea>
                      </div>
                    </div>

                    <!------------------ periodicidade ---------------------------------------->
                    <div class="form-row">                              
                              <div class="form-group col-md-12">
                                <span class="form-text">Periodicidade para descarte deste documento:</span>  
                              </div>
                        </div>  
                        <div class="form-row">
                              <!-- Periodicidade -->                                                              
                              <div class="form-group col-md-2">                                  
                                <input name="descarte" type="text" class="form-control" id="descarte" value="<?php echo $descarte; ?>" readonly="readonly">
                              </div>
                              <div class="form-group col-md-4">                                                                  
                                <input type="text" readonly class="form-control-plaintext" value="Anos">
                              </div>                              
                        </div> 
                      

                    <!----------------------- botão cadastrar e limpar ------------------------>
                    &nbsp;
                    <div class="form-row">
                      <div class="form-group col-md-4">
                        <button type="submit" name="editar_doc" class="btn btn-primary">Editar</button> 
                        <button type="reset" name="limpar_doc" class="btn btn-primary">Limpar campos</button>
                      </div>
                    </div>                    
            </form>
            
       

              <!---------------  P H P  ---------------->
              <?php
              //processamento dos dados do formulario
              include_once 'processa_editar_doc.php';
              ?>
              

</div>
</body>
</html>


<!---------------  P H P  ---------------->
<?php
  //rodapé
  include_once "rodape.php";
?>

 

processa_editar_doc.php

<?php

    //pegando os dados via POST 
    $codigo_doc_edit = filter_input(INPUT_POST, 'codigo', FILTER_SANITIZE_STRING);
    $tipo_doc_edit = intval(filter_input(INPUT_POST, 'tipo', FILTER_SANITIZE_NUMBER_INT));  
    $titulo_doc_edit = filter_input(INPUT_POST, 'titulo', FILTER_SANITIZE_STRING);
    $interessado_doc_edit = filter_input(INPUT_POST, 'interessado', FILTER_SANITIZE_STRING);  
    $obs_doc_edit = filter_input(INPUT_POST, 'obs', FILTER_SANITIZE_STRING);
    $periodo_doc_edit = intval(filter_input(INPUT_POST, 'descarte', FILTER_SANITIZE_NUMBER_INT));

    //pegando os dados via GET
    $id_doc_edit =  intval(filter_input(INPUT_GET, 'id_doc_get', FILTER_SANITIZE_NUMBER_INT));
    

    //salvando no banco de dados quando clicar em editar
    if(isset($_POST['editar_doc'])){
       if($codigo_doc_edit !='' || $tipo_doc_edit !='' || $titulo_doc_edit !='' || $interessado_doc_edit !=''){

          $sql = "UPDATE documento SET numero_doc='$codigo_doc_edit', tipo_doc=$tipo_doc_edit, titulo='$titulo_doc_edit', interessado='$interessado_doc_edit', obs='$obs_doc_edit', periodicidade=$periodo_doc_edit WHERE id_doc=$id_doc_edit";
          $result = mysqli_query($conn, $sql);

          if($conn->query($sql) === TRUE){            
              echo "<div class='alert alert-success' role='alert'>";
              echo "Documento editado com sucesso!";
              echo "<button type='button' class='close' data-dismiss='alert' aria-label='Close'>";
              echo "<span aria-hidden='true'>&times;</span>";
              echo "</button>";
              echo "</div>";                          
          }else{            
              echo "<div class='alert alert-danger' role='alert'>";
              echo "Documento não foi editado!";
              echo "<button type='button' class='close' data-dismiss='alert' aria-label='Close'>";
              echo "<span aria-hidden='true'>&times;</span>";
              echo "</button>";
              echo "</div>";
            $erro = mysqli_error($conn);
              echo "Ocorreu o seguinte erro: ", '"', $erro, '"<br>';
          }
      }
    }
  
    //encerrar conexão com o banco
    $conn->close();

 ?>

 

Banco de dados:

-- phpMyAdmin SQL Dump
-- version 5.2.0
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Tempo de geração: 02-Dez-2022 às 15:17
-- Versão do servidor: 10.4.24-MariaDB
-- versão do PHP: 7.4.29

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Banco de dados: `sisarq`
--

-- --------------------------------------------------------

--
-- Estrutura da tabela `documento`
--

CREATE TABLE `documento` (
  `ID_DOC` int(11) NOT NULL,
  `NUMERO_DOC` varchar(20) NOT NULL,
  `TIPO_DOC` int(11) NOT NULL,  
  `TITULO` varchar(400) NOT NULL,
  `INTERESSADO` varchar(255) NOT NULL,  
  `OBS` varchar(400) DEFAULT NULL,
  `PERIODICIDADE` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Extraindo dados da tabela `documento`
--

INSERT INTO `documento` (`ID_DOC`, `NUMERO_DOC`, `TIPO_DOC`, `TITULO`, `INTERESSADO`, `OBS`, `PERIODICIDADE`) VALUES
(13, '299814/2022-10', 26, 'Folha de Ponto', 'Beatriz Bernardes', '', 6),
(14, '152156/2021-12', 4, 'Compra de Material', 'Fernando Carvalho', '', 5),
(15, '056932/2018-20', 8, 'Declaração', 'Kátia de Souza', 'ingresso em 2019.', 5),
(16, '084165/2020-33', 9, 'Ata Extraordinária', 'Unidade', '', 2),
(17, '098632/2019-22', 1, 'Processo', 'Bruna Caxias', '', 5),
(18, '166320/2021-15', 6, 'Ata VCE', 'Edivaldo Rogério da Silva', '', 2),
(19, '299664/2022-38', 8, 'Declaração', 'Caio de Almeida', '', 5),
(18, '289946/2022-08', 1, 'Processo', 'Ana Maria Costa Vitorino', '', 5),
(19, '352214/2022-13', 8, 'Declaração', 'Noeli da Silva Araujo', 'referente a compra do mês 03/22.', 5),
(20, '201533/2022-32', 17, 'Carta de Comparecimento', 'Renato Vasconcelos Farias Araújo', '', '', 3);

--
-- Índices para tabelas despejadas
--

--
-- Índices para tabela `documento`
--
ALTER TABLE `documento`
  ADD PRIMARY KEY (`ID_DOC`),
  ADD KEY `TIPO_DOC` (`TIPO_DOC`);


--
-- AUTO_INCREMENT de tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `documento`
--
ALTER TABLE `documento`
  MODIFY `ID_DOC` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=20;

--
-- Restrições para despejos de tabelas
--

--
-- Limitadores para a tabela `documento`
--
ALTER TABLE `documento`
  ADD CONSTRAINT `documento_ibfk_1` FOREIGN KEY (`TIPO_DOC`) REFERENCES `tipo_arquivo` (`id_tipo`);
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

problema.png

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

@Marcelo_2, desculpe pela demora a responder.

Segue o arquivo campos_selects.php:

<?php

//buscando dados do banco para tipo de documento
$sql3 = "SELECT id_tipo, nome_tipo FROM tipo_arquivo ORDER BY nome_tipo ASC";
$result3 = $conn->query($sql3);

?>

Pretendo adicionar mais campos do tipo select neste formulário depois então por enquanto estou colocando algumas informações neste arquivo.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia, Flaviac, 

Não consegui importar a tabela documento. Eu defini ID_DOC como chave primária, mudei o ID_DOC para não haver repetição de números, mas não consigo executar esse comando

INSERT INTO `documento` (`ID_DOC`, `NUMERO_DOC`, `TIPO_DOC`, `TITULO`, `INTERESSADO`, `OBS`, `PERIODICIDADE`) VALUES
(13, '299814/2022-10', 26, 'Folha de Ponto', 'Beatriz Bernardes', '', 6),
(14, '152156/2021-12', 4, 'Compra de Material', 'Fernando Carvalho', '', 5),
(15, '056932/2018-20', 8, 'Declaração', 'Kátia de Souza', 'ingresso em 2019.', 5),
(16, '084165/2020-33', 9, 'Ata Extraordinária', 'Unidade', '', 2),
(17, '098632/2019-22', 1, 'Processo', 'Bruna Caxias', '', 5),
(18, '166320/2021-15', 6, 'Ata VCE', 'Edivaldo Rogério da Silva', '', 2),
(19, '299664/2022-38', 8, 'Declaração', 'Caio de Almeida', '', 5),
(20, '289946/2022-08', 1, 'Processo', 'Ana Maria Costa Vitorino', '', 5),
(21, '352214/2022-13', 8, 'Declaração', 'Noeli da Silva Araujo', 'referente a compra do mês 03/22.', 5),
(22, '201533/2022-32', 17, 'Carta de Comparecimento', 'Renato Vasconcelos Farias Araújo', '', '', 3);

O MySQL retorna esse erro: 

Error Code: 1136. Column count doesn't match value count at row 10

O chato é que eu não consigo ver aonde está o erro. Se eu for incluir um a um, dá certo, mas não consigo entender porque não consigo executar tudo de uma vez. Ao invés de resolver o seu problema, eu só encontrei um outro.

------

Consegui achar! O último registro tem 8 colunas, mas a tabela tem 7 colunas. Isso me deixou intrigado: como o MySQL cria um script com essa discrepância? Ou foi você que editou na unha o script do banco de dados na hora de publicar aqui no fórum?

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

  • 0

Comecei a estudar os códigos do php campos_selects.php, editar_doc.php, processa_editar_doc.php, mas as imagens falam que o problema está no cadastro do documento. O código dessa rotina não foi passado por aqui. Eu acredito que o problema está justamente nesse arquivo, é ele que controla os outros arquivos, eu acho.

O certo é zipar todo o projeto e mandar tudo de uma vez, mas o fórum não suporta arquivos zipados.

Enfim, tem que ter paciência, mas eu agradeço pela sua mensagem. É muito raro alguém mandar a estrutura do banco de dados com alguns dados para trabalhar, e até alguns códigos em PHP. A maior parte só escreve assim "tenho problema", mas você foi muito além. Você usa o input_filter do PHP, eu já vi isso três vezes aqui no fórum, mas nunca cheguei a estudar. Por isso, fiquei interessado no seu projeto.

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
      651,8k
×
×
  • Criar Novo...