Foros del Web » Programando para Internet » PHP »

Problema con funcion para votar comentarios

Estas en el tema de Problema con funcion para votar comentarios en el foro de PHP en Foros del Web. Buenas tardes foreros. Estoy trabajando en una aplicación para dejar comentarios (que podría parecerse al muro de facebook o al sistema de twitter para entendernos) ...
  #1 (permalink)  
Antiguo 13/10/2010, 08:21
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Problema con funcion para votar comentarios

Buenas tardes foreros. Estoy trabajando en una aplicación para dejar comentarios (que podría parecerse al muro de facebook o al sistema de twitter para entendernos) y ya casi la tengo lista, solo me falta una funcion que permita a los usuarios votar (para bien o para mal) cada comentario una unica vez.

Tengo para esto esta función:

Código PHP:
function votar() {

    
$link conecta();

    
$user $_SESSION['k_username'];
    
$votado $_GET['id'];

    
$result mysql_query("SELECT * FROM ip  WHERE usuario = '$user' AND voted = '$votado'",$link) or die(mysql_error());//comprobamos si ya se ha votado

        
while($row mysql_fetch_object($result)){
        
            
$votado $row->voted;
            
$usuario $row->usuario;

            if(
$usuario !== true && $voted !== true){//si no hemos votado, votamos

                
$result mysql_query("INSERT INTO ip (usuario,voted) VALUES ('$user','$votado')",$link) or die(mysql_error());

                    
$id $_GET['id'];
                    
$k $_GET['k'];

                    
$key mysql_query("SELECT * FROM `muro` WHERE `id` LIKE '".$id."'",$link) or die(mysql_error());

                    while(
$r mysql_fetch_object($key)){

                        
$num $r->$k;
                        
$resultado $num+1;

                        
$result mysql_query("UPDATE muro SET ".$k." = '".$resultado."' WHERE id LIKE '".$id."'"$link) or die(mysql_error());
                    }
                    
                    
header("location: ".$_SERVER['HTTP_REFERER']);
                
                }else{
//en caso contrario volvemos sin hacer nada
            
                    
header("location: ".$_SERVER['HTTP_REFERER']);

            }
        }

Que se ejecuta en un documento votar.php:

Código PHP:
<?php session_start(); include('funciones_muro.php'); include('../php/config.php');

votar();

?>
Y el enlace que aparece en cada mensaje es este:

Código PHP:
            echo '<div><span style="color:greenyellow">';
            
            echo
'<a href="muro/votar.php?id='.$key.'&k=positivo"><img src="objetos/pos.gif"></a>';

            echo 
$pos.'</span> || <span style="color:red">';
            
            echo
'<a href="muro/votar.php?id='.$key.'&k=neg"><img src="objetos/neg.gif"></a>';

            echo 
$neg.'</span>'
Mi problema es que al hacer click en el enlace, la pagina votar.php se queda en blanco, es decir, ni ejecuta la consulta, ni ejecuta el header, ni hace nada(simplemente no responde). A qué se puede deber??

Gracias por adelantado
  #2 (permalink)  
Antiguo 13/10/2010, 09:25
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con funcion para votar comentarios

Hola 3nr1c, para depurar un poco el script:

Código PHP:
error_reporting("E_ALL");
ini_set("display_errors",1); 
Código PHP:
<?php 
session_start
();
print_r($_SESSSION); 
include_once(
'funciones_muro.php'); 
include_once(
'../php/config.php');
votar();
?>
a ver qué pasa, saludos
  #3 (permalink)  
Antiguo 13/10/2010, 13:13
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con funcion para votar comentarios

Bueno, te explico... con esto:

Código PHP:
error_reporting("E_ALL");
ini_set("display_errors",1); 
Lo he probado a poner en la funcion y en el archivo votar.php y nada....

En cuanto al print_r($_SESSION);, me muestra las dos variables de sesion que hay definidas en el sistema de usuarios, es decir la id del usuario y el propio usuario:

Cita:
Array ( [k_username] => 3nr1c [id] => 2 )
  #4 (permalink)  
Antiguo 13/10/2010, 13:18
 
Fecha de Ingreso: octubre-2010
Mensajes: 29
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema con funcion para votar comentarios

cual es el problema ? :S
  #5 (permalink)  
Antiguo 13/10/2010, 13:38
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con funcion para votar comentarios

que el documento php no ejecuta nada de la funcion (unicamente recoge las variables $_GET y $_SESSION) pero no ejecuta las consultas mysql ni el header(..)
  #6 (permalink)  
Antiguo 13/10/2010, 14:09
3nr1c
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problema con funcion para votar comentarios

Bueno, ahora conseguí que el header se ejecutara (poniendolo justo antes de la llave que cierra la funcion) pero me falta lo de la consulta sql...
  #7 (permalink)  
Antiguo 14/10/2010, 07:43
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema con funcion para votar comentarios

Más debug;


Código PHP:
function votar() {

    echo 
"Inicia votar()....<br>";
    
$link conecta();
    if(!
is_resource($link))die("No hay conexion a la db");

    
$user $_SESSION['k_username'];
    
$votado $_GET['id'];

    
$result mysql_query("SELECT * FROM ip  WHERE usuario = '$user' AND voted = '$votado'",$link) or die(mysql_error());//comprobamos si ya se ha votado

        
while($row mysql_fetch_object($result)){
        
            
$votado $row->voted;
            
$usuario $row->usuario;

            
            if(
$usuario != true && $voted != true){//si no hemos votado, votamos

                
$result mysql_query("INSERT INTO ip (usuario,voted) VALUES ('$user','$votado')",$link) or die(mysql_error());

                    
$id $_GET['id'];
                    
$k $_GET['k'];

                    
$key mysql_query("SELECT * FROM `muro` WHERE `id` LIKE '".$id."'",$link) or die(mysql_error());

                    while(
$r mysql_fetch_object($key)){

                        
$num $r->$k;
                        
$resultado $num+1;

                        
$result mysql_query("UPDATE muro SET ".$k." = '".$resultado."' WHERE id LIKE '".$id."'"$link) or die(mysql_error());
                    }
                    
//Esto dará fallo porque hay un echo, pero es un fallo controlado
                    
header("location: ".$_SERVER['HTTP_REFERER']);
                
                }else{
//en caso contrario volvemos sin hacer nada
            
                    
header("location: ".$_SERVER['HTTP_REFERER']);

            }
        }

dale caña, está por salir!

Etiquetas: comentarios, facebook, muro, mysql, twitter, votar, votacion
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:10.