Foros del Web » Programando para Internet » PHP »

votacion y/o puntaje

Estas en el tema de votacion y/o puntaje en el foro de PHP en Foros del Web. Buenas , tengo un problemon , no puedo crear un sistema de puntaje que lo tengo que crear para antes de la tarde de hoy ...
  #1 (permalink)  
Antiguo 08/02/2009, 07:49
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Mensaje votacion y/o puntaje

Buenas , tengo un problemon , no puedo crear un sistema de puntaje que lo tengo que crear para antes de la tarde de hoy , pero voy mal , miren , la idea seria que cada usuario pueda votar una cierta cantidad de puntos por dia depende a a su rango , pero esto no es lo importante, la cosa es que no puedo sumar los puntos, tengo una tabla llamada "puntos" , con estos campos:

id - id_post - nombre_post - pts - id_usuario

miren les muestro los codes que tengo :

este es donde saldria : 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10

Código PHP:
<?

include("config.php");

$cls mysql_query("SELECT * FROM usuarios WHERE id = '$_COOKIE[id]'");
$clr mysql_fetch_array($cls);


$cls[puntos] = $puntos;

for(
$puntos=1;$puntos<11;$puntos++)
echo 
"<a href='dar_puntos.php?puntos=".$puntos."&id_post=".$result[id]."&nombre_post=".$result[nombre]."&id_usuario=".$_COOKIE[id]."'>$puntos </a>  -  ";
?>

(Esto me tira un error:
Cita:
Warning: Cannot use a scalar value as an array in /home/gu000220/public_html/post.php on line 160

PD: la linea 160 es la de la mitad de esas que les pase recien.

Ahora el dar_puntos.php

Código PHP:
<?


include("config.php");




mysql_query("UPDATE puntos SET puntos=puntos+$_GET[puntos], id_usuario=id_usuario+$_COOKIE[id], nombre_post=nombre_post+$_GET[nombre_post], puntos=puntos+$_GET[puntos],");


echo
'<script>
alert("Puntos agregados");

</script>'
;
?>

NO AGREGA LOS PUNTOS



espero que me puedan dar una mano , un abrazo
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #2 (permalink)  
Antiguo 08/02/2009, 08:10
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Vamos por partes

Código PHP:
<?

include("config.php");

$cls mysql_query("SELECT * FROM usuarios WHERE id = '$_COOKIE[id]'");
$clr mysql_fetch_array($cls);


$cls[puntos] = $puntos;

for(
$puntos=1;$puntos<11;$puntos++)
echo 
"<a href='dar_puntos.php?puntos=".$puntos."&id_post=".$result[id]."&nombre_post=".$result[nombre]."&id_usuario=".$_COOKIE[id]."'>$puntos </a>  -  ";
?>
$cls[puntos] = $puntos no tiene mucho sentido, tendría que ser $puntos=$cls['puntos'], y ni así, yo creo que lo que tu quieres hacer es $puntos = $clr['puntos'];

Después en el bucle for utilizas una variable $result que no veo de donde sale, creo que igualmente tienes que utilizar la variable $clr['campo_que_quieras'];

Código PHP:
<?


include("config.php");




mysql_query("UPDATE puntos SET puntos=puntos+$_GET[puntos], id_usuario=id_usuario+$_COOKIE[id], nombre_post=nombre_post+$_GET[nombre_post], puntos=puntos+$_GET[puntos],");


echo
'<script>
alert("Puntos agregados");

</script>'
;
?>
Ahí, aunque no sea por eso y sea sólo por clarificar el código, cuando hagas una suma ponla entre paréntesis Ej: puntos=(puntos+$_GET[puntos])

Y al final del UPDATE sobre una coma, esta => ,");

A ver si te sirve la ayuda
  #3 (permalink)  
Antiguo 08/02/2009, 08:19
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

muchisimas gracias por responder , miren el error este desaparecio :

Cita:
Warning: Cannot use a scalar value as an array in /home/gu000220/public_html/post.php on line 160

Pero sigue sin insertar los datos , la variable $RESULT esta en la codigo mas arriba es el array de la noticia , igualmente tambien probe con escribir la URL con los respectivos GET'S para probar si insertaba pero no...

Les muestro como esta:

Código PHP:

<?


include("config.php");




mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos]), id_usuario=(id_usuario+$_COOKIE[id]), nombre_post=(nombre_post+$_GET[nombre_post]), puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;
?>
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #4 (permalink)  
Antiguo 08/02/2009, 08:26
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Código PHP:

<?


include("config.php");




mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos]), id_usuario=(id_usuario+$_COOKIE[id]), nombre_post=(nombre_post+$_GET[nombre_post]), puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;
?>
La función $_GET tiene que tener la posición que quieres buscar entre comillas, sería $_GET['puntos'];

