Foros del Web » Programando para Internet » PHP »

Problema con sistema de votacion

Estas en el tema de Problema con sistema de votacion en el foro de PHP en Foros del Web. Hola Muchachos. Pues la verdad que la he pasado mal con este tema, porque no he sabido como solucionar este inconveniente que me tiene frenado ...
  #1 (permalink)  
Antiguo 06/07/2010, 16:56
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Problema con sistema de votacion

Hola Muchachos.

Pues la verdad que la he pasado mal con este tema, porque no he sabido como solucionar este inconveniente que me tiene frenado con una aplicacion que estoy desarrollando, la verdad soy muy novato, y lo que he aprendido de php y bases de datos ha sido a punta de esfuerzo y autoaprendizaje.

Bueno, al grano, mi problema es el siguiente:

Estoy desarrollando una pagina que tiene un sistema de votacion de noticias o articulos, cada noticia tiene su link o boton para votar esa noticia a favor.

ya puse desde la semana pasada un post en la zona de bases de datos, pensando que mi error era de base de datos pero gnzsoloyo muy amablemente me dio luces en el tema y me sugirio que tratara este tema aqui pues era un tema mas de programacion que de bases de datos.

Pues bien para los que quieran entender un poco lo que ha pasado con el otro post aca lo coloco para que se pongan un poco al dia: http://www.forosdelweb.com/f21/problema-con-actualizacion-registrosen-base-datos-821411/#post3470763.

Bueno, el tema es este:

aparece la notica publicada en el index de mi pagina y al lado de la noticia hay un boton que cada vez que se le de click sume un voto a favor para esa noticia.

Lo que yo quiero es que sin importar cuantas noticias hayan publicadas, si yo escojo por ejemplo la noticia numero 15 del dia y le de un voto a favor, ese resultado vaya a parar al registro donde esta esa noticia registrada en la base de datos, es decir que se me actualize solo los registros o noticias que yo quiera votar, no que se actualizen todos los registros.

Alguien me podria dar una luz con ese tema?

Espero que no este muy enredado, igual si no se entiendo pues espero que me lo hagan saber, para ver si depronto de otra forma me puedo hacer entender.

Muchas gracias por cualquier ayuda que me puedan brindar, la verdad que estoy encayado con este tema.

Gracias a todos
  #2 (permalink)  
Antiguo 06/07/2010, 17:23
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

ebes hacer una consulta por medio del id o numero de consulta como lo tengas en tu base de datos a los votos para luego sumar el voto que estas aumentando y hacer un update segun ese numero o id ejemplo
Código PHP:
//haces consulta para conocer la cantidad de votos que tienes e incrementas uno al total de votos
$consulta="select voto from noticia where id='$id_noticia'";
$res=mysql_query($consulta);
while(
$reg=mysql_fetch_array($res))
{
    
$voto_actual=$reg['voto'];
}
$voto_actualizar=$voto_actual+1;
//y luego actualizas
mysql_query("update noticia set voto='$voto_actualizar' where id='$id_noticia'") or die ("error al actualizar la tabla"); 
espero te sirva
  #3 (permalink)  
Antiguo 06/07/2010, 17:46
Avatar de el_gustavo  
Fecha de Ingreso: mayo-2009
Mensajes: 117
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Esta bien lo que te dice carlos pero podria hacerce mejor sin hacer la consulta y actualizar directamente.
Código:
mysql_query("update noticia set voto=voto + 1 where id='$id_noticia'") or die ("error al actualizar la tabla");
Las tablas pueden sumarse, eso esta explicado en la referencia de mysql.
  #4 (permalink)  
Antiguo 06/07/2010, 17:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

todos los dias se aprende algo gracias por la aclaratoria yo no e leido mucho de mysql voy a ver si pongo algo mas de interes en ese tema
  #5 (permalink)  
Antiguo 07/07/2010, 11:49
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Hola Muchachos

La verdad muchas gracias por su ayuda, pero no pude... me quedo grande... al parecer soy mu burro para programar, o no se si es por lo que soy tan novato que aun no he podido desarrollar bien la logica.

Vean esta fue la burrada que hice y no me funciona

<?php
session_start();
error_reporting(0);
$conexion = mysql_connect ("localhost", "admin", "") or die (mysql_error());
mysql_select_db ("noos") or die (mysql_error());

if ($_POST['voto'])

