Ir para conteúdo

POWERED BY:

Arquivado

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

freitaz

Esta inserindo invés de alterar o formulário php alguém poderia me ajudar?

Recommended Posts

Essa parte é da tela de Cadastro 


                                            <?php
                                            $executivo = new Executivo();

                                            if ($_SERVER["REQUEST_METHOD"] == "GET") {
                                                //Using GET
                                                $titulo = $_GET['titulo'];
                                                $categoria = $_GET['categoria'];
                                                $file = $_GET['arquivo'];
                                                $action = $_GET['action'];
                                            }

                                            if (isset($_POST["exepublicar"])) {
                                                $titulo = $_POST['titulo'];
                                                $categoria = $_POST['categoria'];
                                                $action = $_POST['action'];
                                                $file = $_POST['filetext'];
                                                #Informações do Arquivo
                                                // Check if the form was submitted
                                                if ($_SERVER["REQUEST_METHOD"] == "POST") {
                                                    // Check if file was uploaded without errors
                                                    $filename = $_FILES["file"]["name"];
                                                    $filetype = $_FILES["file"]["type"];
                                                    $filesize = $_FILES["file"]["size"];

                                                    // Verify file extension
                                                    $ext = pathinfo($filename, PATHINFO_EXTENSION);


                                                    // Verify file size - 5MB maximum
                                                    $maxsize = 5 * 1024 * 1024;
                                                    if ($filesize > $maxsize)
                                                        die("ERRO: Tamanho máximo de arquivo igual a 5MB.");


                                                    // Check whether file exists before uploading it
                                                    if (file_exists("uploads/executivo/" . $_FILES["file"]["name"])) {
                                                        echo $_FILES["file"]["name"] . " já existe na pasta.";
                                                    } else {
                                                        move_uploaded_file($_FILES["file"]["tmp_name"], "uploads/executivo/" . $_FILES["file"]["name"]);
                                                    }
                                                }

                                                #fim do Arquivo

                                                print_r($fmsg);
                                                $executivo->setTitulo($titulo);
                                                $executivo->setCategoria($categoria);
                                                $executivo->setArquivo($filename);
                                                try {
                                                    if ($action == "alterar") {
                                                        if ($filename == "") {
                                                            $executivo->setArquivo($file);
                                                        } else {

                                                            if (file_exists("uploads/executivo/" . $file)) {
                                                                $path = 'uploads/executivo/' . $file;
                                                                unlink($path);
                                                            }
                                                        }
                                                        $executivo->update($executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo());
                                                        $texto = "Atualizado com sucesso";
                                                    } else {
                                                        $executivo->insert($executivo->getTitulo(), $executivo->getCategoria(), $executivo->getArquivo());
                                                        $texto = "Inserido com sucesso";
                                                    }

                                                    print_r($texto);
                                                } catch (PDOException $e) {
                                                    echo 'ERRO: ' . $e->getMessage();
                                                }
                                            }
                                            ?>

