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.

5 comentários em “JQuery-PHP: Salvando dados em session

  • 25 de setembro de 2012 em 17:18
    Permalink

    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
  • 25 de setembro de 2013 em 11:29
    Permalink

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

    Resposta
  • 26 de novembro de 2013 em 9:32
    Permalink

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

    Resposta
  • 11 de junho de 2015 em 10:37
    Permalink

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

    Resposta

Deixe uma resposta

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