{
$sel = mysql_query("select Id_noticias from noticias where Id_noticias");
$cons = mysql_query ($sel, $conexion);
$result = mysql_fetch_array ($cons);
$id = '$result';
$sumavotos = mysql_query ("update noticias set voto=voto+1 where Id_noticias=$id");
$consulta = mysql_query ($sumavotos, $conexion);
header ("location: index.php");
mysql_close ($conexion);
}


?>


Si alguien me puede decir como puedo capturar con $id el Id_noticias de la noticia que he seleccionado para votar, le estaria muy agradecido.

Otra cosa que me confunde, es que como hago para llamar de la BD el Id_noticias de la noticia que he escojido para votar. Pues como esa Id_noticias se genera automaticamente en la BD y es la primary key autoincrementable, no se como hacer para llamarla y meterla en otra variable.

Que pena con ustedes muchachos, la verdad se me cae la cara de la verguenza de ser tan burro con algo tan elemental.
  #6 (permalink)  
Antiguo 07/07/2010, 11:59
 
Fecha de Ingreso: julio-2010
Mensajes: 2
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

//..nooo compadre estas mareado con la querys...la consulta...y el update...etc....
//...ojala no estes apurado...mas tarde en la noche te ayudo ahora estoy trabajando

//...hiciste un where en la consulta q no hace nada
//...pusiste el resultado de una query en otra y la ejecutaste como consulta...
  #7 (permalink)  
Antiguo 07/07/2010, 14:31
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por __rikrok__ Ver Mensaje
//..nooo compadre estas mareado con la querys...la consulta...y el update...etc....
//...ojala no estes apurado...mas tarde en la noche te ayudo ahora estoy trabajando

//...hiciste un where en la consulta q no hace nada
//...pusiste el resultado de una query en otra y la ejecutaste como consulta...
JAJAJAJ

Vale no te preocupes... Agradezco tu ayuda
  #8 (permalink)  
Antiguo 07/07/2010, 15:13
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Problema con sistema de votacion

Te pongo aqui el codigo bien puesto, fijate que hay muchas cosas corregidas.

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysql_connect ("localhost", "admin", "") or die (mysql_error());
  3.  
  4. if ($_POST['voto'])
  5. {
  6.     $res = mysql_query ("SELECT Id_noticias FROM noticiasWHERE Id_noticias LIMIT 1", $conexion);
  7.     $row = mysql_fetch_array ($res);
  8.     $sumavotos = mysql_query ("update noticias set voto=voto+1 where Id_noticias='".$row['Id_noticias']."'", $conexion);
  9.     header ("location: index.php");
  10.     mysql_close ($conexion);
  11. }
  12. ?>

PD: Se puede mejorar y afinar mucho mas ;)
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #9 (permalink)  
Antiguo 07/07/2010, 15:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

donde le das a votar deberias de mandar el id de la noticia para no tener q consultar xq haces una consulta a la tabla pero no especificas cual noticia ahi te esta limitando a una pero cual?? deberias enviarla desde el formulario sino quieres que este visible en ningun campo usa un <input='hidden'> que es igual a un campo oculto donde tengas el id de la noticia para saber especificamente a cual le daras el voto
  #10 (permalink)  
Antiguo 07/07/2010, 15:54
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por shakaran Ver Mensaje
Te pongo aqui el codigo bien puesto, fijate que hay muchas cosas corregidas.

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysql_connect ("localhost", "admin", "") or die (mysql_error());
  3.  
  4. if ($_POST['voto'])
  5. {
  6.     $res = mysql_query ("SELECT Id_noticias FROM noticiasWHERE Id_noticias LIMIT 1", $conexion);
  7.     $row = mysql_fetch_array ($res);
  8.     $sumavotos = mysql_query ("update noticias set voto=voto+1 where Id_noticias='".$row['Id_noticias']."'", $conexion);
  9.     header ("location: index.php");
  10.     mysql_close ($conexion);
  11. }
  12. ?>

PD: Se puede mejorar y afinar mucho mas ;)
Hola Shakaran

Gracias por tu ayuda, ya lo probe, pero no funciona del todo bien, porque imaginate que yo puedo tener n cantidad de noticias publicadas, y cuando tu le pones el limit al select, el solo me toma la noticia con id 1 por ejemplo, pero si por debajo de esta noticias hay por ejemplo 50 mas publicadas y yo quiero tomar al azar varias de estas noticias y votarlas, solo me incrementa la noticia con id 1 y las demas siguen en cero, ¿habra posibilidad de que se pueda hacer asi, es decir que yo pueda tomar al azar y calificar las que yo quiera?.

