xaiborweb
Dseda
Programador
No recomendado
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
hola estoy modificando un script codeigniter, que tiene un sistema de rating que guarda los datos en una tabla con muchas columnas así imagen pero necesito que solo guarde en base de datos dos columnas: rating y el numero de votos, ademas para evitar que voten mas de una vez pero sin guardar la ip del usuario o algún otro dato en db me preguntaba si se podría hacer con las cookies del navegador del usuario así como funcionan el mensaje de política de cookies o de alguna otra manera.
pero no e logrado modificarlo para como lo necesito, comparto el code del rating actual por si alguien me puede dar una mano muchas gracias 😉
jquery
vista
controller
petición model
pero no e logrado modificarlo para como lo necesito, comparto el code del rating actual por si alguien me puede dar una mano muchas gracias 😉
jquery
HTML:
$('#tvglu-rating').on('rating.change', function(event, value, caption) {
var id = $('#id-source').val();
var type = $('#type-source').val();
var post_data = {
'vote': value,
'id': id,
'type': type
};
$.ajax({
type: "POST",
url: "/user/vote",
data: post_data,
success: function(data) {
// return success
if (data.length > 0) {
var response = JSON.parse(data);
$('#tvglu-rating-num').html(response.rating);
$('#tvglu-rating-num1').html(response.rating);
$('#tvglu-rating-votes').html(response.votes);
var f = '<div class="toast toast-success"><button class="toast-close-button" role="button">×</button><div class="toast-message"><strong>' + response.msg + '</strong></div></div>';
$("#toast-container").html(f), $("#toast-container").fadeIn("slow").show(), setTimeout(function() {
$("#toast-container").fadeOut("slow").hide()
}, 3e3)
}
}
});
})
PHP:
<li>
<div class="rating"><?php if($rating == 0){ echo $p->tmdb_rating; }else{ echo $rating; } ?></div>
<div class="number">
<input type="hidden" id="id-source" value="<?=$p->id?>">
<input type="hidden" id="type-source" value="2">
<input id="tvglu-rating" value="<?php if($rating == 0){ echo $p->tmdb_rating; }else{ echo $rating; } ?>" class="rating-loading">
<div class="rating-info">TVGLU: <span id="tvglu-rating-num1" itemprop="ratingValue"><?php if($rating == 0){ echo $p->tmdb_rating; }else{ echo $rating; } ?></span> / <span itemprop="bestRating">10</span> <span id="tvglu-rating-votes" itemprop="ratingCount"><?=$votes?></span> <?=$this->lang->line('votes')?></div>
</li>
PHP:
$votes = $this->movies_model->getvotes($id,2); // + voto
if(!empty($votes)){ // rating
$s1 = $votes[0]->star_1;
$s2 = $votes[0]->star_2;
$s3 = $votes[0]->star_3;
$s4 = $votes[0]->star_4;
$s5 = $votes[0]->star_5;
$s6 = $votes[0]->star_6;
$s7 = $votes[0]->star_7;
$s8 = $votes[0]->star_8;
$s9 = $votes[0]->star_9;
$s10 = $votes[0]->star_10;
$rating = (1 * $s1 + 2 * $s2 + 3 * $s3 + 4 * $s4 + 5 * $s5 + 6 * $s6 + 7 * $s7 + 8 * $s8 + 9 * $s9 + 10 * $s10) / ($s1 + $s2 + $s3 + $s4 + $s5 + $s6 + $s7 + $s8 + $s9 + $s10);
$data['votes'] = ($s1 + $s2 + $s3 + $s4 + $s5 + $s6 + $s7 + $s8 + $s9 + $s10);
$data['rating'] = round($rating,1);
}else{
$data['votes'] = 0;
$data['rating'] = 0;
}
public function getvotes($id,$type)
{
return $this->db
->select('*')
->from('votes')
->where('id_source',$id)
->where('type',$type)
->get()
->result();
}
Última edición:

