Archivo css (rank.css)
Código HTML:
.rank ul { list-style: none; margin: 3px; padding: 0px; width: 125px; height: 25px; position: relative; background: url(rating.gif) top left repeat-x; margin-left:0px; } .rank li { padding: 0px; margin: 0px; float: left; } .rank li.current-rating { background: url(rating.gif) left bottom; position: absolute; height: 25px; display: block; text-indent: -9000px; z-index: 1; } .rank li a { display: block; width: 25px; height: 25px; text-decoration: none; text-indent: -9000px; z-index: 20; position: absolute; padding: 0px; background-image: none; } .rank li a:hover { background: url(rating.gif) left center; z-index: 1; left: 0px; } .rank a.star-1 {left: 0px;} .rank a.star-1:hover {width: 25px;} .rank a.star-2 {left: 25px;} .rank a.star-2:hover {width: 50px;} .rank a.star-3 {left: 50px;} .rank a.star-3:hover {width: 75px;} .rank a.star-4 {left: 75px;} .rank a.star-4:hover {width: 100px;} .rank a.star-5 {left: 100px;} .rank a.star-5:hover {width: 125px;}
Código HTML:
CREATE TABLE `votos_usuarios` ( `id` INT NOT NULL default '0', `ip` char(15) NOT NULL default '', `dataCreate` date NOT NULL default '0000-00-00' ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE `rank` ( `id` INT NOT NULL default '0', `media` FLOAT NOT NULL default '0', `votos` INT NOT NULL default '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Código PHP:
<?php
//funcion para conectar con la base de datos
function conectar(){
// Conexión a la base de datos
$dbhost='localhost';
$dbusername='user'; //nombre del usuario
$dbuserpass='clave'; //password o contraseña del usuario
$dbname='myDB';//nombre de la base de datos
$link = mysql_connect($dbhost, $dbusername,$dbuserpass);
mysql_select_db($dbname, $link);
return $link;
}
$id = $_GET['id_pagina'];//pagina, apartado o noticia que se quiere votar
if($id!=""){
$link = conectar();//conectamos a la base de datos
$voto = $_GET['v'];//voto del usuario
//obtenemos la IP del usuario
if($_SERVER){
if($_SERVER[HTTP_X_FORWARDED_FOR]){
$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
}elseif($_SERVER["HTTP_CLIENT_IP"]){
$realip = $_SERVER["HTTP_CLIENT_IP"];
}else{
$realip = $_SERVER["REMOTE_ADDR"];
}
}else{
if(getenv( "HTTP_X_FORWARDED_FOR")){
$realip = getenv( "HTTP_X_FORWARDED_FOR");
}elseif(getenv( "HTTP_CLIENT_IP")){
$realip = getenv( "HTTP_CLIENT_IP" );
}else{
$realip = getenv( "REMOTE_ADDR" );
}
}
$fecha = date('Y-m-d');
//actualizamos la tabla de votos realizadas por los usuarios y borramos lo que sean del dia anterior
$result = mysql_query("DELETE FROM votos_usuarios WHERE dataCreate <> '".$fecha."'",$link);
//comprobamos que este usuario ya no haya realizado un voto (identificacion por IP)
$result = mysql_query("SELECT *FROM votos_usuarios WHERE ip = '".$realip."' and id = $id",$link);
$row = mysql_fetch_row($result);
//el usuario no ha votado para este apartado
if($row[0]==""){
$result = mysql_query("SELECT votos,media FROM ".$tabla[$tipo]." WHERE id =$id",$link);
$row = mysql_fetch_row($result);
$auxmedia = $row[1];
$votos =$row[0] + 1;
$media = (($row[0] * $auxmedia) + $voto)/ $votos;
//actualizamos el voto
$result = mysql_query("UPDATE rank SET votos= $votos, media= $media WHERE id= $id",$link);
mysql_query("INSERT INTO rank(id,ip,dataCreate)VALUES($id,'".$realip."','".$fecha."')",$link);
echo "voto realizado";
}else{ //el usuario ya ha votado para este apartado
echo "Usted ya ha votado";
}
}
?>
Código HTML:
function objetoAjax(){ var xmlhttp=false; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }catch(E){ xmlhttp = false; } } if(!xmlhttp && typeof XMLHttpRequest!='undefined'){ xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function sendDatos(datos, resultado,borrar){ divResultado = document.getElementById(resultado); if(divResultado.innerHTML=='' || borrar){ ajax = objetoAjax(); if(datos!=""){ divResultado.innerHTML = "<span style='color:#ff0000;'>Loading...</span>"; ajax.open("GET", datos); ajax.onreadystatechange=function(){ if(ajax.readyState==4){ divResultado.innerHTML = ajax.responseText } } ajax.send(null); }else divResultado.innerHTML =""; } }
(index.php)
Código PHP:
<?php
include("rank/rank.php");
$link = conectar();
$result = mysql_query("SELECT id,votos,media FROM rank where id=1",$link);
$row = mysql_fetch_row($result);
if($row){
echo '<div class="rank">';
echo '<ul>';
echo '<li class="current-rating" style="width:'.($row[2] * 25).'px;">Currently '.$row[2].'/5 Stars.</li>';
echo '<li><a href="javascript:sendDatos(\'rank/rank.php?id='.$row[0].'&v=1\',\'page'.$row[0].'\',true)" title="dar 1 estrella de 5" class="star-1">1</a></li>';
echo '<li><a href="javascript:sendDatos(\'rank/rank.php?id='.$row[0].'&v=2\',\'page'.$row[0].'\',true)" title="dar 2 estrellas de 5" class="star-2">2</a></li>';
echo '<li><a href="javascript:sendDatos(\'rank/rank.php?id='.$row[0].'&v=3\',\'page'.$row[0].'\',true)" title="dar 3 estrellas de 5" class="star-3">3</a></li>';
echo '<li><a href="javascript:sendDatos(\'rank/rank.php?id='.$row[0].'&v=4\',\'page'.$row[0].'\',true)" title="dar 4 estrellas de 5" class="star-4">4</a></li>';
echo '<li><a href="javascript:sendDatos(\'rank/rank.php?id='.$row[0].'&v=5\',\'page'.$row[0].'\',true)" title="dar 5 estrellas de 5" class="star-5">5</a></li>';
echo '</ul>';
echo 'Rated <strong>'.$row[2].'</strong>/5 estrellas ('.$row[1].' votos)';
echo '<span id="page'.$row[0].'" style="color:#ff0000;"></span>';
echo '</div>';
}
?>
Descargar
Mi pregunta es la siguiente
Ejemplo:
Tengo en mi web donde pasan por el catalogo hacen clic a la foto que le agrada y hacer el voto, "fotos.php" ejemplo:
misfotosweb.com/fotos.php?id=1
y cuando quiero hacer una votacion de la foto me dice que ya he votado /fotos.php?id=1
como hago para que cuando yo haga clic a la estrella recien pueda votar
Algo asi sale
aqui esta el ejemplo pero esta con rank.php
sistema de votos
pero yo estoy usando de esta forma:
misfotosweb.com/fotos.php?id=1