Mas sin embargo te agradezco mucho tu colaboracion, muy oportuna la verdad, definitvamente tu sabes mas que yo en esto y se te nota, espero me puedas solucionar ese pedazito, ya casi esta hecho.

Gracias
  #11 (permalink)  
Antiguo 07/07/2010, 15:56
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

como haces para ingresar a la noticia que deseas??
  #12 (permalink)  
Antiguo 07/07/2010, 16:00
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
donde le das a votar deberias de mandar el id de la noticia para no tener q consultar xq haces una consulta a la tabla pero no especificas cual noticia ahi te esta limitando a una pero cual?? deberias enviarla desde el formulario sino quieres que este visible en ningun campo usa un <input='hidden'> que es igual a un campo oculto donde tengas el id de la noticia para saber especificamente a cual le daras el voto
Hola Carlos, claro ese es el problema, mira, yo como usuario de la pagina publico la noticia, con todo, con titulo, con tags, con descripcion de la noticia y con el link de donde proviene.

la aplicacion inserta estos datos y la BD automaticamente genera el Id_noticias pues es la primary key autoincremental y la fecha de publicacion de la noticia, esos datos son generados automaticamente en la BD y no en el formulario de publicacion.

Ahora bien despues de que el sistema publica la noticia, este la muestra en el index.php, ahi la noticia aparece publicada y al lado de cada noticia que se va publicando hay un boton donde dice votar y este boton de votar es el que genera la accion a voto.php. Ese es el problema, como hago para capturar el Id_noticia de la noticia que yo quiera votar, sin importar si es la primer noticia publicada, o la decima o la veinteava.

Eso es lo que no he logrado solucionar. Espero que me puedas dar una luz.

Y gracias por toda tu ayuda.
  #13 (permalink)  
Antiguo 07/07/2010, 16:04
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

la noticia la tienes que mostrar mediante una consulta a la base de datos me imagino yo ahi en esa consulta donde te traes los datos que me imagino el titulo y los detalles de la noticia ahi tambien trae la id de esa noticia
  #14 (permalink)  
Antiguo 07/07/2010, 16:05
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
como haces para ingresar a la noticia que deseas??
Carlos haz de cuenta que es como en meneame.net, que te van apareciendo las noticias una tras otra publicada, dependiendo en este caso y aun por que esta muy cruda la aplicacion por orden de fecha, y si te fijas pueden haber 100 noticias y yo puedo votar las que quiera y a las que yo vote me debe sumar los votos y las que no vote dejarmelas tal cual.
  #15 (permalink)  
Antiguo 07/07/2010, 16:14
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Problema con sistema de votacion

El limit 1 te lo he puesto porque SOLO vas a recibir un resultado cuando comparas con un id de noticia.
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #16 (permalink)  
Antiguo 07/07/2010, 16:19
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

pon algo de donde muestras la noticia para ver si se te puede guiar mejor
  #17 (permalink)  
Antiguo 07/07/2010, 16:27
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
pon algo de donde muestras la noticia para ver si se te puede guiar mejor
Vale mira este es el php de index.php

<?php
session_start();

error_reporting(0);

$voto = $_REQUEST['voto'];



$conexion = mysql_connect("localhost", "admin", "") or die ("Fallo en la conexion al servidor");
mysql_select_db ("xxx") or die ("No se pudo encontrar la Base de Datos");


if (isset($_SESSION['sesion']))
{
print ("&nbsp;Bienvenido&nbsp;&nbsp;" . $_SESSION['sesion']);
}
?>
</div>

<div id="container">


<div id="header"><a href="index.php"><img src="images/HEAD5.png" alt="HeImg" border="0" /></a>
<!-- end #header -->
<div id="header3"><a href="registro.php">Registrate</a></div>
<?php
if(isset($_SESSION['sesion']) == true)
{
echo '<div id="header2"><a href="login.php" id="login" style="display:none">Login</a></div>';
echo '<div id="header4"><a href="salir.php" id="salir" style="display:">Cerrar Sesion</a></div>';
echo '<div id="noticia"><a href="publicacion.php" style="display:">Publicar Noticia</a></div>';
}
else
echo '<div id="header2"><a href="login.php" id="login" style="display:">Login</a></div>';
echo '<div id="header4"><a href="salir.php" id="salir" style="display:none">Cerrar Sesion</a></div>';
echo '<div id="noticia"><a href="publicacion.php" style="display:none">Publicar Noticia</a></div>';
?>