Aparte de esto, has mencionado que quieres insertar. Para insertar en la bd una tupla es la instrucion mysql INSERT. UPDATE es para actualizar
  #5 (permalink)  
Antiguo 08/02/2009, 08:28
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

si es verdad , ahora hise esto , :
Código PHP:
<?


include("config.php");




mysql_query("INSERT INTO puntos (id_usuario, nombre_post, id_post) VALUES ('$_GET[id_usuario]', '$_GET[nombre_post]', '$_GET[id_post]')");

mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;
?>
Pero cada vez que el usuario envia puntos se crea un nuevo registro sumandole los respectivos puntos y yo quiero que se registre solo una vez los datos (id_post , id_usuario ,etc) y que se actualizen los datos , como lo puedo lograr ?
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #6 (permalink)  
Antiguo 08/02/2009, 08:33
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Pues puedes hacer un SELECT de la tabla puntos buscando si existe ya el dato que no se quiere volver a insertar. Si el SELECT te devuelve alguna tupla es que existe ya, y no insertas, y si no existe pues lo insertas.
  #7 (permalink)  
Antiguo 08/02/2009, 08:37
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

ahhh , le puedo hacer un SELECT y despues con el IF , como le digo con IF que si no existe un registro en la BD que haga el insert y que sino haga el UPDATE ?

Yo hise esto pero no funciona , esta mal dicho el IF del principio :

Código PHP:

<?


include("config.php");


$silla mysql_query("SELECT * FROM puntos");

$sll mysql_fetch_array($silla);

if(
$sll[id_usuario] && $sll[nombre_post] && $sll[id_post]=="")

{


mysql_query("INSERT INTO puntos (id_usuario, nombre_post, id_post) VALUES ('$_GET[id_usuario]', '$_GET[nombre_post]', '$_GET[id_post]')");

mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;



}




else
{



mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;

}

?>

PD: TAMBIEN PROBE CON:

