Foros del Web » Programando para Internet » PHP »

Votación en Php y Sql

Estas en el tema de Votación en Php y Sql en el foro de PHP en Foros del Web. Bueno, la cuestion es así, yo tengo un programa de radio através de internet Conduzco un bloque en el cual presento los 20 temas mas ...
  #1 (permalink)  
Antiguo 09/02/2006, 14:14
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
Votación en Php y Sql

Bueno, la cuestion es así, yo tengo un programa de radio através de internet

Conduzco un bloque en el cual presento los 20 temas mas votados, y necesito un script de votación en PHP, pero aqui el problema, yo no puedo colocar una lista de todos los temas, seria interminable y para nada practico, la idea es que el usuario Escriba el nombre del tema en un Campo y lo envie, entonces este tema se agrega en la DB, hasta ahi todo bien, la cosa es q necesitaria que cuando Alguiene scriba el mismo tema Se "Actualzie" el campo con el tema q ya envio alguien antes y de esta forma sume al Campo "voto" un voto mas, osea:

Yo voto por: Rosas

Se agrega en la DB en el campo Nombre: Rosas en el Campo VOTO: 1

Viene Pepito y Vota por : Rosas se Actualzia la entrada Rosas y Cambia el campo VOTO a 2

Luego simplemente hago que se muestren losr esultados segun el campo votos.

El problema es q no se si esto es posible, espero sus comentarios, saludos!
  #2 (permalink)  
Antiguo 09/02/2006, 14:54
Avatar de mauled  
Fecha de Ingreso: marzo-2005
Ubicación: Cd. de México.
Mensajes: 3.001
Antigüedad: 19 años, 8 meses
Puntos: 33
Hola NUSS antes que nada seria conveniente que nos comentes si tienes conocimiento de PHP y manejo de base de datos.

Lo que tu quieres realizar es posible.
  #3 (permalink)  
Antiguo 09/02/2006, 14:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si, .. es posible .. El problema será cuando llegue un votante y diga "yo voto por": Rosas y otro llegue y vote por Las Rosas .. Como "cadena" para comparar no es igual .. pero "podría" ser que sea lo mismo .. Ese "margen de error" lo tendrás que tener presente para ver como lo tratas.

La implementación sería algo así:

Crea tu estructura de tu tabla de votos ..

id_voto
nombre_tema
votos

El tema es consultar a tu BD por "si el nombre que introduce el que va a votar existe en tu BBDD ya".

Código PHP:
<?
// Concectas a tu BBDD .. etc
$sql="SELECT COUNT(*) FROM votos WHERE nombre_tema='".$_POST['nombre_tema']."'";
$resultado=mysql_query($sql) or die(mysql_error));
$existe=mysql_result($resultado,0);
if (
$existe == 0){
   
// si no existe .. generas el SQL para crear el registro ... y le das un voto
   
$sql="INSERT INTO votos (id_voto,nombre_voto,votos) VALUES ('','".$_POST['nombre_tema']."','1')";
} else {
    
// si existe .. actualizamos el voto con una unidad más .. 
    
$sql="UPDATE votos SET votos=votos+1 WHERE nombre_tema='".$_POST['nombre_tema']."'";
}

// Y ejecutas la consulta SQL que corresponda ...
mysql_query($sql) or die (mysql_error());
?>
Eso sería el procedimiento base para el voto .. por otro lado consulta tu tabla "votos" y extrae los resultados .. los ordenas .. etc ...

Un saludo,
  #4 (permalink)  
Antiguo 10/02/2006, 00:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
Muchisimas Gracias, mañana lo provaré y te comento que tal pero por lo que veo esta muy bien, te agradezco enserio.
  #5 (permalink)  
Antiguo 11/02/2006, 21:54
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
Bueno aun sigo con un pequeño problema, les comento la situación, Tengo Desarrolle de la siguiente forma el sistema, tengo 2 archivos, votar.php y votos.php, en votar.php se coloca el nombre de la canción y se enviar mediante form, incluyendo el archivo votos.php que es el q contiene el codigo q me diste arriba y supuestamente lo procesa, pero me queda una pagina en blanco osea que hay algun paso q me estoy comiendo y estoy hace 2 horas viendo que puede ser pero no me doy cuenta, aqui les dejo los 2 archivos para ver si ustedes se dan cuenta en donde metí la pata

notas: la Db se llama: fwradio la tabla se llama: topisimo


votar.php

Código PHP:
<?
#conexion con el MySql
$linkdb mysql_connect("localhost","frontalweb","xxxxxxxx")
or die (
"<b>No se ha podido conectar!</b>");

#Seleccion de la base de datos a utilizar
mysql_select_db("fwradio")
or die(
"<b>Error al seleccionar la DB!</b>");
?>