</div>
<div id="sidebar1">
<h3>Contenido de sidebar1</h3>
<!-- end #sidebar1 --></div>
<div id="mainContent">
<div id="publicar">
<?php
$conexion = mysql_connect("localhost", "admin", "") or die (mysql_error());
mysql_select_db ("xxx") or die (mysql_error());
$noticias = "select * from noticias order by fecha";
$consulta = mysql_query ($noticias, $conexion) or die (mysql_error());

$noticialink = "select titulo, link from noticias";
$consultalink = mysql_query ($noticialink, $conexion) or die (mysql_error());
$id ="select Id_noticias from noticias";
$consid = mysql_query ($id, $conexion) or die (mysql_error());



$nfilas = mysql_num_rows ($consulta);
if ($nfilas > 0)
{
print ('<div id="titulo"><h1><a></a></h1></div>');
print ('<div id="descripcion"><h3></h3></div>');
print ('<div id="enlace"><h4></h4></div>');
print ('<div id="etiquetas"><h4></h4></div>');


for ($i=0; $i<$nfilas; $i++)

{

$resultado = mysql_fetch_array ($consultalink);
$resultado = mysql_fetch_array ($consulta);
$resid = mysql_fetch_array ($consid);
print ('<div id="tabla">');
print ('<table class=marcovoto><tr><td><img src="images/marcovoto.png" /></td></tr><tr><td><div class="voto"><form name="voto" method="POST" action="voto.php"><input type="submit" name="voto" id="botonvoto" value="SUMA"/></form></div></td></tr></table>');
print ('<div id="intabla">');
print ('<div id="titulo"><h1><a href='.$resultado['link'].'>'.$resultado['titulo'].'</a></h1></div>');
print ('<div id="descripcion"><h3>'.$resultado['comentario'].'</h3></div>');
print ('<div id="enlace"><h4>'.$resultado['link'].'</h4></div>');
print ('<div id="etiquetas"><h4>'.$resultado['tags'].'</h4></div>');
print ('</div>');
print ('</div>');

}


}

mysql_close($conexion);



?>

Lo que esta marcado en rojo, lo acabo de poner porque estoy haciendo la prueba de llamar al Id_noticias
  #18 (permalink)  
Antiguo 07/07/2010, 16:36
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

tehice algunos comentarios ve si te sirve
Código PHP:
<?php
session_start
();

error_reporting(0);

$voto $_REQUEST['voto'];



$conexion mysql_connect("localhost""admin""") or die ("Fallo en la conexion al servidor");//aqui conectaste
mysql_select_db ("xxx") or die ("No se pudo encontrar la Base de Datos");


if (isset(
$_SESSION['sesion']))
{
print (
"&nbsp;Bienvenido&nbsp;&nbsp;" $_SESSION['sesion']);
}
?>
</div>

<div id="container">


<div id="header"><a href="index.php"><img src="images/HEAD5.png" alt="HeImg" border="0" /></a>
<!-- end #header -->
<div id="header3"><a href="registro.php">Registrate</a></div>
<?php
if(isset($_SESSION['sesion']) == true)
{
echo 
'<div id="header2"><a href="login.php" id="login" style="display:none">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:">Publicar Noticia</a></div>';
}
else
echo 
'<div id="header2"><a href="login.php" id="login" style="display:">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:none">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:none">Publicar Noticia</a></div>';
?>

</div>
<div id="sidebar1">
<h3>Contenido de sidebar1</h3>
<!-- end #sidebar1 --></div>
<div id="mainContent">
<div id="publicar">
<?php
$conexion 
mysql_connect("localhost""admin""") or die (mysql_error());//aqui vuelves a conectarte??
mysql_select_db ("xxx") or die (mysql_error());
$noticias "select * from noticias order by fecha";
$consulta mysql_query ($noticias$conexion) or die (mysql_error());

$noticialink "select titulo, link from noticias";
$consultalink mysql_query ($noticialink$conexion) or die (mysql_error());
$id ="select Id_noticias from noticias";
$consid mysql_query ($id$conexion) or die (mysql_error());


