Modificación en sistema de votos.
Hola. Bueno, resulta que integré un sistema de votos al sistema de noticias de mi web para que los usuarios puedan dejar su valoración de la noticia. El sistema es un pequeño script de un solo archivo pero que me gusto mucho porque es muy simple y lo que quisiera saber es como adaptarlo para que haya una votación por noticia y no una sola votación en general, ¿se entiende?, así cada noticia tiene su propia valoración.
El script es el siguiente:
<?
include('db-cnx.php');
function show_encuesta($not_ID,$proteccion_IP){
// COLOCO TODAS MIS PREGUNTAS Y OPCIONES
$encuesta[1]=array('¿Que te parece la noticia?',array('Excelente','Muy buena','Buena','Fea','Muy Fea','Chau'));
//END
if (!array_key_exists($not_ID,$encuesta)) return ('El id de la encuesta no se encuentra disponible');
else
$pregunta_de_la_encuesta = array_shift($encuesta[$not_ID]);
$opciones_de_la_encuesta = array_pop ($encuesta[$not_ID]);
if(isset($_POST[opcion])){
$ssqls=mysql_query('SELECT * FROM sn_noticias WHERE ip="'.$REMOTE_ADDR.'"')or die(mysql_error());
if($proteccion_IP && mysql_num_rows($ssqls)>=1){
$html_encuesta='<font color="#FF0000" face="tahoma" size="2"><strong>Ya usted tiene un voto registrad</strong>o </font>';
}
else {
mysql_query('INSERT INTO sn_noticias VALUES("'.$not_ID.'","'.$_POST[opcion].'","'.$REMOTE_ADDR.'")')or die(mysql_error()); }
}
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'"')or die(mysql_error());
$total_votos=mysql_num_rows($ssql);
// IMPRIMIR LOS RESULTADOS.
$html_encuesta.='<form action="'.$_SERVER[REQUEST_URI].'" method="POST">';
$html_encuesta.= '<strong>'.$pregunta_de_la_encuesta.'</strong>';
$html_encuesta.='<br>';
//Si el valor para mostrar el resultado es distinto a "ture" entonces da la opción para votar
if ($_GET[ver]!="true" ){
foreach($opciones_de_la_encuesta as $KEY => $OPCION){
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'" and id_opcion="'.$KEY.'"')or die(mysql_error());
$votos_x_opcion=mysql_num_rows($ssql);
$estimar_porcentaje= @round($votos_x_opcion*100/$total_votos,1);
$html_encuesta.= '<input name="opcion" type="radio" value="'.$KEY.'"';
if($_POST[opcion]==$KEY && isset($_POST[opcion])){$html_encuesta.='checked'; }
$html_encuesta.= '>'.$OPCION.'<br>';
}
}
//SI EL VALOR PARA MOSTRA LOS RESULTADOS ES "TURE" ENTONCES MUESTRA Y SACA EL INPUT
if ($_GET[ver]=="true" ){
foreach($opciones_de_la_encuesta as $KEY => $OPCION){
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'" and id_opcion="'.$KEY.'"')or die(mysql_error());
$votos_x_opcion=mysql_num_rows($ssql);
$estimar_porcentaje= @round($votos_x_opcion*100/$total_votos,1);
//$html_encuesta.= '<input name="opcion" type="radio" value="'.$KEY.'"';
if($_POST[opcion]==$KEY && isset($_POST[opcion])){$html_encuesta.='checked'; }
$html_encuesta.= '*'.$OPCION.'';
$html_encuesta.= ' '.$estimar_porcentaje.'% Votos: '.$votos_x_opcion.'</strong><br>';
}
}
$html_encuesta.='<br><input type="submit" value="Votar">';
if ($_GET[ver]!="true"){
$html_encuesta.='<a href="?ver=true">Resultados</a>';
}
else{
$html_encuesta.='<a href="?ver=false">Esconder Resultados</a>';
}
$html_encuesta.='</form>';
return $html_encuesta;
}
?>
...y utiliza la siguiente tabla:
CREATE TABLE `votacion` (
`id_encuesta` varchar(5) NOT NULL default '',
`id_opcion` varchar(5) NOT NULL default '',
`ip` varchar(15) NOT NULL default '' )
TYPE=MyISAM;
Bueno, ojalá puedas ayudarme ya que lo he intentado y no me sale.
Gracias y saludos.
El script es el siguiente:
<?
include('db-cnx.php');
function show_encuesta($not_ID,$proteccion_IP){
// COLOCO TODAS MIS PREGUNTAS Y OPCIONES
$encuesta[1]=array('¿Que te parece la noticia?',array('Excelente','Muy buena','Buena','Fea','Muy Fea','Chau'));
//END
if (!array_key_exists($not_ID,$encuesta)) return ('El id de la encuesta no se encuentra disponible');
else
$pregunta_de_la_encuesta = array_shift($encuesta[$not_ID]);
$opciones_de_la_encuesta = array_pop ($encuesta[$not_ID]);
if(isset($_POST[opcion])){
$ssqls=mysql_query('SELECT * FROM sn_noticias WHERE ip="'.$REMOTE_ADDR.'"')or die(mysql_error());
if($proteccion_IP && mysql_num_rows($ssqls)>=1){
$html_encuesta='<font color="#FF0000" face="tahoma" size="2"><strong>Ya usted tiene un voto registrad</strong>o </font>';
}
else {
mysql_query('INSERT INTO sn_noticias VALUES("'.$not_ID.'","'.$_POST[opcion].'","'.$REMOTE_ADDR.'")')or die(mysql_error()); }
}
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'"')or die(mysql_error());
$total_votos=mysql_num_rows($ssql);
// IMPRIMIR LOS RESULTADOS.
$html_encuesta.='<form action="'.$_SERVER[REQUEST_URI].'" method="POST">';
$html_encuesta.= '<strong>'.$pregunta_de_la_encuesta.'</strong>';
$html_encuesta.='<br>';
//Si el valor para mostrar el resultado es distinto a "ture" entonces da la opción para votar
if ($_GET[ver]!="true" ){
foreach($opciones_de_la_encuesta as $KEY => $OPCION){
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'" and id_opcion="'.$KEY.'"')or die(mysql_error());
$votos_x_opcion=mysql_num_rows($ssql);
$estimar_porcentaje= @round($votos_x_opcion*100/$total_votos,1);
$html_encuesta.= '<input name="opcion" type="radio" value="'.$KEY.'"';
if($_POST[opcion]==$KEY && isset($_POST[opcion])){$html_encuesta.='checked'; }
$html_encuesta.= '>'.$OPCION.'<br>';
}
}
//SI EL VALOR PARA MOSTRA LOS RESULTADOS ES "TURE" ENTONCES MUESTRA Y SACA EL INPUT
if ($_GET[ver]=="true" ){
foreach($opciones_de_la_encuesta as $KEY => $OPCION){
$ssql=mysql_query('SELECT * FROM sn_noticias WHERE not_ID="'.$not_ID.'" and id_opcion="'.$KEY.'"')or die(mysql_error());
$votos_x_opcion=mysql_num_rows($ssql);
$estimar_porcentaje= @round($votos_x_opcion*100/$total_votos,1);
//$html_encuesta.= '<input name="opcion" type="radio" value="'.$KEY.'"';
if($_POST[opcion]==$KEY && isset($_POST[opcion])){$html_encuesta.='checked'; }
$html_encuesta.= '*'.$OPCION.'';
$html_encuesta.= ' '.$estimar_porcentaje.'% Votos: '.$votos_x_opcion.'</strong><br>';
}
}
$html_encuesta.='<br><input type="submit" value="Votar">';
if ($_GET[ver]!="true"){
$html_encuesta.='<a href="?ver=true">Resultados</a>';
}
else{
$html_encuesta.='<a href="?ver=false">Esconder Resultados</a>';
}
$html_encuesta.='</form>';
return $html_encuesta;
}
?>
...y utiliza la siguiente tabla:
CREATE TABLE `votacion` (
`id_encuesta` varchar(5) NOT NULL default '',
`id_opcion` varchar(5) NOT NULL default '',
`ip` varchar(15) NOT NULL default '' )
TYPE=MyISAM;
Bueno, ojalá puedas ayudarme ya que lo he intentado y no me sale.
Gracias y saludos.
1 Respuesta
Respuesta de tnathos
1