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 comentários sobre “JQuery-PHP: Salvando dados em session

  • 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
  • Muito bom o tutorial, mas como faço para quando adicionar aos favoritos ir mostrando a quantidade que já tem adicionado, alguem sabe?

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

    Resposta
  • 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
  • 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 *