$nfilas mysql_num_rows ($consulta);
if (
$nfilas 0)
{
print (
'<div id="titulo"><h1><a></a></h1></div>');
print (
'<div id="descripcion"><h3></h3></div>');
print (
'<div id="enlace"><h4></h4></div>');
print (
'<div id="etiquetas"><h4></h4></div>');


for (
$i=0$i<$nfilas$i++)

{

$resultado mysql_fetch_array ($consultalink);
$resultado mysql_fetch_array ($consulta);
$resid mysql_fetch_array ($consid);
print (
'<div id="tabla">');
print (
'<table class=marcovoto><tr><td><img src="images/marcovoto.png" /></td></tr><tr><td><div class="voto"><form name="voto" method="POST" action="voto.php"><input type="submit" name="voto" id="botonvoto" value="SUMA"/></form></div></td></tr></table>');
print (
'<div id="intabla">');
print (
'<div id="titulo"><h1><a href='.$resultado['link'].'>'.$resultado['titulo'].'</a></h1></div>');
print (
'<div id="descripcion"><h3>'.$resultado['comentario'].'</h3></div>');
print (
'<div id="enlace"><h4>'.$resultado['link'].'</h4></div>');
print (
'<div id="etiquetas"><h4>'.$resultado['tags'].'</h4></div>');
//pudieras agregar un link para votar algo asi 
print ('<h1><a href=lapagina_donde_actualizas_votos.php?id_noticia='.$resultado['id_noticia'].'>Votar</a></h1>');//ahi cada noticia tendria este link donde envias la id de tu noticia a la pagina donde recibes el voto se supone que al hacer click aqui ya estas votando y tienes la id de la noticia espero  
print ('</div>');
print (
'</div>');

}


}

mysql_close($conexion);



?>
  #19 (permalink)  
Antiguo 07/07/2010, 16:36
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Problema con sistema de votacion

Uff, puedes editar el código para poner mejor el resaltado de sintaxis con el boton highlight? Asi te sale la linea y nos indicas esa, es mucho mejor asi.

Tienes varias cosas a mejorar para tener "buena letra" en tu código.

Algunas fáciles:
- Cambiar los printf por echo
- No usar variables para guardar la cadena de SQL, ponlas directamente en la función de mysql_query

Corrige esas cosas y vemos
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #20 (permalink)  
Antiguo 07/07/2010, 17:40
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
tehice algunos comentarios ve si te sirve
Código PHP:
<?php
session_start
();

error_reporting(0);

$voto $_REQUEST['voto'];



$conexion mysql_connect("localhost""admin""") or die ("Fallo en la conexion al servidor");//aqui conectaste
mysql_select_db ("xxx") or die ("No se pudo encontrar la Base de Datos");


if (isset(
$_SESSION['sesion']))
{
print (
"&nbsp;Bienvenido&nbsp;&nbsp;" $_SESSION['sesion']);
}
?>
</div>

<div id="container">


<div id="header"><a href="index.php"><img src="images/HEAD5.png" alt="HeImg" border="0" /></a>
<!-- end #header -->
<div id="header3"><a href="registro.php">Registrate</a></div>
<?php
if(isset($_SESSION['sesion']) == true)
{
echo 
'<div id="header2"><a href="login.php" id="login" style="display:none">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:">Publicar Noticia</a></div>';
}
else
echo 
'<div id="header2"><a href="login.php" id="login" style="display:">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:none">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:none">Publicar Noticia</a></div>';
?>

</div>
<div id="sidebar1">
<h3>Contenido de sidebar1</h3>
<!-- end #sidebar1 --></div>
<div id="mainContent">
<div id="publicar">
<?php
$conexion 
mysql_connect("localhost""admin""") or die (mysql_error());//aqui vuelves a conectarte??
mysql_select_db ("xxx") or die (mysql_error());
$noticias "select * from noticias order by fecha";
$consulta mysql_query ($noticias$conexion) or die (mysql_error());

$noticialink "select titulo, link from noticias";
$consultalink mysql_query ($noticialink$conexion) or die (mysql_error());
$id ="select Id_noticias from noticias";
$consid mysql_query ($id$conexion) or die (mysql_error());


