Autor Tema: [Tutorial] Rating de estrellas  (Leído 1340 veces)

Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
[Tutorial] Rating de estrellas
« en: 27 de Junio de 2010, 13:00:23 pm »
Bueno, supongo que habréis visto sitios donde hay cinco estrellas y tu votas ¿no?.
Vamos a hacer un sistema igual idea por mi. (No me quitéis derechos de autor)

Empezemos:
Creamos el archivo con cualquier nombre yo le puse index.php xD, sigamos...

Tenemos que hacer la conexión a la base de datos:

Código: [Seleccionar]
<?php
mysql_connect
("mi_servidor","mi_usuario","mi_contraseña");
mysql_select_db("mi_base_de_datos");
?>

Y ejecutamos un consulta SQL

Código: [Seleccionar]
CREATE TABLE IF NOT EXISTS `rating` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `voto` varchar(1) NOT NULL,
  `ip` text NOT NULL,
  `usuario` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Sigo explicando el código...

Teniendo ya nuestra conexión a la base de datos comenzamos
Código: [Seleccionar]
<?php
mysql_connect
("mi_servidor","mi_usuario","mi_contraseña");
mysql_select_db("mi_base_de_datos");

if (
$_GET[&#39;v&#39;] <= 4 && $_GET[&#39;v&#39;] >= 0 && is_numeric($_GET[&#39;v&#39;])) // Comprobamos las variables del GET que sean números del 0 al 4
{
$votar $_GET[&#39;v&#39;] + 1; // Sumamos un valor a nuestro GET
mysql_query("INSERT INTO `rating` (`id`, `voto`, `ip`, `usuario`) VALUES (NULL, &#39;".$votar."&#39;, &#39;".$_SERVER[&#39;REMOTE_ADDR&#39;]."&#39;, &#39;1&#39;);"); // Insertamos los datos obtenidos
echo "Has votado correctamente<br>"// Mostramos un mensaje
}
$QryRating mysql_query("SELECT * FROM rating WHERE usuario = &#39;1&#39;"); // Seleccionamos un usuario a votar
while ($rate mysql_fetch_assoc($QryRating)) // Hacemos un while
{
$filas mysql_num_rows($QryRating); // Contamos las filas del usuario
$votos += $rate[&#39;voto&#39;]; // Hacemos una suma de todos los votos
if ($_SERVER[&#39;REMOTE_ADDR&#39;] == $rate[&#39;ip&#39;]) // Comprobamos que la ip no exista
{
$bloqueado True// Ponemos a $bloqueado igual a True
}
}
if (
$bloqueado// Si $bloqueado es igual a True
{
echo "Ya has votado aquí"// Si es así mostramos un mensaje
} else { // Si $bloqueado no es igual a true
$total_votos = @round($votos/$filas); // Redondeamos los votos entre las filas
if ($total_votos 0// Si $total_votos es mayor que cero mostramos lo siguiente
{
for ($i 0$i $total_votos$i++) // Si $i es menor que $total_votos mostramos lo siquiente
{
?>

<img id="<?php echo $i?>" src="estrellas.png" onmouseover="this.src='estrellaso.png'" onmouseout="this.src='estrellas.png'" OnClick="location.href='?v=<?php echo $i?>'">
<?php
$resto $i// El resto de números lo metemos en la variable
}
for ($u $resto+1$u 5$u++) // Si $u es menor que cinco mostramos
{
?>

<img id="<?php echo $u?>" src="estrella.png" onmouseover="this.src='estrellaso.png'" onmouseout="this.src='estrella.png'" OnClick="location.href='?v=<?php echo $u?>'">
<?php
}
} else { // Si $total votos es igual a cero
for ($e 0$e 5$e++) // Si $e es menor que 5 mostramos
{
?>

<img id="<?php echo $e?>" src="estrella.png" onmouseover="this.src='estrellaso.png'" onmouseout="this.src='estrella.png'" OnClick="location.href='?v=<?php echo $e?>'">
<?php
}
}
}

Saludos, esto lo podéis modificar a vuestro gusto.

Comunidad PHPeros

[Tutorial] Rating de estrellas
« en: 27 de Junio de 2010, 13:00:23 pm »

Desconectado iivan

  • PHPerit@
  • *
  • Mensajes: 20
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[Tutorial] Rating de estrellas
« Respuesta #1 en: 16 de Julio de 2010, 17:27:14 pm »
Un demo no iria nada mal (:

demo/vista previa

Desconectado chihue

  • PHPero Master
  • ******
  • Mensajes: 1.118
  • Karma: 43
  • Sexo: Masculino
  • 8 dias
    • Ver Perfil
    • Minichat con todo incluido
Re:[Tutorial] Rating de estrellas
« Respuesta #2 en: 16 de Julio de 2010, 17:41:23 pm »
Un demo no iria nada mal (:

demo/vista previa

La demo la montas en tu server

Muy bien pero pon que tienen que tener una imagen llamada Estrella.png i estrellaso.png podeis utilizar los dell foro y i para los n0013sen estol pon que hay que modificar
<?php
mysql_connect("mi_servidor","mi_usuario","mi_contraseña");
mysql_select_db("mi_base_de_datos");
?>

que en un mc seria como el conectar.php

Desconectado SoyJoaquin.

  • PHPero Master
  • ******
  • Mensajes: 2.737
  • Karma: 131
  • Sexo: Masculino
  • ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ส้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้้ Problem?
    • Ver Perfil
    • IsoMap
Re:[Tutorial] Rating de estrellas
« Respuesta #3 en: 19 de Julio de 2010, 22:33:20 pm »
La demo la montas en tu server

Muy bien pero pon que tienen que tener una imagen llamada Estrella.png i estrellaso.png podeis utilizar los dell foro y i para los n0013sen estol pon que hay que modificar
<?php
mysql_connect("mi_servidor","mi_usuario","mi_contraseña");
mysql_select_db("mi_base_de_datos");
?>

que en un mc seria como el conectar.php

Esa conexión esta de "Anónima" Por que se supone que ya en si el sistema de noticias trae su conexión a la SQL.
¿Para que ponerla 2 veses?
Saludos.
Twitter: @JoakoM010



Desconectado javipilo

  • PHPero Experto
  • *****
  • Mensajes: 975
  • Karma: 31
  • Sexo: Masculino
    • Ver Perfil
Re:[Tutorial] Rating de estrellas
« Respuesta #4 en: 20 de Julio de 2010, 21:54:48 pm »
La primera era de ejemplo y la segunda aplicada al código.

Saludos