Ir para conteúdo

Arquivado

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

Felipessz

Atualizar Dados Banco de dados PDO

Recommended Posts

Olá pessoal tudo bom? Estou criando um sisteminha simples para meu aprendizado nessa linda linguagem PHP (como dito em meu primeiro tópico), e estou tendo um probleminha com uma tela de atualização de dados.

Estou trabalhando com sessão normalmente, com isso ali no quadrado vermelho exibi o ID na minha tela de atualização cadastral do usuário apenas para ver se estava funcionado, e está. Meus <Input> estão recebendo os dados corretamente dos usuários logado a partir do banco de dados e os exibindo neles:

MJDd3vp.png

O intuito é, após edita-los e clicar no botão Atualizar executaria um script meu de UPDATE e os dados seriam modificados. Segue abaixo meu código da tela update.php (editado, contendo apenas os códigos relevantes) e do script de Update:

<?php
//Iniciando a sessão
session_start();

if((!isset ($_SESSION['login']) == true) and (!isset ($_SESSION['senha']) == true))
{
    unset($_SESSION['login']);
    unset($_SESSION['senha']);
    header('Location:http://127.0.0.1/englishcourse/http/login.php');
}
	$login = $_SESSION["login"];
	$email = $_SESSION["email"];
	$nome = $_SESSION["nome"];
        $id =   $_SESSION['id'];
?>
<!DOCTYPE html>
<html class="no-js" lang="pt-BR">
    <head>
    </head>
<body>
 <div class="row">
                        <form action="http://127.0.0.1/englishcourse/http/script/update.php" method="post">
                            <div class="col-md-9 col-md-offset-2 paddingcadastro">
                                <div class="row">
                                    Nome <input type="text" name="atualiza_nome" value="<?php echo $_SESSION['nome']; ?>" ><br>
                                </div>
                            </div>
                            <div class="row">
                                <div class="col-md-9 col-md-offset-2 paddingcadastro">
                                    <div class="row">
                                        Usuário <input type="text" name="atualiza_usuario" value="<?php echo $_SESSION['login']; ?>" ><br>
                                    </div>
                                    </div><br>
                            <div class=" col-md-2 col-md-offset-4">
                                <input type="submit" value="Atualizar" class="bt-info bt-sm">
                            </div>
                                </div>
                            </div>
</body>
</html>

​Update_script.php

<?php 
//Conexão com o bando de Dados
include_once "conexao.php";
$pdo=conectar();
	//Recebendo dados
	$nome=(trim($_POST["atualiza_nome"]));
	$usuario=(trim($_POST["atualiza_usuario"]));
	$id =   $_SESSION['id'];

	//Realizando a consulta
	$atualizarusuario=$pdo->prepare("UPDATE usuarios SET nome=:nome, usuario=:usuario WHERE ID=:id");
	$atualizarusuario->bindValue(":nome",$nome);
	$atualizarusuario->bindValue(":usuario",$usuario);
	$atualizarusuario->bindValue(":id",$id);
	$atualizarusuario->execute();
	//Informa quantos usuarios foram atualizados
	if($atualizarusuario->rowCount() > 0):
		echo "USUARIO ATUALIZADO COM SUCESSO!";
	else:
		echo "<h2>NENHUM USUARIO ENCONTRADO, FAVOR INFORMAR OS DADOS!<h2/>";

endif;
?>

Porém está sempre dando erro e caindo no echo de "Nenhum usuário encontrado...." Quando eu estava usando o $_GET estava de boa, acho que to pecando no modo de pegar o ID do user ON. Poderiam me dar um help por favor?

Grato desde já e fiquem com Deus!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falta o session_start(); na página onde está ocorrendo a atualização dos dados, sempre que você desejar resgatar a sessão, você deverá utilizar o session_start().

Compartilhar este post


Link para o post
Compartilhar em outros sites

Falta o session_start(); na página onde está ocorrendo a atualização dos dados, sempre que você desejar resgatar a sessão, você deverá utilizar o session_start().

Oi, desculpa editei o código aqui e retire-o sem querer, porém o está incluído normalmente.

session_start();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se retorna algum erro então na query:

print_r($atualizarusuario->errorInfo());

Se não estiver retornando nenhum erro, dê echo em todas as variáveis que estão indo para a query para ter certeza de que elas não estão vazias.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja se retorna algum erro então na query:

print_r($atualizarusuario->errorInfo());

Se não estiver retornando nenhum erro, dê echo em todas as variáveis que estão indo para a query para ter certeza de que elas não estão vazias.

Deu esse erro.

No caso o "Update.php" ali seria no meu script enviado aqui

Notice: Undefined variable: _SESSION in C:\Program Files (x86)\EasyPHP-Devserver-16.1\eds-www\englishcourse\http\script\update.php on line 8

Array ( [0] => 42S22 [1] => 1054 [2] => Unknown column 'usuario' in 'field list' )

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui, estava chamando a coluna errada da tabela rsrs.

Muito obrigado

Só que tem um porém agora, atualizei, e ainda estando online no site os dados puxados pelo banco nos Forms continuas sendo os antigos. Só atualizam quando eu encerro a cessão e conecto de novo. Há algum modo de atualiza-los direto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe,

Nos inputs você não faz um select para resgatar os dados e traz o dado da sessão.

Na sessão estão armazenados os dados que você registrou quando o cara fez o login, e se você não atualizar os dados na $_SESSION, eles não mudarão sozinhos!

Solução 1:

Ao invés de utilizar a variável $_SESSION nos inputs, fazer um select pelo ID do usuário e utilizar os dados retornados pelo select (sempre estarão atualizados).

Solução 2:

Ao realizar o UPDATE do usuário, atualizar a sessão gravando novamente os dados na $_SESSION.

Um abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Felipe,

Nos inputs você não faz um select para resgatar os dados e traz o dado da sessão.

Na sessão estão armazenados os dados que você registrou quando o cara fez o login, e se você não atualizar os dados na $_SESSION, eles não mudarão sozinhos!

Solução 1:

Ao invés de utilizar a variável $_SESSION nos inputs, fazer um select pelo ID do usuário e utilizar os dados retornados pelo select (sempre estarão atualizados).

Solução 2:

Ao realizar o UPDATE do usuário, atualizar a sessão gravando novamente os dados na $_SESSION.

Um abraço!

Muito obrigado, consegui!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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