$nfilas mysql_num_rows ($consulta);
if (
$nfilas 0)
{
print (
'<div id="titulo"><h1><a></a></h1></div>');
print (
'<div id="descripcion"><h3></h3></div>');
print (
'<div id="enlace"><h4></h4></div>');
print (
'<div id="etiquetas"><h4></h4></div>');


for (
$i=0$i<$nfilas$i++)

{

$resultado mysql_fetch_array ($consultalink);
$resultado mysql_fetch_array ($consulta);
$resid mysql_fetch_array ($consid);
print (
'<div id="tabla">');
print (
'<table class=marcovoto><tr><td><img src="images/marcovoto.png" /></td></tr><tr><td><div class="voto"><form name="voto" method="POST" action="voto.php"><input type="submit" name="voto" id="botonvoto" value="SUMA"/></form></div></td></tr></table>');
print (
'<div id="intabla">');
print (
'<div id="titulo"><h1><a href='.$resultado['link'].'>'.$resultado['titulo'].'</a></h1></div>');
print (
'<div id="descripcion"><h3>'.$resultado['comentario'].'</h3></div>');
print (
'<div id="enlace"><h4>'.$resultado['link'].'</h4></div>');
print (
'<div id="etiquetas"><h4>'.$resultado['tags'].'</h4></div>');
//pudieras agregar un link para votar algo asi 
print ('<h1><a href=lapagina_donde_actualizas_votos.php?id_noticia='.$resultado['id_noticia'].'>Votar</a></h1>');//ahi cada noticia tendria este link donde envias la id de tu noticia a la pagina donde recibes el voto se supone que al hacer click aqui ya estas votando y tienes la id de la noticia espero  
print ('</div>');
print (
'</div>');

}


}

mysql_close($conexion);



?>

Hola Carlos

Corregi segun lo que tu pusiste.

Esto es index.php donde se publican las noticias.


Código PHP:
<?php
session_start
();

error_reporting(0);

$conexion mysql_connect("localhost""admin""") or die ("Fallo en la conexion al servidor");//aqui conectaste
mysql_select_db ("noos") or die ("No se pudo encontrar la Base de Datos");


if (isset(
$_SESSION['sesion']))
{
print (
"&nbsp;Bienvenido&nbsp;&nbsp;" $_SESSION['sesion']);
}
?>
</div>

<div id="container">


<div id="header"><a href="index.php"><img src="images/NOOSHEAD5.png" alt="HeImg" border="0" /></a>
<!-- end #header -->
<div id="header3"><a href="registro.php">Registrate</a></div>
<?php
if(isset($_SESSION['sesion']) == true)
{
echo 
'<div id="header2"><a href="login.php" id="login" style="display:none">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:">Publicar Noticia</a></div>';
}
else
echo 
'<div id="header2"><a href="login.php" id="login" style="display:">Login</a></div>';
echo 
'<div id="header4"><a href="salir.php" id="salir" style="display:none">Cerrar Sesion</a></div>';
echo 
'<div id="noticia"><a href="publicacion.php" style="display:none">Publicar Noticia</a></div>';
?>

</div>
<div id="sidebar1">
  <h3>Contenido de sidebar1</h3>
      <p>El color de fondo de este div sólo se mostrará a lo largo del contenido. Si desea utilizar una línea divisoria en su lugar, coloque un borde en el lado derecho del div #mainContent si el div #mainContent siempre va a incluir más contenido que el div #sidebar1. </p>
      <p>Donec eu mi sed turpis feugiat feugiat. Integer turpis arcu, pellentesque  eget, cursus et, fermentum ut, sapien. </p>
      <!-- end #sidebar1 --></div>
<div id="mainContent">
<div id="publicar">
<?php
$noticias 
"select * from noticias order by fecha";
$consulta mysql_query ($noticias$conexion) or die (mysql_error());

$noticialink "select titulo, link from noticias";
$consultalink mysql_query ($noticialink$conexion) or die (mysql_error());
$id ="select Id_noticias from noticias";
$consid mysql_query ($id$conexion) or die (mysql_error());


$nfilas mysql_num_rows ($consulta);
if (
$nfilas 0)
{
echo 
'<div id="titulo"><h1><a></a></h1></div>';
echo 
'<div id="descripcion"><h3></h3></div>';
echo 
'<div id="enlace"><h4></h4></div>';
echo 
'<div id="etiquetas"><h4></h4></div>';


for (
$i=0$i<$nfilas$i++)

{

$resultado mysql_fetch_array ($consultalink);
$resultado mysql_fetch_array ($consulta);
$resid mysql_fetch_array ($consid);
echo 
'<div id="tabla">';
echo 
'<table class=marcovoto><tr><td><img src="images/marcovoto.png" /></td></tr><tr><td><div class="voto"><h1><a href=voto.php?Id_noticias='.$resultado['Id_noticias'].'>SUMA</a></h1></div></td></tr></table>';//En este div class llamado voto, se aloja el link
echo '<div id="intabla">';echo '<div id="titulo"><h1><a href='.$resultado['link'].'>'.$resultado['titulo'].'</a></h1></div>';
echo 
'<div id="descripcion"><h3>'.$resultado['comentario'].'</h3></div>';
echo 
'<div id="enlace"><h4>'.$resultado['link'].'</h4></div>';
echo 
'<div id="etiquetas"><h4>'.$resultado['tags'].'</h4></div>';
echo 
'</div>';
echo 
'</div>';

}


}

