JQueryPHP

JQuery-PHP: Salvando dados em session

Fala pessoal!

Mais um post bacana para os apaixonados por programação ou não… rs

Aprenda neste post, como manipular dados através de session, de forma dinâmica, contando com a ajudinha do JQuery.

“Você tem uma listagem e gostaria que quando alguém clicar o valor fique guardado, e que este valor salvo seja exibido em uma página de resultados.” é isso? então, você está no lugar certo. continue…

Veja como funcionará, clicando aqui.

Para melhor entendimento, crie um banco de dados de nome “session” e uma tabela para teste de nome “favoritos”.

CREATE DATABASE session;
 
CREATE TABLE IF NOT EXISTS `favoritos` (
  `id` int(3) NOT NULL AUTO_INCREMENT,
  `nome` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
 
INSERT INTO `favoritos` (`id`, `nome`) VALUES
(1, 'teste1'),
(2, 'teste2'),
(3, 'teste3');

// arquivo que fará a conexão com o banco
conecta.php

<?
$DBNAME	   = "session"; // banco de dados
$USUARIO   = "nome_usuario";
$PASSWORD  = "senha_de_acesso";
$SERVIDOR  = "nome_do_servidor";
 
$link = mysql_connect($SERVIDOR,$USUARIO,$PASSWORD); 
if (!$link) { 
  die('Não foi possível conectar: ' . mysql_error()); 
} 
 
$con = mysql_select_db($DBNAME,$link);
if (!$con){
  die('Não foi possível conectar: ' . mysql_error()); 
}
?>

// arquivo que conterá a listagem
favoritos.php

<? 
  session_start();
  require_once("conecta.php"); 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP Session + JQuery</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
  $('.add').on('click',function(){
    $(this).addClass('selecionado').text("Selecionado");
    var $acao	= "add";
    var $id 	= $(this).attr('rel');
    $.ajax({
      type: "POST",
      url: "session.php",
      data: { 'acao':$acao,'id':$id }
    });
    return false;
  });
});
</script>
<style type="text/css">
.festa{ 
background-color:#FDFCCD;
width:170px;
height:80px;
margin-bottom:2px;
padding-left:50px;
}
a{ text-decoration:none; color:#000066 }
a.selecionar{ 
background:url(images/selecionar.png) no-repeat center right; 
height:43px;
float:left;
padding:25px 50px 0 0;
color:#999999;
}
a.selecionado{ 
background:url(images/selecionado.png) no-repeat center right; 
height:43px;
float:left;
padding:25px 50px 0 0;
color:#000000;
font-weight:bold;
}
</style>
</head>
<body>
<p><a href="resultados.php">ver selecionados</a></p>
<? 
$select = mysql_query("SELECT * FROM favoritos");
while ($row = mysql_fetch_array($select)){
  $id 	= $row['id'];	
  $nome	= $row['nome'];
  if( isset( $_SESSION["favoritos"][$id]) == $id ){
    echo '
	<div class="festa">
	id: '.$id.'<a href="#" class="add selecionado" rel="'.$id.'" nm="'.$nome.'">Selecionado</a>
	</div>
    ';
  }else{
    echo '
	<div class="festa">
        id: '.$id.'<a href="#" class="add selecionar" rel="'.$id.'" nm="'.$nome.'">Selecionar</a>
	</div>
    ';
   }		
}	
?>
</body>
</html>

// arquivo responsável por guardar os dados na session
session.php

<?php
session_start();
$id = $_POST['id'];
if( isset( $_POST['acao'] ) && $_POST['acao'] == "add" ){
  $_SESSION["favoritos"][$id] = $_POST['id'];
}else if( isset( $_POST['acao'] ) && $_POST['acao'] == "del" ){
  unset($_SESSION["favoritos"][$id]);
}	
?>

// arquivo que conterá os itens selecionados
resultados.php

<? 
  session_start();
  require_once("conecta.php"); 
?>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
   $('.del').on('click',function(){
     var $acao	= "del";
     var $id 	= $(this).attr('rel');
     $.ajax({
	type: "POST",
	url: "session.php",
	data: { 'acao':$acao,'id':$id },
	success: function(){
          location.reload();
  	}
     });
     return false;
    });
});
</script>
<p><a href="favoritos.php">voltar</a></p>
<?php
if ($_SESSION && $_SESSION['favoritos'] != null){
  foreach($_SESSION['favoritos'] as $key => $value)
  {
	$id = $_SESSION['favoritos'][$key];
	$sel = mysql_query("SELECT * FROM favoritos WHERE id = '".$id."'");
	while($row = mysql_fetch_array($sel)){
          echo "id: ".$row['id']." | "."nome: ".$row['nome']." <a href='#' class='del' rel='".$id."'>DEL FAVORITOS</a><br /> ";
	}
  }
}else{
  echo "Nenhum dado salvo no momento.";
}
?>

Espero ajudar alguém com este post.

Abraços e até a próxima.

8 thoughts on “JQuery-PHP: Salvando dados em session

  • Valter Ferreira Martins

    Olha ai mais uma dica fantástica.
    Mais uma vez salvo pela dica do Tiago, muito boa e agora devidamente guardada.
    Obrigado por compartilhar.

    Resposta
  • Mauricio

    Muito bom o tutorial, mas como faço para quando adicionar aos favoritos ir mostrando a quantidade que já tem adicionado, alguem sabe?

    Resposta
  • Hermes

    Aê valeu pelo post, justamente o que eu precisava!
    Parabêns!

    Resposta
  • Dani

    Muito bom, mas e se precisar remover um item da sessão, como faço?

    Resposta
  • Muito bom , funcional , simples e bem explicativo , vlw !!

    Resposta
  • Arthur Balmanto

    Olá,
    Muito bom o seu código. Ótimo trabalho.
    Só tenho uma duvidá. Tenho um problema parecido. Quero pegar os valores do input e adicionar nessa SESSION como eu faria. Desde já obrigado.

    Resposta

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *