Alteração de registro no banco de dados. Sql Update
24/08/2023
0
Realizei todos as etapas desse projeto. Login, cadastro, listagem, mas na alteração de dados os campos são apagados no banco de dados. Já procurei com base na apostila, mas não identifiquei onde está o problema. Não nenhum erro na execução.
Alguém pode me ajudar?
Arquivo index.php
Arquivo usuario_controller.php
Arquivo Usuario.php
?>
Arquivo editar_usuario.php
?>
Arquivo Conexao.php
?>
Alguém pode me ajudar?
Arquivo index.php
<!DOCTYPE html> <html> <body> <form action="" method="post"> <font color=blue size="4"> E-mail:</font> <input type=text name=email placeholder= "Preencha seu e-mail"><br><br> <font color="red" size="4"> Senha: <input type=text name=senha placeholder= "Preencha sua senha"><br><br> <button type="submit" name="logar">Entrar</button> </form><br><br><br> </font> </body> </html> <?php $path = $_SERVER[''''DOCUMENT_ROOT''''].''''/ecommerce/''''; include_once($path.''''/Controllers/usuario_controller.php''''); echo "<font color=brown size=6>"; if (isset($_POST[''''logar''''])) { $objUsuario = new Usuario(); $objUsuario->setEmail($_POST[''''email'''']); $objUsuario->setSenha($_POST[''''senha'''']); echo "<br><br>"; $controllerUsuario = new UsuarioController(); $resposta = $controllerUsuario->validaUsuario($objUsuario); if($resposta == "Sucesso") { session_start(); $_SESSION["usuario_id"] = $objUsuario->getId(); header("Location: ./Views/Usuario/editar_usuarios.php"); } else {echo "<font size=4 color=red><i>$resposta</i>";} } ?>
Arquivo usuario_controller.php
<?php $path = $_SERVER[''''DOCUMENT_ROOT''''].''''/ecommerce/''''; include_once("$path/Models/Usuario.php"); class UsuarioController { public function validaUsuario($objUsuario) { if (validaEmail($objUsuario->getEmail())) { if ($objUsuario->getSenha() == null || strlen($objUsuario->getSenha()) < 6) { return "Preencha a senha com no mínimo 6 caracteres!"; } else {return $objUsuario->Login();} } } public function getUsuario($id) { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "SELECT * FROM Usuarios WHERE id = ''''".$id."''''"; $resposta = $conexao->query($sql); $usuario = $resposta->fetch_assoc(); return $usuario; } public function cadastraUsuario($objUsuario){ if($objUsuario->getNome() == null){ return "Preencha o nome do usuario."; } if($objUsuario->getEmail() == null){ return "Preencha o email."; } if($objUsuario->getSenha() == null || strlen($objUsuario->getSenha()) < 6){ return "Preencha senha com no mínimo 6 caracteres."; } else { return $objUsuario->Cadastrar();} } } function validaEmail($email) { if ($email == null) { echo "O e-mail é indispensável"; return false; } elseif (strlen($email) > 100) { echo "E-mail deve ter até 100 caracteres"; return false; } return true; }
Arquivo Usuario.php
<?php $path = $_SERVER[''''DOCUMENT_ROOT''''].''''/ecommerce/''''; include_once($path.''''/Conexao.php''''); class Usuario { private $id; private $nome; private $email; private $senha; private $endereco; public function getId() { return $this->id; } public function getNome() { return $this->nome; } public function getEmail() { return $this->email; } public function getSenha() { return $this->senha; } public function getEndereco() { return $this->endereco; } public function setId($id) { return $this->id = $id; } public function setNome($nome) { return $this->nome = $nome; } public function setEmail($email) { return $this->email = $email; } public function setSenha($senha) { return $this->senha = $senha; } public function setEndereco($endereco) { return $this->endereco = $endereco; } public function Login() { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "SELECT * FROM Usuarios WHERE email = ''''" . $this->getEmail() . "''''"; $resposta = $conexao->query($sql); $usuario = $resposta->fetch_assoc(); if (!$usuario) { echo "Email não cadastrado"; } elseif ($usuario[''''Senha''''] != $this->getSenha()) { echo "Senha incorreta"; } else { $this->setId($usuario[''''ID'''']); //Esta linha foi dada no módulo 3 - mídia 2 - parte 8 - passo 1, mas não funciona. Houve a orientação no módulo 3 - mídia 2 - parte 2 para não ser criada a função setId, pois o banco de dados cria o id automaticamente. return "Sucesso"; } mysqli_close($conexao); } public function Cadastrar() { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "INSERT INTO Usuarios (Nome,Email,Senha) VALUES (''''$this->nome'''',''''$this->email'''',''''$this->senha'''')"; if (mysqli_query($conexao, $sql)) {return "Sucesso";} else {return "Erro na tentativa de cadastrar";} mysqli_close($conexao); } public function Editar($id) { $objConexao = new Conexao(); $conexao = $objConexao->getConexao(); $sql = "UPDATE Usuarios set Nome = ''''".$this->nome."'''', Email = ''''".$this->email."'''',Senha = ''''".$this->senha."'''', Endereco = ''''".$this->endereco."'''' WHERE id = ".$id; if (mysqli_query($conexao, $sql)) {return "Sucesso";} else {return "Erro na tentativa de editar";} mysqli_close($conexao); } } ?>
Arquivo editar_usuario.php
<?php $path = $_SERVER[''''DOCUMENT_ROOT''''].''''/ecommerce/''''; include_once($path.''''/Controllers/usuario_controller.php''''); session_start(); $controllerUsuario = new UsuarioController(); $usuario = $controllerUsuario->getUsuario($_SESSION["usuario_id"]); if (isset($_POST[''''editar''''])) { $objUsuario = new Usuario(); $objUsuario->setNome($_POST[''''nome'''']); $objUsuario->setSenha($_POST[''''senha'''']); $objUsuario->setEmail($_POST[''''email'''']); $objUsuario->setEndereco($_POST[''''endereco'''']); $controllerUsuario = new Usuario(); $resposta = $controllerUsuario->Editar($usuario[''''ID''''],$objUsuario); if($resposta == "Sucesso"){ // $usuario = $controllerUsuario->getUsuario($_SESSION["usuario_id"]); // Não entendi o objetivo dessa linha. Ela está declarada na abertura da sessão. echo "Conta salva com sucesso!<br><br>"; } else { echo $resposta; } } ?> <!DOCTYPE html> <html> <body> <form action="" method="post"> <font color="blue" size="4"> Nome:</font> <input type=text name=nome value="<?php echo $usuario[''''Nome'''']?>" placeholder= "Preencha seu e-mail"><br><br> Senha:</font> <input type=text name=senha value="<?php echo $usuario[''''Senha'''']?>" placeholder= "Preencha sua senha"><br><br> E-mail:</font> <input type=text name=email value="<?php echo $usuario[''''Email'''']?>" placeholder= "Preencha seu e-mail"><br><br> Endereço:</font> <input type=text name=endereco value="<?php echo $usuario[''''Endereco'''']?>" placeholder= "Preencha seu endereço"><br><br> <button type="submit" name="editar">Editar</button> </form><br> </body> </html>
Arquivo Conexao.php
<?php class Conexao { public function getConexao() { $host = ''''localhost''''; $bd = ''''ecommerce''''; $usuariobd = ''''root''''; $senhabd = ''''''''; $conexao = new mysqli($host, $usuariobd, $senhabd, $bd); if (!$conexao) die ("Erro de conexão com localhost, o seguinte erro ocorreu -> ". mysql_error()); return $conexao; } } ?>
Lúcio Sales
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)