mysql_close($conexion);



?>

Y esto es voto.php donde se votan las noticias



Código PHP:
 <?php
   
    session_start
();
    
error_reporting(0);
    
$conexion mysql_connect ("localhost""admin""") or die (mysql_error());
    
mysql_select_db ("noos") or die (mysql_error());
     
    
$res mysql_query ("SELECT Id_noticias FROM noticias WHERE Id_noticias LIMIT 1"$conexion);
    
$row mysql_fetch_array ($res);
    
$sumavotos mysql_query ("update noticias set voto=voto+1 where Id_noticias='".$row['Id_noticias']."'"$conexion);
    
header ("location: index.php");
      
mysql_close ($conexion);
   
  
      
?>
Pero aun me sigue calificando solo la noticia con Id_noticias = 1

Tengo dos noticias mas es decir 3 noticias en total con su respectivo Id_noticias y si voto cualquiera de ellas, el voto se me suma solamente en la noticia con Id_noticias = 1
  #21 (permalink)  
Antiguo 07/07/2010, 17:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

obvio se esta creando el vincuo solo en una si kieres varios votos y despues votar creo que tienes que crear un formulario y ponerle un check para que seleccionar que vas a votar por la noticia y en el valor del check iria la id
  #22 (permalink)  
Antiguo 07/07/2010, 18:06
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
obvio se esta creando el vincuo solo en una si kieres varios votos y despues votar creo que tienes que crear un formulario y ponerle un check para que seleccionar que vas a votar por la noticia y en el valor del check iria la id
Hola Carlos, no te entiendo, o mas bien creo que yo no me he hecho entender.

si yotengo en index.php 100 noticias por ejemplo, todas de distintas tematicas, y yo como usuario voy navegando y mirando las noticias que me interesan y las voy votando, eso si, cada noticia solo se puede votar una sola vez, el tema es que las noticias que yo vote, las que yo quiera las pueda votar y que esas noticias que yo vote se le sumen su voto.

No se, si es claro, ahora por otro lado en voto.php no entiendo el LIMIT 1 del Select, no se supone que eso es para limitar a que la unica noticia que se puede votar o que va a acumular votos sea la noticia con Id_noticia = 1, porque eso es lo que me hace, yo voto otras noticias y el voto me lo suma a la noticia con id = 1.

No se si es claro lo que yo quiero hacer...
  #23 (permalink)  
Antiguo 07/07/2010, 18:07
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 15 años, 11 meses
Puntos: 9
Respuesta: Problema con sistema de votacion

Te voy a dar un código simplificado para que se entiendas la idea, después tu trasládalo al tuyo:

Para mostrar las noticias con su correspondiente botón de votar:

Código PHP:
Ver original
  1. <?php
  2. session_start(); //etc...
  3.  
  4. $C=mysql_query("SELECT id, Titulo, Resumen FROM noticias ORDER BY Fecha DESC");
  5. while ($R=mysql_fetch_array($C)) {
  6.      echo "<h2>".$R["Titulo"]."</h2>\n";
  7.      echo "<p>".$R["Resumen"]."</p>\n";
  8. ?>
  9. <form method="post" action="voto.php">
  10. <input type="hidden" name="nid" value="<?= $R["id"] ?>" />
  11. <input type="submit" value="votar" />
  12. </form>
  13. <?php
  14. }
  15.  
  16. // etc..
  17. ?>

Luego en el archivo voto.php:

Código PHP:
Ver original
  1. <?php
  2. $conexion = mysql_connect ("localhost", "admin", "") or die (mysql_error());
  3.  
  4. //Acá está la clave, esto es lo único que necesitas para registrar el voto:
  5. if (isset($_POST["nid"]))
  6.      mysql_query("UPDATE noticias SET voto=voto+1 WHERE id=".$_POST["nid"]);
  7.  
  8. mysql_close ($conexion);
  9. header ("location: index.php");
  10. ?>

