Foros del Web » Programando para Internet » PHP »

UPDATE SET valor+1

Estas en el tema de UPDATE SET valor+1 en el foro de PHP en Foros del Web. Hola, muy buenas. Tengo esta consulta, lo que hace es sumarle el valor de una variable a su valor inicial. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver ...
  #1 (permalink)  
Antiguo 30/06/2015, 10:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
UPDATE SET valor+1

Hola, muy buenas.

Tengo esta consulta, lo que hace es sumarle el valor de una variable a su valor inicial.

Código SQL:
Ver original
  1. mysqli_query($db, "UPDATE voto SET voto = voto + '".$_POST['rate']."' AND numero_voto =  numero_voto+1");

El problema esta en voto = voto + '".$_POST['rate']."'

¿Alguna solución que no sea crear una consulta a la base de dato para recoger el numero de votos y sumarle la variable?

Saludos.
  #2 (permalink)  
Antiguo 30/06/2015, 10:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: UPDATE SET valor+1

Bueno, por lo pronto lo que estás escribiendo está sintácticamente MAL en SQL:
Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + '".$_POST['rate']."'
  3.   AND numero_voto =  numero_voto+1

No se peude usar un AND en ese punto. Para indicar dos campos afectados por el SET se los debe separar por comas:
Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + '".$_POST['rate']."' , numero_voto =  numero_voto+1

En segundo lugar, no trates los valores de una suma como caracteres. Los numeros no son cadenas de texto, y no deben quedar entre apostrofos ('):

Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + ".$_POST['rate']." , numero_voto =  numero_voto + 1

En tercer lugar, la sentencia que pones es un UPDATE masivo, porque no le estás indicando a cuál registro de voto debe sumarle nada. Por consecuencia le sumará uno a todos y cada uno de los registros que existan en la tabla, y en todos los casos sumará uno además al campo "numero_voto".

Me parece que estás planteando mal todo el tema... La solución debería ser diferente, y los votos deberían estar en una tabla especifica, relacionada con el tema votado y con el usuario que vota.
De ese modo podrías obtener el total de votos con una simple consulta, en lugar de andar haciendi UPDATEs innecesarios.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/06/2015, 10:47
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: UPDATE SET valor+1

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Bueno, por lo pronto lo que estás escribiendo está sintácticamente MAL en SQL:
Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + '".$_POST['rate']."'
  3.   AND numero_voto =  numero_voto+1

No se peude usar un AND en ese punto. Para indicar dos campos afectados por el SET se los debe separar por comas:
Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + '".$_POST['rate']."' , numero_voto =  numero_voto+1

En segundo lugar, no trates los valores de una suma como caracteres. Los numeros no son cadenas de texto, y no deben quedar entre apostrofos ('):

Código SQL:
Ver original
  1. UPDATE voto
  2.   SET voto = voto + ".$_POST['rate']." , numero_voto =  numero_voto + 1

En tercer lugar, la sentencia que pones es un UPDATE masivo, porque no le estás indicando a cuál registro de voto debe sumarle nada. Por consecuencia le sumará uno a todos y cada uno de los registros que existan en la tabla, y en todos los casos sumará uno además al campo "numero_voto".

Me parece que estás planteando mal todo el tema... La solución debería ser diferente, y los votos deberían estar en una tabla especifica, relacionada con el tema votado y con el usuario que vota.
De ese modo podrías obtener el total de votos con una simple consulta, en lugar de andar haciendi UPDATEs innecesarios.
Gracias por comentar, elimine el WHERE para hacer el tema, pero si que hay un WHERE.

Haciendolo de la siguiente manera, tampoco me funciona.
Código MySQL:
Ver original
  1. SET voto = voto + ".$_POST['rate'].", numero_voto =  numero_voto+1
  #4 (permalink)  
Antiguo 30/06/2015, 11:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: UPDATE SET valor+1

Si lo intentaste de esa forma significa que ni siquiera has leido lo que te puse...

Yo te recomiendo NO usar ese método para las votaciones, por ineficiente. Pero es tu decisión.

Por otro lado, decir "tampoco me funciona" no es una información útil...
¿Qué no te funciona? ¿La ejecución en PHP? ¿La sentencia en SQL? ¿Verificaste que realmente estés recibiendo algo por POST? ¿AL menos comprobaste que la base no esté devolviendo un error?

Postea el código COMPLETO del script que realiza ese UPDATE.
TODO, no solo una parte. Lo que omitas puede ser lo que contiene el problema.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 30/06/2015, 11:57
 
Fecha de Ingreso: febrero-2014
Mensajes: 46
Antigüedad: 10 años, 9 meses
Puntos: 1
Respuesta: UPDATE SET valor+1

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si lo intentaste de esa forma significa que ni siquiera has leido lo que te puse...

Yo te recomiendo NO usar ese método para las votaciones, por ineficiente. Pero es tu decisión.

Por otro lado, decir "tampoco me funciona" no es una información útil...
¿Qué no te funciona? ¿La ejecución en PHP? ¿La sentencia en SQL? ¿Verificaste que realmente estés recibiendo algo por POST? ¿AL menos comprobaste que la base no esté devolviendo un error?

Postea el código COMPLETO del script que realiza ese UPDATE.
TODO, no solo una parte. Lo que omitas puede ser lo que contiene el problema.
Ya lo solucione, gracias por tu ayuda.

Etiquetas: mysql, set, update, variable
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 09:32.