<html>
<form action="votos.php" method="post">

<b>Titulo del Tema: (En japonés)</b> <input type="Text" name="nombre_tema"><br>
<br>
<input type="submit" value="Votar">

<br><br>

Lista de Temas Con mas Votos.<br><br>
</html>


<?
//Ejecutamos la sentencia SQL
$result=mysql_db_query("fwradio","select * from topisimo ORDER BY votos DESC");

//Mostramos los registros
$cant=0;
while ((
$row=mysql_fetch_array($result)) && ($cant<20))

{
$cant++;
echo 
'<tr><td><b>Tema:</b> '.$row["nombre_tema"].'</td> &nbsp; &nbsp; &nbsp;<td>'.$row["votos"].'</td></tr>';
}
mysql_free_result($result)
?>

votos.php

Código PHP:
<?

// Concectas a tu BBDD .. etc

#conexion con el MySql
$linkdb mysql_connect("localhost","frontalweb","xxxxxxxx")
or die (
"<b>No se ha podido conectar!</b>");

#Seleccion de la base de datos a utilizar
mysql_select_db("fwradio")
or die(
"<b>Error al seleccionar la DB!</b>");


//Elijo la tabla

$sql="SELECT * FROM topisimo WHERE nombre_tema='".$_POST['nombre_tema']."'";
$result=mysql_query($sql) or die(mysql_error));
$existe=mysql_result($result,0);
if (
$existe == 0){
   
// si no existe .. generas el SQL para crear el registro ... y le das un voto
   
$sql="INSERT INTO topisimo (id_voto,nombre_voto,votos) VALUES ('','".$_POST['nombre_tema']."','1')";
} else {
    
// si existe .. actualizamos el voto con una unidad más ..
    
$sql="UPDATE topisimo SET votos=votos+1 WHERE nombre_tema='".$_POST['nombre_tema']."'";
}

#ejecutar consulta
$result mysql_query($sql,$linkdb);

echo 
"Voto Enviado.\n";
?>
  #6 (permalink)  
Antiguo 12/02/2006, 04:15
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 22 años, 4 meses
Puntos: 0
¿Y porqué no usas un campo select para emitir el voto?
  #7 (permalink)  
Antiguo 12/02/2006, 06:40
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 11 meses
Puntos: 1
sugerencia

Te recomendaría, para evitar el problema que Clúster comenta y que seguramente vas a tener:

Cita:
Si, .. es posible .. El problema será cuando llegue un votante y diga "yo voto por": Rosas y otro llegue y vote por Las Rosas .. Como "cadena" para comparar no es igual .. pero "podría" ser que sea lo mismo .. Ese "margen de error" lo tendrás que tener presente para ver como lo tratas.
que uses RADIO BUTTONS, o CHECK BOXES. Ahora, te entiendo que sería una locura poner checkboxes para todos los artistas, pero podría ser algo así (imagina que la letra c es un radio button):

¿Cuál es tu artista favorito?
c Artista 1
c Artista 2
c Artista 3
c Artista 4
c Artista 4
c Artista 5
Otro ___________

Así, cuando alguien haya votado por Rosas, ya verá ahí el nombre y no tendrá que escribirlo nuevamente.

Hay muchas cosas que podrías hacer con respecto a la lista de votaciones, se me hace muy pobre que nada más captures: id_voto, nombre_voto, votos, pues qué tal que yo entro y voto 150 veces por Rosas, ¿no sería válido, cierto? Pero tú no tienes forma de controlarlo. Quizá podría servir una estructura como la siguiente:

TABLA ENCUESTA
encuesta_id
nombre_encuesta
fecha_realizacion
pregunta (ej. ¿cuál te parece la mejor canción?)

TABLA ARTISTA
artista_id
nombre_artista
nombre_cancion

TABLA VOTO
voto_id
direccion_ip
fechahora
nombre_votante
artista_id (FK)
encuesta_id (FK)

De esa manera puedes:
  • saber cuántos votos por artista.
  • saber quién participa más.
  • administrar múltiples encuestas (una por día, por ejm).
  • controlar que un usuario sólo vote una vez por encuesta.
  • saber qué encuesta fue más popular.
  • etc.
También sería conveniente que antes de insertar en la base de datos, le metieras un addslashes() para evitar luego problemas de seguridad.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 12/02/2006, 12:09
 
Fecha de Ingreso: febrero-2006
Mensajes: 22
Antigüedad: 18 años, 9 meses
Puntos: 0
jeje si supiera como lo haria pero ya es demasiado profesional para mi, no tengo mucha experiencia en php xD
Con que me digan que hice mal arriba me conformo xD, en cuanto a los votos, tranquilamente puedo agregar un registro de ip en el sistema original :p
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:47.