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...
:http://foro.elhacker.net/php/cual_es_el_codigo_para_valorar_una_noticia-t306241.0.html;msg1520887#msg1520887
Ando un poco enfermo, pero igual puedo programar algo. Mira este ejemplo,
Base de datos,
DROP DATABASE dbPoC;
CREATE DATABASE dbPoC;
USE dbPoC;
CREATE TABLE tblNoticia(
sIDNoticia INT,
sNoticia TEXT,
sFecha DATE,
PRIMARY KEY (sIDNoticia)
);
CREATE TABLE tblVoto(
sIDVoto INT,
sfIDNoticia INT,
sBuenos INT,
sMalos INT,
PRIMARY KEY (sIDVoto), FOREIGN KEY(sIDVoto) REFERENCES tblNoticia(sIDNoticia)
);
INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (1, 'PoC_Noticia 1', '2010-10-01');
INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (2, 'PoC_Noticia 2', '2010-10-02');
INSERT INTO tblNoticia(sIDNoticia, sNoticia, sFecha) VALUES (3, 'PoC_Noticia 3', '2010-10-03');
INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (1, 1, 1, 5);
INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (2, 2, 3, 3);
INSERT INTO tblVoto(sIDVoto, sfIDNoticia, sBuenos, sMalos) VALUES (3, 3, 4, 2);
Código,
<?php
# Valoración de una noticia personalizada
$sIMGBien = 'http://www.campings.net/imagenes/bien.jpg';
$sIMGMal = 'http://www.campings.net/imagenes/mal.jpg';
$sHandler = mysql_connect('127.0.0.1', 'root', 'root') OR DIE ('Error: '.mysql_error());
mysql_select_db("dbPoC", $sHandler) OR DIE ('Error: '.mysql_error());
$sSQL = 'SELECT sIDNoticia, sNoticia, sFecha, sBuenos, sMalos, sBuenos + sMalos As sTotal FROM tblNoticia INNER JOIN tblVoto ON tblVoto.sfIDNoticia = tblNoticia.sIDNoticia;';
$sQuery = mysql_query($sSQL, $sHandler) or die(mysql_error());
$sRows = mysql_num_rows($sQuery);
?>
<table border = 1>
<tr>
<td><b>CODIGO</b></td>
<td><b>NOTICIA</b></td>
<td><b>FECHA NOTICIA</b></td>
<td><b>VALORACION</b></td>
</tr>
<?php
if ($sRows > 0){
while ($sField = mysql_fetch_assoc($sQuery)) {
echo "<tr>";
echo "<td>".$sField['sIDNoticia']."</td>";
echo "<td>".$sField['sNoticia']."</td>";
echo "<td>".$sField['sFecha']."</td>";
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>";
echo "</tr>";
}
}
?>
</table>
Resultado,
(http://img697.imageshack.us/img697/7669/pantallazoax.png)
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...
ya te a puesto demasiado, solo tienes que añadir la ip y verificar antes de votar si esa ip ya voto.
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...
http://www.sql-tutorial.net/
$ip = $_SERVER['REMOTE_ADDR'];
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...
En el "a href" mete un enlace con el que puedas enviarle el dato a php por método GET, por ejemplo:
?id=2&accion=votar
Y luego los recojes:
<?php
if(is_numeric($_GET['id']) && ($_GET['accion']=="votar")){
...
}
?>
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.
todas las ip que voten agrégala a la BD y comprueba si existe dicha ip antes de votar...
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
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...
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.
oka, ps si