Regresar a la página www.ComoCrearTuWeb.com
Resultados 1 al 4 de 4

Tema: Sistema de Votacion con PHP y MySql

  1. #1
    Me va gustando esto... Habitante Avatar de nexuxirc
    Fecha de Ingreso
    16 ene, 08
    Mensajes
    126
    Poder de Reputación
    19

    Lightbulb Sistema de Votacion con PHP y MySql

    Aprovechando la oportunidad de un usuario que tenia un problemita con este script, lo he modificado para él y para muchos que deseen usar.
    Y tambien esta la fuente de demostracion y si quieren para descargar.

    La conexion

    Código PHP:
    <?php
    /* Crear una conexion a la base de datos con PHP */
    # Hay muchas maneras de crear una conexion a la base de datos para su posterior llamado para nuestras funciones o paginas.
    # Aqui veremos, la mas simple, crear apartir de variables. Pero como dije, hay muchas maneras.

    // Definimos las variables
    $host_pruebas "localhost"// Es donde tu servidor reside, osea en tu maquina
    $data_pruebas "votaciones"// Es donde haremos las consultas, la base de datos
    $user_pruebas "usuario"// El usuario que maneja la base de datos
    $password_pruebas "lacontraseña"// La contraseña de la base de datos

    // Ahora creamos, la consulta para conectarnos
    // Tip: Acuerdense que sin las comillas simples o dobles
    $pruebas mysql_connect($host_pruebas$user_pruebas$password_pruebas) or trigger_error(mysql_error(), E_USER_ERROR);
    // Seleccionamos la base de datos y ponemos un mensaje
    // Pero para usar, debemos quitar el mensaje
    mysql_select_db($data_pruebas$pruebas);
    ?>
    Ahora viene la parte mas tediosa, pero una vez ordenado y comentado queda mucho mas facil leer. El codigo completo

    Código PHP:
    <?php 
     
    #------- Incluyendo la configuracion de la base de datos
    include "crearCX.php";

    #------- Trayendo todos datos de la base de datos
      
    $data mysql_query("SELECT * FROM vote") or die(mysql_error()); 
      
    #------- Ahora, a hacer el bucle
     
    while($ratings mysql_fetch_array$data )) 
     { 
     
    #------- Insertando el nombre
     
    echo "<b>Video / Pelicula </b>: " .$ratings['name']."<br>"
     
    #------- Calcular los ratings
    $current $ratings['total'] / $ratings['votes']; 
     echo 
    "<i>Votos actuales</i>: " round($current2) . "<br>";
     
    #------- Crear los links para votar
    echo "VOTAME! :  "
    echo 
    "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=1&id=".$ratings['id'].">Votar Opcion #1</a>  | ";
    echo 
    "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=2&id=".$ratings['id'].">Votar Opcion #2</a>  | ";
    echo 
    "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=3&id=".$ratings['id'].">Votar Opcion #3</a>  | ";
    echo 
    "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=4&id=".$ratings['id'].">Votar Opcion #4</a>  | ";
    echo 
    "<a href=".$_SERVER['PHP_SELF']."?mode=vote&voted=5&id=".$ratings['id'].">Votar Opcion #5</a>  | ";

    #------- Divisorias
    echo "<hr>";

    #------- Fin del bucle
     


    #------- Creando las variables y comenzando a preguntar al usuario si ya voto
    if(isset($_GET["mode"])) 
    {

    # Es aqui, que tenemos que crearle las variables para que funcione.
    $mode=$_GET["mode"];
    $voted $_GET[voted];
    $id $_GET[id];

    # Alertas
    $yavotaste "Disculpanos, pero ya votaste<p>";
    $gracias  "Gracias por tu Voto<p>";

    #------- Si ya votamos, NO se nos permite mas votar
          
    if(isset($_COOKIE[$cookie])) 
             { 
             echo 
    $yavotaste
             } 
     
          else 
             { 
             
    $month 2592000 time(); 
             
    $cookie"Mysite$id"// Quitamos ciertos valores como ser, mes y otros datos

    #------- Insertando y actualizamos la base de datos
    mysql_query ("UPDATE vote SET total = total+".$voted.", votes = votes+1 WHERE id = ".$id.""); 
             echo 
    $gracias 
             } 
     } 
     
    ?>

    Habia muchas variables que faltaban, como ser:

    Código PHP:
    # Es aqui, que tenemos que crearle las variables para que funcione.
    $mode=$_GET["mode"];
    $voted $_GET[voted];
    $id $_GET[id]; 
    Y el setcookie estaba incorrecto, la manera es de esta forma:

    Código PHP:
    else 
             { 
             
    $month 2592000 time(); 
             
    $cookie"Mysite$id"// Quitamos ciertos valores como ser, mes y otros datos 

    Y tambien faltaban cerrar muchas comillas simples o dobles

    Código PHP:
    mysql_query ("UPDATE vote SET total = total+".$voted.", votes = votes+1 WHERE id = ".$id.""); 

    Espero que te funcione!, y para todos los que deseen descargar el codigo completo les dejo.

    Codigo completo
    http://pablodelrio.zzl.org/votaciones/votaciones.zip

    Demostracion
    http://pablodelrio.zzl.org/votaciones/

    Espero que puedan hacer correr y que les funcione

    Cualquier caso estoy a las ordenes

  2. #2
    Esto empieza a ser un vicio... Habitante Avatar de spitfire2
    Fecha de Ingreso
    04 sep, 10
    Ubicación
    ARGENTINA...!!!
    Mensajes
    736
    Poder de Reputación
    18
    excelente, aunque al probar en el enlace que pusiste, no me impide votar una y otra vez por la misma pelicula, deberias de usar otra tabla con el identificador del votante y su ip, luego al momento de votar comparas si hay un voto para esa pelicula con ese ip y se lo impides, o directamente le muestras un mensaje de "usted ya voto en esta pelicula"

  3. #3
    Esto empieza a ser un vicio... Habitante Avatar de paxarin
    Fecha de Ingreso
    03 nov, 09
    Ubicación
    Santa cruz de Bezana
    Mensajes
    646
    Poder de Reputación
    20
    Muy buenas.
    Estoy buscando algo así para la zona de comentarios de mi web.
    Yo tengo este php en esa zona de comentarios.
    Código PHP:
    <div id="comentario">
        <a href="comentario.php" title="Deja un comentario">Deja un comentario</a>
    </div>              
    <?php
    include("conexion.php")
    ?>
    <?php
    $rst_coment
    =mysql_query("SELECT * FROM tblcomentario WHERE tblcomentario.co_categoria = 'index' AND tblcomentario.estado=1 ORDER BY fecha DESC;",$conexion);
    $num_registros=mysql_num_rows($rst_coment);
    if (
    $num_registros==0)
    {
        echo 
    "No hay resultados para mostrar y seguro que ocurrio algo!!";
        
    mysql_close($conexion);
        exit();
    }
    $registros=2;
    //$pagina=$_GET["num"];
    $pagina = isset($_GET['num']) ? (int) $_GET['num'] : 1;
    if(
    is_numeric($pagina))
            
    $inicio=(($pagina-1)*$registros);
    else
            
    $inicio=0;
            
    $rst_coment=mysql_query("SELECT * FROM tblcomentario ORDER BY fecha DESC LIMIT $inicio$registros;",$conexion);
            
    //redondeo de paginas con ceil
    $paginas=ceil($num_registros/$registros);
    ?>
    <div class="box">
        <div class="box_cont">
       <?php
         
    while($fila mysql_fetch_array($rst_coment)){
                echo 
    "<p>Nombre:<span6>$fila[co_nombre]</span></p>";
                echo
    "<p>Comentario: <span6>$fila[co_comentario]</span></p>";
                echo 
    "<p>$fila[co_web]</p>";
                echo
    "<p>$fila[fecha]<img src='img/sep.png' /><br></p>";
            }
            
    mysql_free_result($rst_coment);
        
    ?>
         <?php
                            
    if($pagina>1)
                                    echo 
    "<a href='index.php?num=". ($pagina-1) ."'>Anterior</a> ";
                                    for(
    $cont=1;$cont<=$paginas;$cont++)
                                    {
                                            
    //verificamos en la pagina que estamos para que no este el link
                                            
    if($cont==$pagina)
                                                    echo 
    $cont ." ";
                                            else
                                                    
                                                    echo 
    "<a href='index.php?num="$cont ."'>$cont</a> ";
                                    }
                                    if(
    $pagina<$paginas)
                                    echo 
    "<a href='index.php?num=". ($pagina+1) ."'>Siguiente</a> ";
                            
    ?>
        </div>
        
    </div>
    Para crear esta zona de comentarios tuve que vincular dos tablas. En la primera tengo las categorias o secciones en las que estan los comentarios que deja cada usuario.
    Ejemplo si escribimos un comentario en el index este solo apararece en esta sección.
    Pero viendo tu ejemplo deberia de vincularlo tambien a otra tabla en la cual se almacenan los votos?
    Puedes echarme un cable con esto?
    Solo necesito un + y que apareca el numero de votos.
    Espero a verme explicado bien.
    Mil gracias de antemano.

  4. #4
    Esto empieza a ser un vicio... Habitante Avatar de paxarin
    Fecha de Ingreso
    03 nov, 09
    Ubicación
    Santa cruz de Bezana
    Mensajes
    646
    Poder de Reputación
    20
    me gustaria saber si en lugar de sacar el valor total se podria sacar la media?
    Como seria?

Temas Similares

  1. sistema de votacion en php y mysql
    Por francisco1 en el foro Php Bases de Datos y MySQL (Nuevo!)
    Respuestas: 15
    Último Mensaje: 17/09/2012, 13:32
  2. Insertar sistema de votación en mi página - Sin Publicidad
    Por Jahier en el foro Otros Elementos
    Respuestas: 6
    Último Mensaje: 23/05/2011, 08:08
  3. como poner un sistema de votación por estrellas?
    Por *Blaizer* en el foro Foro General
    Respuestas: 5
    Último Mensaje: 24/11/2007, 15:40

Etiquetas para este Tema

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •