06/03/2010, 21:13
|
| | Fecha de Ingreso: noviembre-2004 Ubicación: NULL
Mensajes: 655
Antigüedad: 20 años Puntos: 6 | |
Respuesta: Ranking en PHP+SQL Cita:
Iniciado por enlinea777 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
|