Ver Mensaje Individual
  #7 (permalink)  
Antiguo 06/03/2010, 20:19
Avatar de enlinea777
enlinea777
 
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 16 años, 5 meses
Puntos: 127
Respuesta: Ranking en PHP+SQL

ok el error esta en que no has visto todo el codigo.
lo mejor es que cambies el nombre de la variable de la foto por otro que ni sea id por que este esta por defecto para el ranqueador, o tambien podrias cambiar el rank.php donde recoge las veriables por id u cambiarlo por uid por ejemplo y a las estrellas osea a los link de la pagina index tambien cambiarle el para metro id por uid.
algo asi :

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?uid='.$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?uid='.$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?uid='.$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?uid='.$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?uid='.$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>';
        }
    
?>
rank.php

Código PHP:
<?php
include('conec.php');
    
$uid $_GET['uid'];//pagina, apartado o noticia que se quiere votar
    
    
if($uid!=""){
        
$voto $_GET['v'];//voto del usuario
        
$link conectar();//conectamos a la base de datos            
        
        //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 = $uid",$link);                                
        
$row mysql_fetch_row($result);
        
        
//el usuario no ha votado para este apartado
        
if($row[0]==""){    
            
$result mysql_query("SELECT votos,media FROM rank WHERE id =$uid",$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= $uid",$link);                
            
mysql_query("INSERT INTO votos_usuarios(id,ip,dataCreate)VALUES($uid,'".$realip."','".$fecha."')",$link);            
            echo 
"voto realizado";
        }else{ 
//el usuario ya ha votado para este apartado
            
echo "Usted ya ha votado";    
        }
    }
?>