Ir para conteúdo

POWERED BY:

Arquivado

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

Mulambo

[Resolvido] Insert com base no Id de uma session.

Recommended Posts

E ai gente, tranquilo?

 

Gostaria da sua ajuda. Preciso pegar o ID do usuario na SESSION, e inserir dados na tabela, mais não sei como faço o insert especifico para o id.

 

Exemplo: O usuário vai comprar um numero "x" de créditos, mas para comprar ele precisa estar logado,após logar-se o usuário, vai até a pagina de compra, seleciona a quantidade de créditos, e é salvo na database.

 

A pergunta é, como vou fazer o insert do usuário, para adicionar os créditos de acordo com o id do user?

 

Meu código:

<?php
include ("config.php");

if(isset($_POST["comprar"]) == true) { {
	$creditos  = $_POST["creditos"];

$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Créditos comprados com sucesso!</h1>";
} }

?>

Atenciosamente,Mulambo

Compartilhar este post


Link para o post
Compartilhar em outros sites

tu tem que ter uma sessao , nessa sessao tu guarda o email , ou login , que tenha no banco , entao tu faz um SELECT pra procurar o id , tipo

 

Login : Gremio10

 

tua pagina de verifia_login.php

$login = $_POST["login"];

$_SESSION["login"] = $login;

inicie sempre esse verifica para que tu tenha esse valor guardado , sempre o primeiro a ser aberto no codigo.

 

isso nas tuas outras paginas:

$busca = mysql_query("SELECT * FROM cadastro WHERE email = '".$_SESSION["login"]."'");
while ($reg = mysql_fetch_array($busca)){
$id = $reg["codigo"];
}
Outra coisa , tu nao pode fazer um INSERT , tu deveria fazer um UPDATE so para atualizar , nao seria isso ?

 

Espero ter ajudado .. Felipe ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, obrigado por responder..

 

Me desculpe, mas não entendi direito o que você 'disse'.

 

Eu tenho que pegar alguma informação da session(no caso o login,por exemplo),jogar na query para buscar o id, certo?!

 

Com o id em mãos eu coloco ele dentro da query de inserção, mas como ficaria a query?

 

Ps.: No caso o campo creditos da tabela está vazia, logo eu usou INSERT, estou correto?

 

 

Atensiosamente,Mulambo

Compartilhar este post


Link para o post
Compartilhar em outros sites

login.php

 

<html>
<head>
<title>Login</title>
</head>
<body>
<form action="verifica_login.php" method="post">
Login : <input type="text" name="login"><br>
Senha : <input type="password" name="senha"><br>
<input type="submit" value="Logar">
</form>
</body>
</html>

Aqui o usuario vai logar, e os valores vao para a pagina verifica_login.php que verá se ele realmente exste no banco.

 

verifica_login.php

<?php
include("conexao.php") // tua conexao
$login = $_POST["login"];
$senha = $_POST["senha"];

$existe = mysql_query("SELECT * FROM usuario WHERE login like '$login' AND senha = '$senha'");
$linha = mysql_num_rows($existe); // aqui conta quantos registros foram achados

if ($linha == 0){
 echo "Não achou nada!";
}else{
 session_start(); // inicio a sessao
 $_SESSION["login"] = $login; 
 $_SESSION["senha"] = $senha;
//pode direcionar para algum lugar depois
}
?>
Aqui tu verificou a existencia do usuario no teu banco , se ele realmente existir , passara adiante , senao fica ali mesmo.

Agora tu na tua pagina faz assim:

 

<?php
session_start(); // pode criar uma pagina para verificar a sessao existente
include ("config.php");

$busca_usuario = mysql_query("SELECT * FROM cadastro WHERE email like '".$_SESSION["login"]."'");//digamos que tu tem uma tabela cadastro e que o login é o email que esta tbm guardado nessa tabela.

while ($reg = mysql_fetch_array($busca_usuario)){
 $id = $reg["id"]; // codigo,id_usuario ... como tu denominou ser o id unico dele
}

if(isset($_POST["comprar"]) == true) { {
        $creditos  = $_POST["creditos"];

//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuario` SET `creditos` = '$creditos' WHERE `id` = '$id'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Créditos comprados com sucesso!</h1>";
} }

?>

;) fiz sem testar, ve se funciona , senao mostre ql o erro :D

 

Felipe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, testei aqui não deu certo não!! Vou mostrar meus códigos pra gente se entender melhor :)

 

login.php