Código PHP:
if($sll[id_usuario] && $sll[nombre_post] && $sll[id_post]==NULL

Pero no funca , como lo puedo hacer ?
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #8 (permalink)  
Antiguo 08/02/2009, 08:42
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Prueba con:

Código PHP:

$num_tuplas 
mysql_num_rows($silla);

if(!
num_tuplas){

// Haces el insert

}

// Haces el update 
  #9 (permalink)  
Antiguo 08/02/2009, 08:50
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

probe pero no registra :( , mira esta asi mi codigo:

Código PHP:
<?


include("config.php");


$silla mysql_query("SELECT * FROM puntos");

$num_tuplas mysql_num_rows($silla);

if(!
num_tuplas){



mysql_query("INSERT INTO puntos (id_usuario, nombre_post, id_post) VALUES ('$_GET[id_usuario]', '$_GET[nombre_post]', '$_GET[id_post]')");

mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;




}




mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;


?>
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #10 (permalink)  
Antiguo 08/02/2009, 08:53
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Si pones un update dentro del if y otro fuera, realizará dos veces el update. Dentro del if no te hace falta un update, el if solo es necesario para saber si tienes que insertar o no, updatear lo vas a hacer siempre.

Si ese script no te inserta es porque en la tabla puntos hay algo. De todas formas, el select debería ser buscando si ya existe el idpost o el idusuario, lo que tu quieras comprobar que no se repita en la tabla.
  #11 (permalink)  
Antiguo 08/02/2009, 08:57
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

ahi me anduvo , muchisimas gracias , TiempoMuerto , te sale karma :) un abrazo
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #12 (permalink)  
Antiguo 08/02/2009, 09:03
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

ah , che mira , aca en el for , aunque yo le de 5 pts me sigue mostrando para dar 10 pts,aclaro que le puse un update para restarle a los puntos del usuario y los resta bien , pero aca me muetra todos:

Código PHP:

for($puntos=1;$puntos<11;$puntos++)
echo 
"<a href='dar_puntos.php?puntos=".$puntos."&id_post=".$result[id]."&nombre_post=".$result[nombre]."&id_usuario=".$result[nick]."'>- $puntos </a>  "
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #13 (permalink)  
Antiguo 08/02/2009, 09:20
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Estoy totalmente fuera de contexto, no puedo entender el funcionamiento de tu sistema xD
  #14 (permalink)  
Antiguo 08/02/2009, 09:26
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

Es asi , tengo en la tabla "Usuarios" un campo llamado "Puntos" en el cual se almacena los puntos que tiene cada usuario para darle a los otros usuarios , y tengo una tabla llamada "Puntos" que almacena los puntos que entregan los usuarios unos a otros , entonces hago el update sumandole a la tabla "Puntos" y un Update quitandole la cantidad enviada por el usuario en el campo "Puntos" de la tabla "Usuarios" , espero que me entiendas XD

Lo que necesito es que el FOR me muestre los numeros del 1 al 10 pero la cantidad que el usuario tenga en el campo "Puntos" en la tabla "Usuarios"

Porque ahora suponete , yo envio 5 puntos , y se me restan en la tabla usuarios en el campo puntos , y se suman a la tabla puntos , pero en el articulo me siguen apareciendo los 10 numeros para votar , cuando solo tendrian que aparecer 5 , 1 - 2 - 3 - 4 - 5 , se entiende?
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #15 (permalink)  
Antiguo 08/02/2009, 09:32
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Alto y claro

Código PHP:

for($i=$i<puntos $i++)
echo 
"<a href='dar_puntos.php?puntos=".$i."&id_post=".$result['id']."&nombre_post=".$result['nombre']."&id_usuario=".$result['nick']."'>- $i </a>  "
  #16 (permalink)  
Antiguo 08/02/2009, 09:52
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

:( no me muestra ni un numero , me fije en la tabla y tengo 11 puntos en mi usuario , entro al articulo pero me aparece "Dar puntos: " y no aparece nada :S

Código PHP:

for($i=$i<$puntos $i++)
echo 
"<a href='dar_puntos.php?puntos=".$i."&id_post=".$result['id']."&nombre_post=".$result['nombre']."&id_usuario=".$result['nick']."'> -$i </a>  ";  
?> 

Espero que lo podamos solucionar :)
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #17 (permalink)  
Antiguo 08/02/2009, 09:56
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Haz

Código PHP:
 echo "Puntos: ".$puntos
antes del bucle para ver el contenido de esa variable a modo de prueba.
  #18 (permalink)  
Antiguo 08/02/2009, 10:07
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

no pasa nada :(
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #19 (permalink)  
Antiguo 08/02/2009, 10:09
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Si no muestra detraás de Puntos: los puntos es porque la variable $puntos no tiene el valor que debería y el error viene de arriba no de ahí.
  #20 (permalink)  
Antiguo 08/02/2009, 10:27
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

si debe haber el error en la variable, che recien probando en los otros articulos , te acordas el if:
Código PHP:
if(!$num_tuplas){



mysql_query("INSERT INTO puntos (id_usuario, nombre_post, id_post) VALUES ('$_GET[id_usuario]', '$_GET[nombre_post]', '$_GET[id_post]')");




Bueno , en el primer articulo que le doy puntos funciona `pero cuando voy al segundo no hace el INSERT , creo que es por "if(!$num_tuplas)" eso no dice que si no hay registros en la tabla ? , porque lo que yo necesito es que no me registre dos veces el mismo articulo pero asi no me registra ningun articulo mas , solo el primero :(
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
  #21 (permalink)  
Antiguo 08/02/2009, 10:30
 
Fecha de Ingreso: junio-2007
Mensajes: 70
Antigüedad: 16 años, 10 meses
Puntos: 2
Respuesta: votacion y/o puntaje

Mirate algún tutorial de introducción a las bases de datos porque el error que tienes es de concepto :P

La búsqueda anterior a eso tiene que ser una búsqueda sobre un idusuario o id lo que sea que quieres controlar que no se repite.
  #22 (permalink)  
Antiguo 08/02/2009, 10:48
Avatar de tata009  
Fecha de Ingreso: septiembre-2008
Ubicación: En mi casa
Mensajes: 426
Antigüedad: 15 años, 7 meses
Puntos: 3
Respuesta: votacion y/o puntaje

ahh, ahi lo mejore un poco , pero ahora me registra dos veces el mismo id_post

Código PHP:
<?


include("config.php");


$silla mysql_query("SELECT * FROM puntos");

$tuplas mysql_num_rows($silla);

if(!
$tuplas[id_post]){



mysql_query("INSERT INTO puntos (id_usuario, nombre_post, id_post, puntos) VALUES ('$_GET[id_usuario]', '$_GET[nombre_post]', '$_GET[id_post]', '$_GET[puntos]')");

mysql_query("UPDATE usuarios SET puntos=(puntos-$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;



}


else

{

mysql_query("UPDATE puntos SET puntos=(puntos+$_GET[puntos])");

mysql_query("UPDATE usuarios SET puntos=(puntos-$_GET[puntos])");


echo
'<script>
alert("Puntos agregados");

</script>'
;


}

?>
__________________
SI pones un CD de MIcrosoft al reves aparecen mensajes satanicos pero si lo pones a la derecha PEOR SE TE INSTALA WINDOWS!!!!
Para webmasters e informaticos
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 04:31.