Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/03/2010, 21:13
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 654
Antigüedad: 19 años, 5 meses
Puntos: 6
Respuesta: Ranking en PHP+SQL

Cita:
Iniciado por enlinea777 Ver Mensaje
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";    
        }
    }
?>


SI usas de esta forma
Código PHP:
//
// aqui se maneja por id y si te das cuenta esta puesto solo un numero 1 no trabaja con id real 
$result mysql_query("SELECT id,votos,media FROM rank where id=1",$link); 

// entonces seria correcto de esta forma
// aqui si funciona por cada id seleccionado
$result mysql_query("SELECT id,votos,media FROM rank where id='$id'",$link); 

//
// y aqui nose donde relacionas el "ui"
// 
// creo que deberia leer el id para mostrarte el id de cada foto 
// ambos id estan relacionados si voto el id 1 en la tabla rank el id 1 sera uno
// si voto el id 2 en la tabla rank aparece dos eso es obvio
//
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>';

//
// como te digo de la forma como esta funciona si esta con /index.php
// pero yo estoy usando en cada foto seleccionado
// ejemplo
// foto.php?id=1