Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Valoraciones de los usuarios en PHP


Sistema creado en PHP y MySQL para implementar la posibilidad de que los usuarios puedan votar una página web.


23/5/05 - El proceso es similar o mejor dicho el mismo empleado para sacar cualquier promedio, por ejemplo (El promedio de notas de un estudiante).

PTOS ACUMULADOS / TOTAL DE ACUMULACIONES

Para ello utilizaremos una tabla de datos:

<? CREATE TABLE `valoraciones` (
    `id_noticia` int(9) NOT NULL default '0',
    `num_votos` int(20) NOT NULL default '0',
    `ptos` int(20) NOT NULL default '0'
) TYPE=MyISAM;
?>


Cabe destacar que no es necesario utilizar una tabla de datos individual, siempre y cuando se cuente con una tabla general de artículos o contenidos y obviamente se dispongan al menos de los dos últimos campos de esta tabla, para el funcionamiento del script.

Este sistema trabaja con 1 solo registro por artículo o contenido, donde el campo id_noticia, se refiere al identificador de nuestra noticia o contenido, num_votos; el total de votos realizados entorno a ese contenido y ptos la suma de todos los votos:

Por ejemplo:

id_noticia= 00001 - nuestra primera noticia
num_votos= 3 - solo tres votos en esta noticia.
Ptos= 15 - es probable que los tres hayan votado por 5 puntos.

Entonces lógicamente la valoración media es de 5 ptos.

Código Fuente:

<?
#####CONEXIÓN A MYSQL
@mysql_connect('localhost','usuario','pass')or die ('Ha fallado la conexión: '.mysql_error());
@mysql_select_db('base_de_datos')or die ('Error al seleccionar la BD: '.mysql_error());
////end conexión
$SSQL_=mysql_query("SELECT * FROM valoraciones WHERE id_noticia='".$_GET[id]."'")or die(mysql_error());
$array_d=mysql_fetch_array($SSQL_);
$valoracioN_total=@round($array_d[ptos]/$array_d[num_votos],2);

if(isset($_POST[valor])){
   if(mysql_num_rows($SSQL_)==0){
   @mysql_query("INSERT INTO valoraciones VALUES('".$_GET[id]."','1','".$_POST[valor]."')")or die ('ERROR AL INSERTAR REGISTRO: '.mysql_error());
   }else{
   @mysql_query("UPDATE valoraciones SET num_votos=num_votos+1,ptos=ptos+".$_POST[valor]." WHERE id_noticia='".$_GET[id]."'")or die ('ERROR AL MODIFICAR REGISTRO: '.mysql_error());
   }
   header('Location:'.$REQUEST_URI);
   exit;
}

echo '<strong>Valoración Media : '.$valoracioN_total.'</strong> <div style="background-color:#EFEFEF; width:50px"><img width="'.($valoracioN_total*5).'" height="6" style="background-color: #000099"></div> <br>Total de votos: '.$array_d[num_votos];

?><hr>
<form action="<? echo $REQUEST_URI;?>" method="post">
Nueva valoración:
<select name="valor" id="valor">
<? for ($i=1; $i<=10 ; $i++) echo '<option value="'.$i.'">'.$i.'</option>';?>
</select>
<input type="submit" value="Votar por este artículo">
</form>


Explicando:

Primero que nada, como de costumbre creamos la conexión al servidor de mysql; donde debemos aportar nuestros datos de acceso reales.

Seleccionamos la base de datos sobre la cual trabaremos.

Y generamos una petición al servidor Mysql mysql_query(); donde solicitamos los registros almacenados previamente por cada contenido o artículo.

Le asignamos a la variable $array_d, la matriz devuelta por mysql_fetch_array(), para luego agrupar en la variable $valoracioN_total; el valor devuelto por la división entre $array_d[ptos] y $array_d[num_votos], redondeamos el valor con 2 decimales round(), le colocamos el @ al comienzo de la función para evitar que se muestren posibles errores por si acaso la división es entre 0 (cero).

Finalmente iniciamos una condición para comprobar si ($_POST[valor]) esta definida, es decir si se esta procesando el formulario para insertar nuevas valoraciones. Si la condición evalúa TRUE entonces ejecutamos una serie de instrucciones, siendo la primera una nueva condición:

if(mysql_num_rows($SSQL_)==0):

Para comprobar si aún no hay ningún registro o valoración e insertar uno nuevo.
@mysql_query("INSERT INTO…

De lo contrario ( else) quiere decir en esta ocasión que ya ha votado al menos 1 persona y por ende no podemos hacer un nuevo registro, si no más bien una modificación del ya existente.

@mysql_query("UPDATE valoraciones…

Posteriormente sin importar cual de las dos rutinas halla seleccionado el script, realiza una redirección header(Location: … ) a .$REQUEST_URI, que es exactamente la misma URL , para que el usuario vea los datos actualizados. Es decir su voto agregado a la lista.

Finalmente imprimimos el resultado, con un grafico y agregamos el formulario que se utilizara para una próxima votación.

Ya quedaría de parte de ustedes modificarlo un poco (si desean) para que el usuario pueda votar solo 1 vez.

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 1 categoria relacionada
+ 3 comentarios no revisados

 Autoría, licencia y acciones sobre este artículo

Informe de Emmanuel García De Caro*
Webmaster de Blasten.com
URL: http://www.blasten.com

Atención: Copyright. Este artículo no se puede reproducir sin la autorización expresa del autor.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Taller de PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP


 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se han encontrado 3 comentarios sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Taller de PHP
Categorías
+Scripts en PHP

Lectura recomendada

Compra este libro en Agapea, la librería urgente a domicilio.

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia