Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: wirelesswifi en 7 Octubre 2010, 00:39 am



Título: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 7 Octubre 2010, 00:39 am
Buenas a todos.

Como haria para insertar un sistema de votos en una web.

Un ejemplo, por cada noticia de una web llevara puntos sumando o restando.

Espero me hayan entendido.

Busque en google pero consegui por voto de estrellas pero no me gustan.

Espero me ayuden.

Edito: Algo similar asi como en la imagen:

(http://img408.imageshack.us/img408/9426/votos.jpg)

Saludos...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: Shell Root en 7 Octubre 2010, 02:28 am
:http://foro.elhacker.net/php/cual_es_el_codigo_para_valorar_una_noticia-t306241.0.html;msg1520887#msg1520887


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: Shell Root en 7 Octubre 2010, 03:09 am
Ando un poco enfermo, pero igual puedo programar algo. Mira este ejemplo,

Base de datos,
Código
  1. DROP DATABASE dbPoC;
  2. CREATE DATABASE dbPoC;
  3. USE dbPoC;
  4. CREATE TABLE tblNoticia(
  5.    sIDNoticia INT,
  6.    sNoticia TEXT,
  7.    sFecha DATE,
  8.    PRIMARY KEY (sIDNoticia)
  9. );
  10.  
  11. CREATE TABLE tblVoto(
  12.    sIDVoto INT,
  13.    sfIDNoticia    INT,
  14.    sBuenos INT,
  15.    sMalos INT,
  16.    PRIMARY KEY (sIDVoto), FOREIGN KEY(sIDVoto) REFERENCES tblNoticia(sIDNoticia)
  17. );
  18.  
  19. INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (1, 'PoC_Noticia 1', '2010-10-01');
  20. INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (2, 'PoC_Noticia 2', '2010-10-02');
  21. INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (3, 'PoC_Noticia 3', '2010-10-03');
  22.  
  23. INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (1, 1, 1, 5);
  24. INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (2, 2, 3, 3);
  25. INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (3, 3, 4, 2);

Código,
Código
  1. <?php
  2.  
  3.    # Valoración de una noticia personalizada
  4.  
  5.    $sIMGBien = 'http://www.campings.net/imagenes/bien.jpg';
  6.    $sIMGMal = 'http://www.campings.net/imagenes/mal.jpg';
  7.  
  8.    $sHandler = mysql_connect('127.0.0.1', 'root', 'root') OR DIE ('Error: '.mysql_error());
  9.    mysql_select_db("dbPoC", $sHandler) OR DIE ('Error: '.mysql_error());
  10.  
  11.    $sSQL = 'SELECT sIDNoticia, sNoticia, sFecha, sBuenos, sMalos, sBuenos + sMalos As sTotal FROM tblNoticia INNER JOIN tblVoto ON tblVoto.sfIDNoticia = tblNoticia.sIDNoticia;';
  12.    $sQuery = mysql_query($sSQL, $sHandler) or die(mysql_error());
  13.    $sRows = mysql_num_rows($sQuery);
  14. ?>
  15.  
  16.    <table border = 1>
  17.        <tr>
  18.            <td><b>CODIGO</b></td>
  19.            <td><b>NOTICIA</b></td>
  20.            <td><b>FECHA NOTICIA</b></td>
  21.            <td><b>VALORACION</b></td>
  22.        </tr>
  23.        <?php
  24.            if ($sRows > 0){
  25.                while ($sField = mysql_fetch_assoc($sQuery)) {
  26.                    echo "<tr>";
  27.                    echo "<td>".$sField['sIDNoticia']."</td>";
  28.                    echo "<td>".$sField['sNoticia']."</td>";
  29.                    echo "<td>".$sField['sFecha']."</td>";
  30.                    echo "<td><table><tr><td><img src='$sIMGBien'/></td><td><img src='$sIMGMal'/></td></tr><tr><td align='center'>".$sField['sBuenos']."</td><td align='center'>".$sField['sMalos']."</td><td><b>Total: </b>".$sField['sTotal']." voto(s)</td></tr></table></td>";
  31.                    echo "</tr>";
  32.                }
  33.            }
  34.        ?>
  35.    </table>

Resultado,
(http://img697.imageshack.us/img697/7669/pantallazoax.png)


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 7 Octubre 2010, 23:38 pm
Esta muy bueno lo que has publicado, pero como seria por IP.

Ejemplo, algo asi lo tengo por noticias asi:

noticia.php?not=1
noticia.php?not=2
noticia.php?not=3

etc...

Pero quiero que en cada noticia haya un texto que dice Votar con un a href cuando pulsen  Votar el link, mande un voto a cada noticia. Vaye sumando.

Pero que sea un voto por IP

Lo que has puesto esta bien, espero me hayen entendido

Saludos...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: bizco en 7 Octubre 2010, 23:57 pm
ya te a puesto demasiado, solo tienes que añadir la ip y verificar antes de votar si esa ip ya voto.


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 8 Octubre 2010, 00:34 am
Pero como se haria, por ejemplo en la base de datos tengo una tabla llamada votos

En ella hay 5 columnas

id noticia fecha ip voto

En php como quedaria el codigo

Espero me ayuden

Saludos...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: bizco en 8 Octubre 2010, 00:43 am
http://www.sql-tutorial.net/


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: xassiz~ en 8 Octubre 2010, 15:57 pm
Código
  1. $ip = $_SERVER['REMOTE_ADDR'];


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 8 Octubre 2010, 20:24 pm
Gracias a todos por sus respuestas.

Ya tengo la base de datos con la tabla votos.

Ahora lo unico que falta es cuando un visitante entre a las noticias ya sea por id

Cuando pulsen Votar mande un voto a la columna voto con el id de la noticia.

Pero lo que quiero es con a href cuando pulsen a href en una noticia mande un voto para esa noticia por su respectivo id

Espero me ayuden solo en eso.

Saludos...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: xassiz~ en 9 Octubre 2010, 21:47 pm
En el "a href" mete un enlace con el que puedas enviarle el dato a php por método GET, por ejemplo:

Código:
?id=2&accion=votar

Y luego los recojes:
Código
  1. <?php
  2.  
  3. if(is_numeric($_GET['id']) && ($_GET['accion']=="votar")){
  4.    ...
  5. }
  6.  
  7. ?>
  8.  


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 9 Octubre 2010, 22:26 pm
Bien, pero yo lo hice a parte con dos archivos.

noticias.php y votar.php

Ahora hago todo por votar.php

Tengo una tabla noticias donde tengo, las columnas id titulo contenido votar ip

El a href lo tengo asi en noticias.php:

<a href="votar.php?<?php echo "id=$Id"; ?>">Votar</a>

Va a votar.php y agrega el voto a cada noticia, pero puedo votar varias veces y no quiero, como haria para ser por IP que vote solo una vez.

Espero me ayuden

Disculpen las molestias

Saludos...

Edito:

Los votos los hago por metodo update.

Y se que para detectar las ip se usa:

$_SERVER['REMOTE_ADDR'];

Pero como haria.


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: ~ Yoya ~ en 9 Octubre 2010, 22:38 pm
todas las ip que voten agrégala a la BD y comprueba si existe dicha ip antes de votar...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 9 Octubre 2010, 22:44 pm
Gracias Yoya, pero lo tengo todo en una tabla noticias.

id titulo contenido voto ip

Pero tengo varios id de noticias

Entonces tendria que hacer una nueva tabla de votos

Con las columnas idnoticia votar ip

Estaria bien asi?

Saludos


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: ~ Yoya ~ en 9 Octubre 2010, 23:07 pm
ps como esta esa bien, solo necesitas comparar el valor de la columna ip con el ip del usuario...

Nose a que te refieres con varios id de noticias, eso son solo registro...


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: wirelesswifi en 9 Octubre 2010, 23:13 pm
Ok.

Por ejemplo a lo de ids me referia a las noticias ejemplo:

noticias.php?id=1
noticias.php?id=2
noticias.php?id=3

Y asi, entonces cuando voten en una noticia por ejemplo a la de id=1

Cuando vaye a votar otro usuario en ese id=1 va a ver dos ip en una misma columna.

Entonces deberia crear otra tabla llamada votos con columnas idnoticia voto ip

Entonces que vaye sumando por columnas por mysql_num_rows

Saludos.


Título: Re: como agregar sistema de puntos por php y mysql?
Publicado por: ~ Yoya ~ en 9 Octubre 2010, 23:26 pm
oka, ps si