<?php
include ("config.php");
if(isset($_POST["logar"]) == true) { {
if (!empty($_POST) AND (empty($_POST['usuario']) OR empty($_POST['senha']))) {
	header("Location: index.php"); exit;
}

$usuario = mysql_real_escape_string($_POST['usuario']);
$senha = mysql_real_escape_string($_POST['senha']);

$sql = "SELECT `id`, `nome`, `nivel` FROM `usuarios` WHERE (`usuario` = '". $usuario ."') AND (`senha` = '". sha1($senha) ."') AND (`ativo` = 1) LIMIT 1";
$query = mysql_query($sql);
if (mysql_num_rows($query) != 1) {
	echo "Login inválido!"; exit;
} else {
	$resultado = mysql_fetch_assoc($query);

	if (!isset($_SESSION)) session_start();

	// Salva os dados encontrados na sessão
	$_SESSION['UsuarioID'] = $resultado['id'];
	$_SESSION['UsuarioNome'] = $resultado['nome'];
	$_SESSION['UsuarioNivel'] = $resultado['nivel'];

	header("Location: index.php"); exit;
}
}}
?>
<form action="" method="post">
<fieldset>
<legend>Dados de Login</legend>
	<label for="txUsuario">Usuário</label>
	<input type="text" name="usuario" id="txUsuario" maxlength="25" />
	<label for="txSenha">Senha</label>
	<input type="password" name="senha" id="txSenha" />

	<input type="submit" name="logar" value="Entrar" />
</fieldset>
</form>

Agora o código que faz a proteção das páginas:

<?php
include ("config.php");
if (!isset($_SESSION)) session_start();
$nivel_necessario = 1;
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
    session_destroy();
    header("Location: login.php");
    exit;
}
?>

A página de compra com código completo(comprar.php):

<?php
include ("config.php");
if (!isset($_SESSION)) session_start();
$nivel_necessario = 1;
if (!isset($_SESSION['UsuarioID']) OR ($_SESSION['UsuarioNivel'] < $nivel_necessario)) {
    session_destroy();
    header("Location: login.php");
    exit;
}
?>
<?php
if(isset($_POST["comprar"]) == true) { {
$busca_usuario = mysql_query("SELECT * FROM usuarios WHERE nome like '".$_SESSION["UsuarioNome"]."'");//digamos que tu tem uma tabela cadastro e que o login é o email que esta tbm guardado nessa tabela.
while ($reg = mysql_fetch_array($busca_usuario)){
 $id = $reg["id"]; // codigo,id_usuario ... como tu denominou ser o id unico dele
}
        $moedas  = $_POST["moedas"];

//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuarios` SET `creditos` = '$moedas' WHERE `id` = '$id'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Créditos comprados com sucesso!</h1>";
} }

?>


<?php echo $_SESSION['UsuarioID']; ?>
<form action="" method="post">
<fieldset>
<legend><h1>Comprar Moedas</h1></legend><div><a href="index.php">Inicio</a> | <a href="logout.php">Sair</a></div>
	<label>Quantidade de moedas:</label>
	<input type="text" name="moedas"  maxlength="25" />
	<input type="submit" name="comprar" value="comprar" />
</fieldset>
</form>

Bom, acho que fiz tudo como você disse, só mudei algumas coisas para adaptar ao sistema.

Ps.: Troquei o campo creditos, pelo campo moeda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui tu faz uma redundancia de codigo , se tu jah tem uma pagina com a segurança da pagina , pra que re-digitala ?

Faz um include dessa pagina , ai tu nao precisa arir e fechar a tag php , se tu jah guardou o id do usuario , nem precisa fazer aquela pesquisa que eu coloquei ai pra ti , por que tu jah tem o id dele.

 

<?php

include("tua pagina");

if(isset($_POST["comprar"]) == true) { {
        $moedas  = $_POST["moedas"];

//$sql = "INSERT INTO usuarios (creditos) VALUES ('$creditos')";
$sql = "UPDATE `usuarios` SET `creditos` = '$moedas' WHERE `id` = '".$_SESSION["Usuario_ID"]."'";
$sql = mysql_query($sql) or die ("Houve erro na compra, por favor, clique em voltar e verifique os campos obrigatórios!");

echo "<h1>Créditos comprados com sucesso!</h1>";
} }

?>


<?php echo $_SESSION['UsuarioID']; ?>
<form action="" method="post">
<fieldset>
<legend><h1>Comprar Moedas</h1></legend><div><a href="index.php">Inicio</a> | <a href="logout.php">Sair</a></div>
        <label>Quantidade de moedas:</label>
        <input type="text" name="moedas"  maxlength="25" />
        <input type="submit" name="comprar" value="comprar" />
</fieldset>
</form>

Vi que tu debugou a sesison , apareceu algo ?

ela tem algum valor ?

 

Felipe , qualquer coisa , posta ai ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Problema resolvido,

 

arrumei a linha:

$busca_usuario = mysql_query("SELECT * FROM usuarios WHERE id like '".$_SESSION["UsuarioID"]."'");

WHERE nome LIKE, eu troquei por: WHERE id LIKE

 

Obrigado pela ajuda, precisando só falar!! Abraço!

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.