Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/01/2016, 18:56
xPHPerox
 
Fecha de Ingreso: julio-2015
Mensajes: 67
Antigüedad: 8 años, 9 meses
Puntos: 5
Update con suma

Buenas noches, estoy intentado desarrollar un pequeño panel de actualización para la web de un amigo.

Me pidió que en un formulario, rellenando una cantidad de campos con las actualizaciones, estos se sumaran a los puntos que ya tenía el usuario, hasta aquí todo bien.

El problema está en que el Update se ejecuta siempre, por lo tanto siempre está sumando los puntos que aparecen en el campo input del form.

El código que tengo es el siguiente:

Código PHP:
Ver original
  1. $qy = "SELECT * FROM clasificaciones";
  2. $qry = mysqli_query($con, $qy);
  3. while($rows = mysqli_fetch_assoc($qry)){
  4.     $pts = $rows['puntos'];
  5.     $pj = $rows['partidos_jugados'];
  6.     $pg = $rows['partidos_ganados'];
  7.     $pp = $rows['partidos_perdidos'];
  8.     $um = $rows['unidades_matadas'];
  9.     $up = $rows['unidades_perdidas'];
  10.     $ea = $rows['edifios_arrasados'];
  11.     $ep = $rows['edificios_perdidos'];
  12.     $ct = $rows['catillos_totales'];
  13.     $rc = $rows['reliquias_capturadas'];
  14.     $pa = $rows['poblacion_aldeanos'];
  15.     $pt = $rows['puntuacion_total'];
  16.     echo $pts;
  17. }
  18.  
  19. if(isset($_POST['guardar'])){
  20.     $id = $_POST['id'];
  21.  
  22.     for($i=0; $i<count($id); $i++){
  23.         $ptos = $_POST['puntos'][$i];
  24.         $p_j = $_POST['pj'][$i];
  25.         $p_g = $_POST['pg'][$i];
  26.         $p_p = $_POST['pp'][$i];
  27.         $u_m = $_POST['um'][$i];
  28.         $u_p = $_POST['up'][$i];
  29.         $e_a = $_POST['ea'][$i];
  30.         $e_p = $_POST['ep'][$i];
  31.         $c_t = $_POST['ct'][$i];
  32.         $r_c = $_POST['rc'][$i];
  33.         $p_a = $_POST['pa'][$i];
  34.         $p_t = $_POST['pt'][$i];
  35.  
  36.         echo "<br>";
  37.  
  38. $update = "UPDATE clasificaciones SET
  39. puntos=$pts+$ptos,
  40. partidos_jugados=$pj+$p_j,
  41. partidos_ganados=$pg+$p_g,
  42. partidos_perdidos=$pp+$p_p,
  43. unidades_matadas=$um+$u_m,
  44. unidades_perdidas=$up+$u_p,
  45. edifios_arrasados=$ea+$e_a,
  46. edificios_perdidos=$ep+$e_p,
  47. catillos_totales=$ct+$c_t,
  48. reliquias_capturadas=$rc+$r_c,
  49. poblacion_aldeanos=$pa+$p_a,
  50. puntuacion_total=$pt+$p_t
  51. WHERE id=$id[$i]";
  52.        
  53. $updt = mysqli_query($con, $update);
  54.  
  55. echo $update;
  56.     }
  57. }

Para realizar la suma lo que he hecho ha sido realizar una consulta a la BD, metiendo los resultados en variables que luego utilizo en el Update junto a las que vienen del formulario.

Más tarde me di cuenta de que en realidad la consulta da lo mismo, basta con poner en el Update SET puntos = puntos + $pts, es algo a modificar también, pero ahora me urge mucho más el tema de la suma.

Le he dado mil vueltas a la cabeza, y no encuentro la forma de solucionar esto.

Un saludo y gracias