Miralo, si hay algo que no se entiende avisame.
__________________
Saludos.

Gustavo
  #24 (permalink)  
Antiguo 07/07/2010, 18:24
Avatar de shakaran  
Fecha de Ingreso: agosto-2005
Ubicación: España - Ciudad Real
Mensajes: 374
Antigüedad: 18 años, 7 meses
Puntos: 7
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por camrodri2010 Ver Mensaje
Hola Carlos, no te entiendo, o mas bien creo que yo
No se, si es claro, ahora por otro lado en voto.php no entiendo el LIMIT 1 del Select, no se supone que eso es para limitar a que la unica noticia que se puede votar o que va a acumular votos sea la noticia con Id_noticia = 1, porque eso es lo que me hace, yo voto otras noticias y el voto me lo suma a la noticia con id = 1.

No se si es claro lo que yo quiero hacer...
El LIMIT no te limita a la noticia 1, lo hace hace es limitar la consulta a que devuelva SOLO un resultado (una fila) no varias, ya que solo lo vas hacer para una id, si fuera id=1 AND id=2 AND id=80, y supieras que son siempre 3 resultados, seria poner LIMIT 3
__________________
Quijost Backend Engineer - www.quijost.com - Hosting rápido, eficiente y profesional
Blog: www.shakaran.net
  #25 (permalink)  
Antiguo 07/07/2010, 18:34
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

bueno si kieres que solo pueda votar una vez creo que en tu tabla noticia debes de incluir un campo id_usuario o algo asi y antes de votar haces una consulta con la id del voto mas el id_usuario de manera que si te lo encuentra ya ese usuario voto por esa noticia y no debe dejarlo votar mandas un mensaje de error o noc q tengas tu pensado y bueno yo los sistemas de vtos que e visto casi siempre es uno por uno el voto de la manera qt plantie para mandar la id seria cuestion de ponerle un pokito y colocar como te dig check para seleccionar varias noticias y luego darle a votar pero entonces en la pagina donde recibes los votos tendrias ue hacerlo con foreach yaque estarias trabajando el voto de como si fuera un arreglo pero creo que si se puede
  #26 (permalink)  
Antiguo 07/07/2010, 18:40
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 15 años, 11 meses
Puntos: 9
Respuesta: Problema con sistema de votacion

Si claro, Carlos. El sistema debería memorizar los votos de los usuarios para que no se repitan, ya sean si son usuarios registrados, guardando los votos en la DB o si son usuarios no registrados con cookies y/o guardando la IP en la DB.

Lo que ocurre es que, viendo el caracter de novato de camrodri2010, me parece que primero debería entender lo básico.
__________________
Saludos.

Gustavo
  #27 (permalink)  
Antiguo 07/07/2010, 18:46
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 13 años, 11 meses
Puntos: 461
Respuesta: Problema con sistema de votacion

bueno eso esverdad uno debe entender lo basico y bueno yo tambien soy algo novato en esto de la programacion en php pero como es interesante me e puesto y e conseguido mucha informacion y por aki por los foros me ayudaron bastante y como dice el dicho manos lavan manos y ami me gusta ayudar doy los concejos de la mejor manera quepuedo pero cualkier cosa como siempre les digo a compañeros de clase en los foros de la web ayudan bastante
  #28 (permalink)  
Antiguo 08/07/2010, 07:58
 
Fecha de Ingreso: junio-2010
Mensajes: 60
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Problema con sistema de votacion

Cita:
Iniciado por carlos_belisario Ver Mensaje
bueno eso esverdad uno debe entender lo basico y bueno yo tambien soy algo novato en esto de la programacion en php pero como es interesante me e puesto y e conseguido mucha informacion y por aki por los foros me ayudaron bastante y como dice el dicho manos lavan manos y ami me gusta ayudar doy los concejos de la mejor manera quepuedo pero cualkier cosa como siempre les digo a compañeros de clase en los foros de la web ayudan bastante
Hola CArlos, muchas gracias por tu ayuda, la verdad ya he avanzado mucho con la aplicacion que estoy desarrollando, pero me he barado mucho con este tema del sistema de votacion, imaginate, llevo un mes largo aprendiendo php y mysql, aun estoy muy crudo con el tema, pero bueno lo importante es que he avanzado con el tema, y gracias a personas como tu ahi vamos.

Etiquetas: votacion, sitemap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:25.