Jump to content
Sign in to follow this  
leonardo2334

Star Rating PHP JQUERY MYSQL

Recommended Posts

boa tarde pessoal preciso de uma ajuda consegui fazer o sistema de star rating porem eu queria que o voto fosse mostrado na tela ou seja guardado na estrela para ela ficar preenchida conforme os votos alguém poderia me ajuda aqui esta meu código:

essa e a pagina que estão as estrelas:

 

 

<script>
$(document).ready(function () {
$(".vote #stars").click(function () {

$.post('rating.php',{rate:$(this).val()},function(d){
if(d>0)
{
alert('Seu voto Ja foi confirmado');
}else{
alert('Obrigado por Votar');
}
});
$(this).attr("checked");
});
});
</script>
<div class="vote">
<label>
<input id="stars" type="radio" name="fb" value="1" />
<i class="fa" id="fa"></i>
</label>
<label>
<input id="stars" type="radio" name="fb" value="2" />
<i class="fa" id="fa"></i>
</label>
<label>
<input id="stars" type="radio" name="fb" value="3" />
<i class="fa" id="fa"></i>
</label>
<label>
<input id="stars" type="radio" name="fb" value="4" />
<i class="fa" id="fa"></i>
</label>
<label>
<input id="stars" type="radio" name="fb" value="5" />
<i class="fa" id="fa"></i>
</label>
</div>

 

aqui o script para o hover nas estrelas e marcar elas como actives

 

 

$('.vote label i.fa').on('click mouseover',function(){
// remove classe ativa de todas as estrelas
$('.vote label i.fa').removeClass('active');
// pegar o valor do input da estrela clicada
var val = $(this).prev('input').val();
//percorrer todas as estrelas
$('.vote label i.fa').each(function(){
/* checar de o valor clicado é menor ou igual do input atual
* se sim, adicionar classe active
*/
var $input = $(this).prev('input');
if($input.val() <= val){
$(this).addClass('active');
}
});
$("#voto").html(val); // somente para teste
});
//Ao sair da div vote
$('.vote').mouseleave(function(){
//pegar o valor clicado
var val = $(this).find('input:checked').val();
//se nenhum foi clicado remover classe de todos
if(val == undefined ){
$('.vote label i.fa').removeClass('active');
} else { 
//percorrer todas as estrelas
$('.vote label i.fa').each(function(){
/* Testar o input atual do laço com o valor clicado
* se maior, remover classe, senão adicionar classe
*/
var $input = $(this).prev('input');
if($input.val() > val){
$(this).removeClass('active');
} else {
$(this).addClass('active');
}
});
}
$("#voto").html(val); // somente para teste
});

 

e esta e a pagina rating em php eu queria que o usuário pudesse votar mais de uma vez nela mas não estou conseguindo obs. essa parte do banco em php eu fiz seguindo um tutorial em inglês e estou tentando fazer ele não bloquear o voto para somente uma pessoa se alguém souber o erro aqui e me ajudar agradeço também.

 

 

<?php
$ipaddress = md5($_SERVER['REMOTE_ADDR']); // here I am taking IP as UniqueID but you can have user_id from Database or SESSION

$servername = "localhost"; // Server details
$username = "root";
$password = "";
$dbname = "filmes";


$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Unable to connect Server: " . $conn->connect_error);
}

if (isset($_POST['rate']) && !empty($_POST['rate'])) {

$rate = $conn->real_escape_string($_POST['rate']);
// check if user has already rated
$sql = "SELECT `id` FROM `tbl_rating` WHERE `user_id`='" . $ipaddress . "'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
if ($result->num_rows > 0) {
echo $row['id'];
} else {

$sql = "INSERT INTO `tbl_rating` ( `rate`, `user_id`) VALUES ('" . $rate . "', '" . $ipaddress . "'); ";
if (mysqli_query($conn, $sql)) {
echo "0";
}
}
}
$conn->close();
?>



