Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 ajudaEu 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.
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.
Não apresenta erro?!
Estranho... deveria mostrar erro nessa linha:
>
11 horas atrás, freitaz disse: