Ir para conteúdo

POWERED BY:

Arquivado

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

Rzorr

Favoritos Session

Recommended Posts

Bom Dia Pessoal, 

       Pessoal gostaria de entender a lógica do botão favoritos.  o que eu queria fazer é o seguinte colocar uma estrelinha no item que aparece no site, quando o visitante  clicar na estrela esse item vai ficar guardado em uma session, ai quando ele clicar no link favoritos aparece todos os itens que ele favoritou e quando ele fechar o navegador destrói tudo. bem simples né? mas confesso que não faço a mínima ideia de como fazer. ou até tenho mais ou menos a noção mas não sei como fazer. alguém pode me ajudar? 

Compartilhar este post


Link para o post
Compartilhar em outros sites

PHP: Session Handling

 

Crie/inicie a sessão:

<?php

session_start(); // inicia a sessão. Deve ser uma das primeiras coisa no seu código, logo após o <?php

Adicione os itens na sessão:

$_SESSION['favoritos'][] = 1;// adicione o ID

Para não repetir, você pode validar:

$id = 1;
if(!in_array($id , $_SESSION['favoritos']))
{
    $_SESSION['favoritos][] = $id;
}

Quando você quiser imprimir a sessão, basta usar um foreach:

foreach($_SESSION['favoritos'] as $favorito)
{
    printf('ID favoritado: %d' , $favorito);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, Desculpa a demora então até consegui fazer um add aos favoritos, mas toda vez que adiciono, tem que dar um refresh na página, teria um jeito de fazer isso, sem dar o refresh, até vi uns tópicos aqui de 2009, 2010, 2015 e uns abandonados geral, mas não consegui entender bem. Na real nesse quase um mês fiz muitas alterações no layout o projeto é meu mesmo. então faço devagar. por isso também a demora em responder.

<div class="header">
<!-- barra top -->
<div class="top">
	<div class="container">
		<div class="row barra">
			<div class="col-sm-3">Creci:000000/[cliente_uf]</div>
			<div class="col-sm-3"><i class="fas fa-envelope"></i> [smtp_username]</div>
			<div class="col-sm-3"><i class="fas fa-phone-square"></i> [cliente_telefone1] | [cliente_telefone2]</div>
			<div class="col-sm-3"><div id="icon_favs_saves__" onclick="window.location.href ='[baseUri]/pagina/favoritos'">
        <i class="fas fa-star"></i>  
        <?php
        
        if (isset($_SESSION['fav_saves'])){
            $n1 = count($_SESSION['fav_saves']);
            echo $n1;
        }else{
            echo '';
        }

         ?> 
    </div></div>
			
		</div>
	</div>
</div><!-- end barra top -->
<!-- nav menu -->

<div class="">
    <div class="container">
        <div class="row">
        <div class="col-sm-12">
			<a href="#"><img src="../app/css_public/images/logo.png"/></a>
			
			
			<nav>
				<ul class="menu">
					<li class="home"><a href="[baseUri]/">Home</a></li>
					<li class="home"><a href="">Vendas</a></li>
					<li class="home"><a href="">Aluguel</a></li>
					<li class="home"><a href="[baseUri]/pagina/contato/">Contato</a></li>
					<!-- <li class="home"><a href="">Blog</a></li> -->
					<li class="home"><a href="[baseUri]/mapa/">Imóveis no Mapa</a></li>
				</ul>
			</nav>
			
		</div>
		</div>
	</div>
</div><!-- end menu-->
<hr>
<!--<div class="topinfo" style="color:#fff;"><h3 align="center">O seu novo Imóvel está aqui!!  Use os campos de Busca avançados</h3></div>-->
</div><!--fim header-->




<div role="main" class="miolo">
<!-- search -->
<section class="buscaAvancada" style="margin: 5px;">
<div class="container">
<div class="row">
<div class="form-group">
	<form id="search" class="form panel-busca hidden" action="[baseUri]/index/buscaavancada/" method="post">
	<div class="row">
		<div class="col-xs-6 col-sm-2">
			<select name="finalidade" id="finalidade" class="sel-custom form-control">
			<option value="0">Transação...</option>
			<option value="1">Venda</option>
			<option value="2">Locação</option>
			<option value="4">Temporada</option>
			</select>
		</div>
		<div class="col-xs-6 col-sm-2">
			<select name="tipo" id="tipo" class="sel-custom form-control">
			<option value="0">Tipo...</option>
			<!--{loop:tpb}-->
			<!--{ <option value="tpb.tipo_id" name="tpb.tipo_url">tpb.tipo_title</option>}-->
			<!--{end:tpb}-->    
			</select>
		</div>
		<div class="col-xs-6 col-sm-2">
			<select name="cidade" id="cidade" class="sel-custom form-control">
			<option value="0">Cidade...</option>
			<!--{loop:catb}-->
			<!--{ <option value="catb.categoria_id" name="catb.categoria_url">catb.categoria_title</option>}-->
			<!--{end:catb}-->    
			</select>
		</div>
		<div class="col-xs-6 col-sm-2">
			<select name="bairro" id="bairro" class="sel-custom form-control" disabled>
			<option value="0">Bairro...</option>
			</select>
		</div>
		<div class="col-xs-6 col-sm-2">
    <select name="valormax" id="valormax" class="sel-custom form-control valor_venda">
                               <option value="0">Preço...</option>
                                <option value="0">Indiferente</option>
                                <option value="40000">até 40.000</option>
                                <option value="50000">até 50.000</option>
                                <option value="60000">até 60.000</option>
                                <option value="70000">até 70.000</option>
                                <option value="80000">até 80.000</option>
                                <option value="90000">até 90.000</option>
                                <option value="100000">até 100.000</option>
                                <option value="150000">até 150.000</option>
                                <option value="200000">até 200.000</option>
                                <option value="300000">até 300.000</option>
                                <option value="400000">até 400.000</option>
                                <option value="500000">até 500.000</option>
                                <option value="1000000">até 1 milhão </option>
                                <option value="2000000">até 2 milhões</option>
                              <option value="5000000">até 5 milhões</option>
                            </select>
                            </div>
                            <div class="col-xs-6 col-sm-2">
	<select name="dorms" id="dorms" class="sel-custom form-control">
                                <option value="0">Dormitórios</option>
                                <option value="0">Indiferente</option>
                                <option value="1">1 Dorms</option>
                                <option value="2">2 Dorms</option>
                                <option value="3">3 Dorms</option>
                                <option value="4">4 Dorms</option>
                                <option value="5">5 ou mais</option>
                            </select>
   

	</div>
		
	</div>
	<br/>
	<div class="row">
	<div class="col-xs-6 col-sm-2">
	 <select name="suites" id="suites" class="sel-custom form-control">
                                <option value="0">Suites...</option>
                                <option value="0">Indiferente</option>
                                <option value="1">1 Suite</option>
                                <option value="2">2 Suite</option>
                                <option value="3">3 Suite</option>
                                <option value="4">4 Suite</option>
                                <option value="5">5 ou mais</option>
                            </select>
	</div>                        
		<div class="col-xs-6 col-sm-2">
			<div class="form-group">
	<button type="submit" class="btn btn-block btn-primary" id="btn-busca">Pesquisar</button>
	</div>
			
			
		</div>
	</div>
	</form>
	</div>
	
</div>
</div>

</section><!-- end search -->
<hr>
<section class="banner_top">
	
		
			<div class="owl-carousel owl-theme slide">
					  <!--{loop:sl}-->
					  <!--{<a href="[baseUri]/imovel/sl.categoria_url/sl.sub_url/sl.item_id/">}-->
					  <!--{<div class="info_b">}-->
					  <!--{<h4>R$ sl.item_preco</h4>}-->
				<!--{<p class="tag_price">sl.categoria_title  <span class="sp" >sl.tipo_title</span> </h4>}-->
					  <!--{</div>}-->
					  <!--{<div class="figure_item"><img src="[baseUri]/thumb/sl.foto_url/1600/450/crop/"  alt="" title="sl.tipo_title em sl.categoria_title"></div>}-->
					  <!--{</a>}-->
					  <!--{end:sl}-->
					  
			</div>
					
</section> 


<section class="meio">
    <div class="container-fluid" style="background-color: #000; color: #fff; padding: 10px;">  
		<div class="container ">  
		<div class="venda">
		<h4 align="left"><i class="fas fa-search-plus"></i> Imóveis Destaque Venda</h4>
		</div>
        </div>
	</div>

    
    <div class="container init_card">
    <div class="row">
    
<!--{loop:i}-->
<!--{<div class="col-xs-5 col-sm-3">}-->
<!--{<div class="item">}-->
	<!--{<div class="fin">i.categoria_title</div>}-->
	<!--{<div class="ribbon">i.item_promo</div>}-->
	<!--{<a href="[baseUri]/imovel/i.categoria_url/i.sub_url/i.item_id/">}-->
	<!--{<div class="thumb"><img src="[baseUri]/thumb/i.foto_url/255/150/crop/" title="i.tipo_title em i.sub_title - i.categoria_title por i.item_preco"/></div>}-->
	<!--{</a>}-->
	<!--{<span class="info">}-->
	<!--{<span class="val">R$ i.item_preco</span>}-->
	<!--{<span class="cidade">i.item_finalidade</span>}-->
	<!--{</span>}-->
	<!--{<div class="cat_item">}-->
	<!--{<ul>}-->
	<!--{<li class="li_item" title="Dormitórios"><i class="fas fa-bed"></i><span class="letter"> i.item_dorm</span></li>}-->
	<!--{<li class="li_item" title="Banheiros"><i class="fas fa-shower"></i><span class="letter"> i.item_wc</span></li>}-->
	<!--{<li class="li_item" title="vagas"><i class="fas fa-car"></i><span class="letter"> i.item_vaga</span></li>}-->
	<!--{<li class="li_item" title="Área"><span class="letter" >área i.item_area <sup>m²</sup></span></li>}-->
	<!--{</ul>}-->
	<!--{</div>}-->
	<!--{<hr>}-->
	<!--{<div class="">}-->
	<!--{<?php
                        echo "<form method='POST'>";
                        echo "<input type='hidden' name='item_id_fav' value='[i.item_id]'>";
                        echo "<input type='hidden' name='add_tofav' value='carrinho'>";
?>}-->
	<!--{<span></span><span>#i.item_ref <?php echo "<span><button  type='submit' title='favoritos' value='Adicionar aos Favoritos'  class='fav btn_addfav fas fa-heart' onclick='atualiza'></span>"; ?>}-->
					<!--{<?php
                        echo "</form>";
                    

                    

                     

                    
                    if (!isset($_SESSION['fav_saves'])) {
                        $_SESSION['fav_saves'] = array();
                    }

                    if (isset($_POST['item_id_fav'])) {
                        $iditem = $_POST['item_id_fav'];
                    }

                    if (isset($_POST['add_tofav']) && $_POST['add_tofav'] == 'carrinho') {
                        
                        if (!isset($_SESSION['fav_saves'][$iditem])) {
                            $_SESSION['fav_saves'][$iditem] = 1;
                        }

                    }


                    ?>}-->
	<!--{}-->
	<!--{</div>}-->
<!--{</div>}-->
<!--{</div>}-->
<!--{end:i}-->
  </div>
   </div>   
    <div class="container">
                <div class="col-lg-12 pagination text-center">
                    [pages]
                </div>			
            </div>
  
  <div class="container-fluid" style="background-color: #000; color: #fff; padding: 10px;">
  		<div class="container">  
		<div class="aluguel">
		<h4 align="left"><i class="fas fa-search-plus"></i> Imóveis Destaque Aluguel</h4>
		</div>
        </div>
    </div>
    
    <div class="container">
    <div class="row">
    <!--{loop:i}-->
<!--{<div class="col-xs-5 col-sm-3">}-->
<!--{<div class="item">}-->
	<!--{<div class="fin">i.tipo_title</div>}-->
	<!--{<a href="[baseUri]/imovel/i.categoria_url/i.sub_url/i.item_id/">}-->
	<!--{<div class="thumb"><img class="img-responsive" src="[baseUri]/thumb/i.foto_url/255/150/crop/" title="i.tipo_title em i.sub_title - i.categoria_title por i.item_preco"/></div>}-->
	<!--{</a>}-->
	<!--{<span class="info">}-->
	<!--{<span class="cidade">i.categoria_title</span>}-->
	<!--{<span class="val">R$ i.item_preco</span>}-->
	<!--{</span>}-->
	<!--{<div class="cat_item">}-->
	<!--{<ul>}-->
	<!--{<li class="li_item" title="Dormitórios"><i class="fas fa-bed"></i><span class="letter"> i.item_dorm</span></li>}-->
	<!--{<li class="li_item" title="vagas"><i class="fas fa-car"></i><span class="letter"> i.item_vaga</span></li>}-->
	<!--{<li class="li_item" title="Banheiros"><i class="fas fa-shower"></i><span class="letter"> i.item_wc</span></li>}-->
	<!--{<li class="li_item" title="Área"><span class="letter" >área i.item_area <sup>m²</sup></span></li>}-->
	<!--{</ul>}-->
	<!--{</div>}-->
	<!--{<hr>}-->
	<!--{<div class="">}-->
	<!--{<?php
                        echo "<form method='POST'>";
                        echo "<input type='hidden' name='item_id_fav' value='[i.item_id]'>";
                        echo "<input type='hidden' name='add_tofav' value='carrinho'>";
?>}-->
	<!--{<span></span><span>#i.item_ref <?php echo "<span><button type='submit' title='favoritos' value='Adicionar aos Favoritos'  class='btn_addfav fas fa-star' onclick='atualiza'></span>"; ?>}-->
					<!--{<?php
                        echo "</form>";
                    

                    

                     

                    
                    if (!isset($_SESSION['fav_saves'])) {
                        $_SESSION['fav_saves'] = array();
                    }

                    if (isset($_POST['item_id_fav'])) {
                        $iditem = $_POST['item_id_fav'];
                    }

                    if (isset($_POST['add_tofav']) && $_POST['add_tofav'] == 'carrinho') {
                        
                        if (!isset($_SESSION['fav_saves'][$iditem])) {
                            $_SESSION['fav_saves'][$iditem] = 1;
                        }

                    }


                    ?>}-->
	<!--{}-->
	<!--{</div>}-->
<!--{</div>}-->
<!--{</div>}-->
<!--{end:i}-->
    </div>
   </div>
   
</section>
</div><!-- end main -->
<div class="footer">
	<div class="container">
		<div class="row">
		
	<div class="col-sm-2 col-md-4">
                <h3>Sc Web Imóveis</h3>
                <hr/>
                <ul class="foo">
                    <li><a class="foo" href="http://localhost/com/pagina/sobre/">Sobre Nós</a></li>
                    <li><a href="http://localhost/com/pagina/links/">Links Úteis</a></li>
                    <li><a href="http://localhost/com/pagina/contato/">Fale Conosco</a></li>
                    <li><a href="#topo" class="go-top">Voltar ao Topo</a></li>
                </ul>
            </div>                        
            <div class="col-sm-2 col-md-4">
                <h3>Entre em Contato</h3>
                <hr/>
                <ul class="foo">
                    <li><i class="fas fa-phone-square"></i> [cliente_telefone1]</li>
                    <li><i class="fas fa-phone-square"></i> [cliente_telefone2]</li>
                    <li><i class="fas fa-phone-square"></i> [cliente_telefone3]</li>
                    <li> <i class="fas fa-envelope"></i> [smtp_username]</li>
                </ul>
            </div>                                        
            <div class="col-sm-2 col-md-4">
                <h3>Onde Estamos</h3>
                <hr/>
                <ul class="foo">
                   
                   <li><i class="fas fa-map-marker"></i> [cliente_rua], Nº [cliente_num], [cliente_bairro] - [cliente_cidade] / [cliente_uf] </li>
                   <li ><i class="fas fa-map"></i><a href="[baseUri]/pagina/contato/"> Exibir Mapa de nossa localização</a></li>
                   <li>Creci: 00000/SC </li>
                </ul>
            </div>   
	
	</div>
	<div >
		<p align="center">
		<a href="#"></a></p>
	</div>
		<div align="center" class="br7 Desenvolvimento"> Desenvolvido by <a href="#"> Br7 Web</a></div>
	</div>
	</div>
</div><!-- end footer -->


 
    
	
    <script src="js/jquery/jquery-1.8.3.min.js" type="text/javascript"></script>
    <script src="js/jquery/bootstrap/bootstrap.min.js"></script>
    <script src="js/public/main.js" type="text/javascript"></script>
    <script src="../app/css/public/OwlCarousel2-2.3.4/dist/owl.carousel.min.js"></script>
    
	
<!--[if gt IE 8]>
<script type="text/javascript" src="assets/js/ie.js"></script>
<![endif]-->

      <script>
    var owl = $('.owl-carousel');
	owl.owlCarousel({
    items:1,
    loop:true,
    margin:10,
    autoplay:true,
	nav: true,
	dots: true,	
    autoplayTimeout:4000,
    autoplayHoverPause:true
		
});
$('.play').on('click',function(){
    owl.trigger('play.owl.autoplay',[1000])
})
$('.stop').on('click',function(){
    owl.trigger('stop.owl.autoplay')
})
</script>
 <script>
	   function atualiza(){
    window.location.href = 'index.html';
}</script>
  </body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, Rzorr disse:

[...]teria um jeito de fazer isso, sem dar o refresh[...]

 

Sim, via AJAX: 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
×

Informação importante

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