Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: neopuerta360 en 29 Septiembre 2010, 02:02 am



Título: Cual es el codigo para valorar una noticia
Publicado por: 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!


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Diabliyo en 29 Septiembre 2010, 02:19 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:
Código
  1. CREATE TABLE NOTICIAS(
  2.    ID VARCHAR(10) NOT NULL UNIQUE,
  3.    TITULO VARCHAR(100) NOT NULL,
  4.    CONTENIDO TEXT NOT NULL,
  5.    );

Lo mas recomendable, limpio y profesional, es crearte una tabla especial para almacenar los votos, siendo esto asi:

Creamos tabla VOTOS.
Código
  1. CREATE TABLE VOTOS(
  2.    ID VARCHAR(10) NOT NULL UNIQUE,
  3.    NOTICIA_ID VARCHAR(10) NOT NULL,
  4.    IP_USUARIO VARCHAR(20) NOT NULL,
  5.    FECHA VARCHAR(100) NOT NULL,
  6.    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.

Código
  1. <?php
  2. $link= conectar();
  3. $cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );
  4.  
  5. $conteo= mysql_num_rows($cons);
  6.  
  7. echo 'Esta noticia posee: '. $conteo;
  8.  
  9. if( $conteo==1 ) echo ' voto.';
  10. else echo ' votos.';
  11. ?>

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 !


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Shell Root en 29 Septiembre 2010, 03:04 am
Prefiero está,
Código
  1. function mostrarVotos($sID){
  2.  if(is_numeric($sID))
  3.    $sSQL = "SELECT * FROM tblNoticia WHERE(sID = '$sID')";
  4.    $sQuery = mysql_query($sSQL, $sHandler);
  5.    if($sQuery){
  6.      $sVotos = mysql_num_rows($sQuery);
  7.      if($sVotos > 1){
  8.        return "Esta noticia posee: $sVotos votos.";
  9.      }else if($sVotos == 1){
  10.        return "Esta noticia posee: $sVotos voto.";
  11.      }else{
  12.        return "Error.";
  13.      }
  14.    }else{
  15.      return mysql_error();
  16.    }
  17.  }else{
  18.    return "El valor: $sID, no es un valor numérico.";
  19.  }
  20. }


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Diabliyo en 29 Septiembre 2010, 04:48 am
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 !


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: neopuerta360 en 29 Septiembre 2010, 18:30 pm
ok gracias.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Shell Root en 29 Septiembre 2010, 18:33 pm
Lo harás sin "bases de datos", verdad?  :P


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: neopuerta360 en 30 Septiembre 2010, 03:06 am
si!


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Shell Root en 30 Septiembre 2010, 03:08 am
Entonces, porque no lo dijisteis! Perdimos nuestro tiempo.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: ~ Yoya ~ en 30 Septiembre 2010, 13:03 pm
Tienes que saber que usar una  Base De Datos es una ventaja no una desventaja...
Me imagino como harás un paginador xD


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: #!drvy en 30 Septiembre 2010, 14:48 pm
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


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: neopuerta360 en 30 Septiembre 2010, 18:31 pm
jajaja no importa,vere como lo hago conbase de datos!! :D ;)


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Shell Root en 30 Septiembre 2010, 19:04 pm
jajaja no importa,vere como lo hago conbase de datos!! :D ;)
Sí ya lo tienes.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: neopuerta360 en 2 Octubre 2010, 04:31 am
Lo que quiero es decir que lo voy aprobar con la base de datos aver si me funciona.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: Ari Slash en 2 Octubre 2010, 07:01 am
 ;-)


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: wirelesswifi en 8 Octubre 2010, 20:43 pm
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:
Código
  1. CREATE TABLE NOTICIAS(
  2.    ID VARCHAR(10) NOT NULL UNIQUE,
  3.    TITULO VARCHAR(100) NOT NULL,
  4.    CONTENIDO TEXT NOT NULL,
  5.    );

Lo mas recomendable, limpio y profesional, es crearte una tabla especial para almacenar los votos, siendo esto asi:

Creamos tabla VOTOS.
Código
  1. CREATE TABLE VOTOS(
  2.    ID VARCHAR(10) NOT NULL UNIQUE,
  3.    NOTICIA_ID VARCHAR(10) NOT NULL,
  4.    IP_USUARIO VARCHAR(20) NOT NULL,
  5.    FECHA VARCHAR(100) NOT NULL,
  6.    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.

Código
  1. <?php
  2. $link= conectar();
  3. $cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );
  4.  
  5. $conteo= mysql_num_rows($cons);
  6.  
  7. echo 'Esta noticia posee: '. $conteo;
  8.  
  9. if( $conteo==1 ) echo ' voto.';
  10. else echo ' votos.';
  11. ?>

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:

Código:
$cons= mysql_query( "select * from VOTOS where NOTICIA_ID='". htmlentitites($_GET["id"], ENT_QUOTES). "';", $link );

Quedaria asi:

Código:
$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..


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: bizco en 8 Octubre 2010, 22:11 pm
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


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: wirelesswifi en 8 Octubre 2010, 22:55 pm
Para mostrar los votos tengo esto:

Código:
<? $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:

Código:
<? if(isset($_GET["valor"])) {    
if( $conteo==1 ) echo ' voto.';
                else echo ' votos.'; }  ?>

Código:
<a href="noticias.php?<?php echo "valor=1&id=$Id"; ?>">Votar</a>

Ahora cuando pulso "Votar" no agrega el voto a la noticia.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: bizco en 8 Octubre 2010, 23:34 pm
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,


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: wirelesswifi en 8 Octubre 2010, 23:51 pm
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:

Código:
$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:

Código:
<a href="noticias.php?<?php echo "valor=1&id=$Id"; ?>">Votar</a>

Vote un voto

Ahora como hago.

Espero me hayen entendido

Saludos...


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: bizco en 9 Octubre 2010, 00:31 am
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.


Título: Re: Cual es el codigo para valorar una noticia
Publicado por: wirelesswifi en 9 Octubre 2010, 02:12 am
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..