Hola a todos cual es el codigo para que los visitantes de mi web valoren una notici quiero lago mas o menos como el de escalofrio.com.
Gracias!
Cita de: neopuerta360 en 29 Septiembre 2010, 02:02 AM
Hola a todos cual es el codigo para que los visitantes de mi web valoren una notici quiero lago mas o menos como el de escalofrio.com.
Gracias!
Si por
valorizar te refieres a
votar, entonces la cosa es muy simple... Asumiendo que cada NOTICIA la guardas en una tabla mas o menos asi:
create table NOTICIAS(
ID VARCHAR(10) not NULL UNIQUE,
TITULO VARCHAR(100) not NULL,
CONTENIDO TEXT not NULL,
);
Lo mas recomendable, limpio y profesional, es crearte una tabla especial para almacenar los votos, siendo esto asi:
Creamos tabla VOTOS.
create table VOTOS(
ID VARCHAR(10) not NULL UNIQUE,
NOTICIA_ID VARCHAR(10) not NULL,
IP_USUARIO VARCHAR(20) not NULL,
FECHA VARCHAR(100) not NULL,
VOTO VARCHAR(3) not NULL );
La idea es que, cuando creamos una noticia creamos un ID nuevo para la tabla de NOTICIAS donde este difiera de TODOS los demas, siendo este valor como UNICO. Basandonos en esto, cuando alguien insete o intente VOTAR una noticia, creamos un nuevo valor en la tabla VOTO, en donde insertamos el ID de la NOTICIA en NOTICIA_ID, aparte tomamos el IP, FECHA y VOTO (valor). De esta forma sabremos quienes votaron la noticia, que valor le dieron y sera muy simple sacar el conteo.
<?php
$link= conectar();
$cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );
$conteo= mysql_num_rows($cons);
echo 'Esta noticia posee: '. $conteo;
if( $conteo==1 ) echo ' voto.';
else echo ' votos.';
?>
La
IP nos sirve de mucho para que
antes de guardar el voto, verificamos TODAS LAS IPS del dia ACTUAL ( date("d/m/y", time()) ), y si esta
es distinta de las obtenidas, entonces se
procesa con exito el voto, de lo contrario se asume que esa ip
ya voto.
Saludos !
Prefiero está,
function mostrarVotos($sID){
if(is_numeric($sID))
$sSQL = "SELECT * FROM tblNoticia WHERE(sID = '$sID')";
$sQuery = mysql_query($sSQL, $sHandler);
if($sQuery){
$sVotos = mysql_num_rows($sQuery);
if($sVotos > 1){
return "Esta noticia posee: $sVotos votos.";
}else if($sVotos == 1){
return "Esta noticia posee: $sVotos voto.";
}else{
return "Error.";
}
}else{
return mysql_error();
}
}else{
return "El valor: $sID, no es un valor numérico.";
}
}
La opcion que menciona Shell root tambien es buena, pero digamos que es super-simple, vaya, por si quieres algo rapido.
El inconveniente de manejar los VOTOS en la misma tabla de la NOTICIA, es que no tienes la posibilidad de contabilizar los VOTOS por IP y pues podrian bombardearte los Votos, por otro lado, usar una TABLA especial para los Votos te brinda mejor control, saber Quienes votan, si usas Geolocalizacion, podrias hasta armar un Log Estadistico de: Que regiones te Votan mas ! y cosas asi... Vaya, detalles visualies estadisticos que si tienes un sitio grande y quieres venderlo para publicidad, necesitarias algo asi :D.
Te reitero, ambas opciones son buenas y funcionan, todo depende la magnitud.
Saludos !
ok gracias.
Lo harás sin "bases de datos", verdad? :P
si!
Entonces, porque no lo dijisteis! Perdimos nuestro tiempo.
Tienes que saber que usar una Base De Datos es una ventaja no una desventaja...
Me imagino como harás un paginador xD
Yo tambien en mis principios me negaba a usar bases de datos... utilizaba archivos txt y extensiones raras (que no existian) para almacenar toda la info... un dia vino un tio y me dijo "negro, como no uses bases de datos te borro del msn..." ahi empeze a utilizar BD :xD :xD
ahora enserio.. miarroba (creo que es el que usas) permite usar bases de datos. Busca en google como configurarla. Codigos que ahora te cuestan 50 lineas con BD's los harias en 10... piensatelo.
Saludos
jajaja no importa,vere como lo hago conbase de datos!! :D ;)
Cita de: neopuerta360 en 30 Septiembre 2010, 18:31 PMjajaja no importa,vere como lo hago conbase de datos!! :D ;)
Sí ya lo tienes.
Lo que quiero es decir que lo voy aprobar con la base de datos aver si me funciona.
;-)
Cita de: Diabliyo en 29 Septiembre 2010, 02:19 AM
Cita de: neopuerta360 en 29 Septiembre 2010, 02:02 AM
Hola a todos cual es el codigo para que los visitantes de mi web valoren una notici quiero lago mas o menos como el de escalofrio.com.
Gracias!
Si por valorizar te refieres a votar, entonces la cosa es muy simple... Asumiendo que cada NOTICIA la guardas en una tabla mas o menos asi:
create table NOTICIAS(
ID VARCHAR(10) not NULL UNIQUE,
TITULO VARCHAR(100) not NULL,
CONTENIDO TEXT not NULL,
);
Lo mas recomendable, limpio y profesional, es crearte una tabla especial para almacenar los votos, siendo esto asi:
Creamos tabla VOTOS.
create table VOTOS(
ID VARCHAR(10) not NULL UNIQUE,
NOTICIA_ID VARCHAR(10) not NULL,
IP_USUARIO VARCHAR(20) not NULL,
FECHA VARCHAR(100) not NULL,
VOTO VARCHAR(3) not NULL );
La idea es que, cuando creamos una noticia creamos un ID nuevo para la tabla de NOTICIAS donde este difiera de TODOS los demas, siendo este valor como UNICO. Basandonos en esto, cuando alguien insete o intente VOTAR una noticia, creamos un nuevo valor en la tabla VOTO, en donde insertamos el ID de la NOTICIA en NOTICIA_ID, aparte tomamos el IP, FECHA y VOTO (valor). De esta forma sabremos quienes votaron la noticia, que valor le dieron y sera muy simple sacar el conteo.
<?php
$link= conectar();
$cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );
$conteo= mysql_num_rows($cons);
echo 'Esta noticia posee: '. $conteo;
if( $conteo==1 ) echo ' voto.';
else echo ' votos.';
?>
La IP nos sirve de mucho para que antes de guardar el voto, verificamos TODAS LAS IPS del dia ACTUAL ( date("d/m/y", time()) ), y si esta es distinta de las obtenidas, entonces se procesa con exito el voto, de lo contrario se asume que esa ip ya voto.
Saludos !
Buenas,
En la linea 3 sale un error aqui:
$cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );
Quedaria asi:
$cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentities($_GET["id"], ENT_QUOTES). "';", $link );
Habia un error en htmlentities
Estoy con este, ahora como hago para cuando pulsen Votar agrege un voto a una noticia por a href
Solo me muestra los votos, pero no puedo votar por cada noticia, espero me ayuden
Saludos..
obtienes el id (get) y luego haces update where id=el que se envio, en el otro hilo te puse el enlace a un tutorial de sql
Para mostrar los votos tengo esto:
<? $cons= mysql_query( "select * from votos where idnoticia=".$Id);
$conteo= mysql_num_rows($cons);
echo 'Esta noticia posee: '. $conteo;
if( $conteo==1 ) echo ' voto.';
else echo ' votos.';?>
Y para votar en la noticia tengo esto:
<? if(isset($_GET["valor"])) {
if( $conteo==1 ) echo ' voto.';
else echo ' votos.'; } ?>
<a href="noticias.php?<?php echo "valor=1&id=$Id"; ?>">Votar</a>
Ahora cuando pulso "Votar" no agrega el voto a la noticia.
si no hay codigo que haga el update de la tabla nunca podra añadir nada, te vuelvo a invitar a que le des un ojo al tutorial que te enlace sobre sql,
Ya eh entrado a la web que me dices http://www.sql-tutorial.net/SQL-UPDATE.asp y eh entrado a la sección update sql
Con update si envia los votos.
El codigo de arriba esta bien?
Como lo puedo mejorar
Yo tengo todo eso en noticias.php
Pero por ejemplo si inserto esto en noticias.php:
$voto = "UPDATE votos SET voto=voto+1 WHERE idnoticia=".$Id;
mysql_query($voto);
Cuando entro a la noticia empieza a votar solo y no es lo que quiero.
Yo quiero cuando pulsen "Votar" con:
<a href="noticias.php?<?php echo "valor=1&id=$Id"; ?>">Votar</a>
Vote un voto
Ahora como hago.
Espero me hayen entendido
Saludos...
por ejemplo las muestras en noticias.php y votas en votar.php o si lo quieres todo en el mismo archivo necesitas especificar mediante una variable cuando se quiere votar o cuando se quiere ver las noticias.
Gracias, ctlon me ha funcionado.
Ya puedo votar en cada noticia.
Pero ahora puedo votar varias veces, ahora inserto esto:
$ip = $_SERVER['REMOTE_ADDR'];
Pero en noticias.php o votar.php ???
Ah eh inserto la columna ip en la tabla donde estan los votos no?
Es lo que me falta.
Saludos..