a parte da classe 

 

 public function update($titulo, $categoria, $arquivo) {
        try {
            $sql = "UPDATE $this->table SET titulo = :titulo, categoria = :categoria, arquivo= :arquivo WHERE id = :id";
            $stmt = DB::prepare($sql);
            $stmt->execute(array('id' => $id, 'titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo));
        } catch (PDOException $e) {
            echo 'ERROR: ' . $e->getMessage();
        }
    }

Quando efetuo a alteração ele insere e não atualiza, 

desde já agradeço a ajuda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não apresenta erro?!

Estranho... deveria mostrar erro nessa linha:

11 horas atrás, freitaz disse:

$stmt->execute(array('id' => $id, 'titulo' => $titulo, 'categoria' => $categoria, 'arquivo' => $arquivo));

 

Em seu método você passa por parâmetro $titulo, $categoria, $arquivo

E adiciona esses valores ao statements, o que até aí tudo bem, mas...

id = :id

'id' => $id

 

Em nenhum momento a variável $id é criada "que deveria está dentro do escopo no método", enfim, acredito que a coluna id seja INT e AUTO_INCREMENT por isso não dar erro, quando a PDO envia o valor envia NULL e o sql trata de corrigir o erro por naturalidade devido as propriedades da coluna.

Daí acredito eu que na verdade o sql pega o último registro insere +1 e registra os novos dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu exclui o id que estava errado mesmo...

 

Olha o erro que da 

 

 

 

11 horas atrás, Omar~ disse:

Daí acredito eu que na verdade o sql pega o último registro insere +1 e registra os novos dados.

 

Desculpe sou um pouco leigo em algumas coisas, o senhor poderia me explica como arrumaria esse registro do sql.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu para ver em detalhes os erros, só deu para perceber que o php dar erro ao tentar processar índices de array que não foram definidas, no casso arrays super-globais GET ou POST (não deu para ver qual é).

Isso acontece porque o arquivo que processa não recebeu esses dados e logo está tentando usar eles.

Então no que posso ajudar no momento é lhe dando dicas.

 

  • Tudo deve ser tratado antes de salvamento, o que inclui a verificação de sua existência

Exemplo:

Spoiler

<?php
if (count($_POST)) {
  // Dados de POST existem
  if (!isset($_POST['alguma_coisa'])) {
    // post alguma coisa não existe
  } else if (empty($_POST['alguma_coisa'])) {
    // post alguma coisa está vazio
  } else if ((strlen($_POST['alguma_coisa']) < 5) || (strlen($_POST['alguma_coisa']) > 10)) {
    // post alguma coisa ou possui menos de 5 caracteres ou mais de 10
  } else if (!preg_match('/^([a-zA-Z À-ú 0-9]+)$/i', $_POST['alguma_coisa'])) {
    // O valor  de post alguma coisa possui algum tipo de caractere expecial que não é espaço
  }
  // ----
  else {
    // terminei as verificações que queria fazer, entro com o restante do código
  }
} else {
  // O arquivo não recebou nenhum índice a super-global POST
}

 

E por aí vai, fazendo todo e qualquer tipo de verificação dos dados antes de querer usar-los, Lógico que isso é um exemplo genérico, pois o tratamento de um input vai muito mais além, na prática é possuir um método de uma classe para fazer a verificação, justamente para não ficar recriando toda uma sequência de código para cada entrada de um post como exemplo, assim sendo podemos convocar o método de verificação apenas passando por parâmetro o dado que queremos verificar.

 

  • Antes da manipulação de dados confirme sua existência, um truque é depurar antes de começar.

Exemplo como eu faço:

Digamos então que eu vá salvar dados de um formulário. Vou lá crio o form com os inputs e tudo mais (SEM FORMATAÇÃO CSS o design é a última coisa que se deve pensar em fazer por ser a coisa mais simples).

Então vou enviar os dados para o arquivo salva.php. Antes de começar a escrever o salva.php coloco isso nele.

var_dump($_POST); isso se eu estiver a enviar dados do tipo post se for get usa-se $_GET.

O php vai me informar corretamente todos os dados que eu enviei, basta que eu der um CTRL + C no resultado na tela que eu terei corretamente todos os inputs, assim previno erros de digitação que normalmente geram (Notice: Undefined index)

 

  • Tenha bom senso na identação e lógica programacional.

Fica muito mais simples para você ou outra pessoa dar manutenção no sistema no futuro. (A falta do conceito das boas práticas é o que mais me estressa quando sou contratado para consertar aplicações "é cada coisa bizarra que chega em minhas mãos")

Veja algumas incoerências de seu arquivo:

Em 16/10/2018 at 11:41, freitaz disse:

if ($_SERVER["REQUEST_METHOD"] == "GET") {

Isso não está errado. A condição diz se o servidor enviar um get faça, mas....

 

Em 16/10/2018 at 11:41, freitaz disse:

if (isset($_POST["exepublicar"])) {

Dentro dessa condição está

Em 16/10/2018 at 11:41, freitaz disse:

if ($_SERVER["REQUEST_METHOD"] == "POST") {

Se já existe o post porque verificar se o método de envio é post?

Mas o tratamento inicial não era get?

 

Por fim:

3 horas atrás, freitaz disse:

Eu exclui o id que estava errado mesmo...

E como vai fazer o updade se não não informar qual registro é para atualizar?

Você deveria capturar no caso o ID através de um select no formulário e repassar esse valor para o arquivo que vai salvar os dados, lógico que o método update deve ter a condicional na entrada de parâmetros.

 

Obs.: A PDO não faz updade se realmente não houver modificações em dados. Na simples explicação é como se a biblioteca fizesse a leitura comparasse os dados, se estão iguais, nada acontece.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
    • Por violin101
      Caros amigos, saudações
       
      Por favor, me perdoa em recorrer a orientação dos amigos, tenho uma dúvida.
       
      Gostaria de uma rotina onde o Sistema possa acusar para o usuário antes dos 30 dias, grifar na Tabela o aviso de vencimento próximo, por exemplo:
       
      Data Atual: 15/11/2024
                                           Vencimento
      Fornecedor.....................Data.....................Valor
      Fornecedor_1...........01/12/2024..........R$ 120,00 <== grifar a linha de Laranja
      Fornecedor_1...........01/01/2025..........R$ 130,00
      Fornecedor_2...........15/12/2024..........R$ 200,00 <== grifar a linha de Amarelo
      Fornecedor_2...........15/01/2025..........R$ 230,00
      Fornecedor_3...........20/12/2024..........R$ 150,00
       
      Alguém tem alguma dica ou leitura sobre este assunto ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a ajuda dos amigos, mas preciso entender uma processo que não estou conseguindo sucesso.

      Como mencionado no Título estou escrevendo um Sistema Web para Gerenciamento de Empresa.
       
      Minha dúvida, que preciso muito entender:
      - preciso agora escrever a Rotina para Emissão de NFe e essa parte não estou conseguindo.
       
      tenho assistido alguns vídeos e leituras, mas não estou conseguindo sucesso, já fiz toda as importações das LIB da NFePhp conforme orientação.

      Preciso de ajuda.

      Algum dos amigos tem conhecimento de algum passo-a-passo explicando a criação dessa rotina ?

      tenho visto alguns vídeos com LARAVEL, mas quando tento utilizar e converter para PHP+Codeiginter, dá uma fila de erros que não entendo, mesmo informando as lib necessárias.

      Alguns do amigo tem algum vídeo, leitura explicando essa parte ?

      Grato,

      Cesar.
×

Informação importante

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