Edited by Vinicius Ianni
Adicionar BBCode

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Similar Content

    • By EvertonFD
      Bom dia estou fazendo u  ranking onde deve ser selecionado alguns critérios de desempate exemplo:
      Caso os pontos sejam iguais deve ser decidido pelos gols, só pra ressaltar estou aprendendo php então se tiver uma maneira melhor de fazer isso estou disposto a aprender, segue o codigo que estou usando:
       <?php
              $result_times = "  SELECT * FROM  times    WHERE grupos='4'  
                                                      
                                                      ORDER BY pontos    DESC";
              $resultado_times = mysqli_query( $conn, $result_times );
              while ( $row_times = mysqli_fetch_assoc( $resultado_times ) ) {
                  ?>
          
          <div class="row p-1 bg-light p-1 mt-1 ">
              <div class="col-md-3 ">
                  <img src="assets/images/times/<?php echo $row_times['id']; ?>/<?php echo $row_times['logo_time']; ?>" width="60">
                  <span>
                      <?php echo $row_times['nome']; ?>
                  </span>
              </div>
              <div class="col-md-1 col-4 align-self-center  border">
                  V- <?php echo $row_times['vitoria']; ?>
              </div>
              <div class="col-md-1 col-4 align-self-center border">E-<?php echo $row_times['empate']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">D-<?php echo $row_times['derrota']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">GF-<?php echo $row_times['gf']; ?></div>
              <div class="col-md-2 col-4 align-self-center border">GC-<?php echo $row_times['gc']; ?></div>
              <div class="col-md-1 col-4 align-self-center border">P-<?php echo $row_times['pontos']; ?></div>
          </div>
                  <!---->
                  <?php
              }
              ?>
            
          
    • By Matheus_Moura
      Boa tarde.
      Estou fazendo uma aplicação PHP em um PC Linux com Lubuntu como SO, para conexão com um banco de dados ORACLE 11g. Porém quando utilizo a função oci_connect ou qualquer outra função para oracle é retornado uma mensagem informando que estão indefenidas.
      Estou utilizando o XAMPP como servidor e fiz a configuração no caminho opt/lampp/etc/php.ini retirando o ; tanto no php_oci8.dll como também na php_oracle.dll, porém não obtive sucesso. Coloquei dentro da pasta opt também o instantclient já descompactado e utilizei o PECL para tentar ativar as OCI, porém mesmo assim ainda não consegui sucesso. Alguém teria alguma outra sugestão ?
       
      Att,
      Matheus Moura
    • By MacCrazy
      Eu tenho 1 código que seleciona um id do banco e substitui em outra tela, são 6 botões com essa mesma função de escolher e substituir, porem o mesmo id não pode ser selecionado duas vezes.  Se alguem puder me ajudar ficaria grato
       
      ///// ONDE É SUBSTITUIDO ///
       
      if(isset($_SESSION["jogador1"])){       foreach ($_SESSION["jogador1"] as $item){         ?>                 <div >                 <img width="100px" height="100px" src="<?php echo $item["image"]; ?>">     <p>Nickname:  <?php echo $item["name"]; ?></p>       </div>                      <a href="index.php?action=remove&id=<?php echo $item["id"]; ?>" class="btnRemoveAction">                 <img src="icon-delete.png" alt="Remove Item" /></a>                 <?php         }         ?>   <?php }  else  {     echo '<a  href="mercado.php?id=btn1"><button>Escalar</button></a>'; ?>  
      /////// ONDE RECEBE OS DADOS DO BANCO
      If($id == "btn1") {     echo '<div id="product-grid">';          $escalacao = $db_handle->runQuery("SELECT * FROM tb_jogador ORDER BY id ASC");     if (!empty($escalacao)) {                   foreach($escalacao as $key=>$value){         echo '         <div class="product-item">             <form method="post" action="index.php?action=add1&id='. $escalacao[$key]["id"].'">             <div class="product-image"><img src="'.  $escalacao[$key]["image"].'"></div>             <div class="product-tile-footer">             <div class="product-title">'.$escalacao[$key]["name"].'</div>                  <div  class="cart-action"><input style="display:none" type="text" class="product-quantity" name="quantity" value="1" size="2" />             <input type="submit" value="Escalar" class="btnAddAction" />               </div>             </div>             </form>         </div>           ';         }     } }
    • By Sapinn
      Salve salve.
      Mas uma dúvida minha aqui É o seguinte tenho uma pagina que tem um texto de um usuario e eu gostaria de imprimir esta página usando javascript. Sei que usando o window.print() da pra imprimir o problema é que não fica organizado. Então eu gostaria de imprimir outra pagina na qual eu organizaria melhor o  texto e outra informações do usuario para impressão. Alguém tem algum codigo ae que faça isso?
       
      Desde já agradeço.
    • By 1stVieira
      Olá a todos! Estou com uma dúvida em relação a realizar um cadastro no banco de dados (SQL) a partir de um formulário de um projeto.
       
      Possuo duas tabelas, Categoria e Itens, na qual a tabela Itens possui uma FOREIGN KEY com a tabela Categorias.
       
      Na página de Categorias consigo realizar os cadastro das mesmas sem problemas e elas estão sendo aplicadas em um SELECT na página de Cadastro dos Itens. O problema está sendo cadastrar os Itens no Banco de Dados. Estou utilizando PHP Orientado à Objetos
       
      Página de Adição de Pedidos
      <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Adição de Item</title> </head> <body> <div> <a href="modificarCardapio.php" class="link_home"><i class="fa fa-home"></i></a> </div> <div> <div> <h1>Adicionar Itens ao Cardápio</h1> </div> <div> <form action="#" method="POST"> <label>Categoria:</label> <select name="selecionarcat"> <option selected>Selecione a Categoria</option> <?php require_once"../models/conexao.class.php"; require_once"../models/categoriaDAO.class.php"; $catDAO = new categoriaDAO(); $ret = $catDAO->buscarTodasCategorias(); if(count($ret) > 0){ foreach ($ret as $dado){ echo "<option value='".$dado->idcategoria."'>".$dado->descritivo."</option>"; } } ?> </select> <br><br> <a href="addcategoria.php"><input type="button" value="Adicionar nova Categoria"></a> <p> <label>Nome do Item: </label> <input type="text" name="nomeproduto"> </p> <p> <label>Descrição: </label> <input type="text" name="descricao"> </p> <p> <label>Preço: </label> <input type="text" name="preco"> </p> <br> <input type="submit" value="Adicionar"> </form> </div> </div> </body> </html> <?php if($_POST){ require_once "../models/conexao.class.php"; require_once "../models/item.class.php"; require_once "../models/itemDAO.class.php"; $item = new item(null, $_POST["nomeproduto"], $_POST["descricao"], null, $_POST["preco"]); $itemDAO = new itemDAO(); $itemDAO->adicionar($item); header("Location:modificarCardapio.php"); } ?> ItemDAO.php
      <?php class itemDAO extends conexao{ function __construct(){ parent:: __construct(); } function adicionar($item){ $sql="INSERT INTO itens (nomeprod, descricao, preco, id_categoria) VALUES(?, ?, ?, ?)"; try{ $stm = $this->db->prepare($sql); $stm->bindValue(1, $item->getNomeproduto()); $stm->bindValue(2, $item->getDescricao()); $stm->bindValue(3, $item->getPreco()); $stm->bindValue(4, $item->getCategoria()); $stm->execute(); $this->db = null; } catch(Exception $e){ die($e->getMessage()); } } ?> Item.class.php
      <?php class item{ private $iditem; private $nomeproduto; private $descricao; private $categoria; private $preco; function __construct($iditem, $nomeproduto, $descricao, $categoria, $preco){ $this->iditem=$iditem; $this->nomeproduto=$nomeproduto; $this->descricao=$descricao; $this->categoria=$categoria; $this->preco=$preco; } function getIditem(){ return $this->iditem; } function getNomeproduto(){ return $this->nomeproduto; } function getDescricao(){ return $this->descricao; } function getCategoria(){ return $this->categoria; } function getPreco(){ return $this->preco; } function setIditem($iditem){ $this->iditem=$iditem; } function setNomeproduto($nomeproduto){ $this->nomeproduto=$nomeproduto; } function setDescricao($descricao){ $this->descricao=$descricao; } function setCategoria($categoria){ $this->categoria=$categoria; } function setPreco($preco){ $this->preco=$preco; } } ?>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.