Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO insertar e actualizar monto actual con el nuevo monto

Estas en el tema de insertar e actualizar monto actual con el nuevo monto en el foro de PHP en Foros del Web. Quisiera sus opiniones de que es lo más recomendable hacer en este caso: primero tengo una tabla trasvalores que es donde se registran los montos ...
  #1 (permalink)  
Antiguo 28/07/2017, 07:06
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Información insertar e actualizar monto actual con el nuevo monto

Quisiera sus opiniones de que es lo más recomendable hacer en este caso: primero tengo una tabla trasvalores que es donde se registran los montos a diarios.

trasvalores:
Id_trasvalores
monto_trasvalores_apertura
monto_trasvalores_actual
fecha
hora
id_usuarios
entregado recibido lugar_origen

denominaciones:
id_denominacion
denominacion
cantidad
monto
id_trasvalores

proceso para registrar

Código PHP:
Ver original
  1. <!-- proceso para registrar-->
  2.  
  3. <?php
  4.  if(isset($_POST['guardar'])){
  5.  
  6.  
  7.  $sql = "SELECT fecha FROM trasvalores WHERE fecha = :fecha LIMIT 1";
  8.  //Creamos la select
  9.  $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  10.  $check->bindParam(':fecha', $_POST['fecha']);//Substituimos las variables de la SELECT
  11.  $check->execute();//Ejecutamos la consulta
  12.  $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  13.  if ($contador > 0) {
  14.  $check->closeCursor();
  15.  
  16.           $errMSG = "¡ Ups Aviso: El Registro ya se Encuentra Insertado !";
  17.  
  18.  }
  19.   else
  20.  {
  21.  
  22.  
  23.   $sql=$DB_con->prepare("INSERT INTO trasvalores (monto_trasvalores_apertura,monto_trasvalores_actual,fecha,id_usuarios,entregado,recibido,lugar_origen) VALUES ( :monto_trasvalores_apertura,:monto_trasvalores_apertura,:fecha,:id_usuarios,:entregado,:recibido,:lugar_origen)");
  24.   $sql->bindParam(':monto_trasvalores_apertura',
  25.   $_POST['monto_trasvalores_apertura']);
  26.   $sql->bindParam(':monto_trasvalores_actual',
  27.   $_POST['monto_trasvalores_apertura']);
  28.   $sql->bindParam(':fecha', $_POST['fecha']);
  29.   $sql->bindParam(':id_usuarios', $_POST['id_usuarios']);
  30.   $sql->bindParam(':entregado', $_POST['entregado']);
  31.   $sql->bindParam(':recibido', $_POST['recibido']);
  32.   $sql->bindParam(':lugar_origen', $_POST['lugar_origen']);
  33.   $sql->execute();
  34.   $last_id = $DB_con->lastInsertId();
  35.  
  36.   for ($i = 0; $i < count($_POST['denominacion']); $i++) {
  37.  
  38.       for ($i = 0; $i < count($_POST['cantidad']); $i++) {
  39.  
  40.           for ($i = 0; $i < count($_POST['monto']); $i++) {
  41.  
  42.     $sql2=$DB_con->prepare("INSERT INTO denominaciones (id_trasvalores, denominacion,cantidad,monto) VALUES (:id_trasvalores,:denominacion, :cantidad, :monto)");
  43.   $sql2->bindParam(':id_trasvalores', $last_id);
  44.   $sql2->bindParam(':denominacion', $_POST['denominacion'][$i]);
  45.   $sql2->bindParam(':cantidad', $_POST['cantidad'][$i]);
  46.   $sql2->bindParam(':monto', $_POST['monto'][$i]);
  47.  
  48.     $sql2->execute();
  49.  
  50.           $successMSG ="¡ Bien Hecho: Registro Insertado Correctamente !";
  51.  
  52.  
  53.                       }
  54.  
  55.                    }
  56.               }
  57.           }
  58.       }
  59.    ?>
  60.    <!-- fin proceso para registrar-->

ahora cual es el problema que si tengo un monto aperturado de x valor ejemplo tengo un monto aperturado de 10000 y quiero hacer otra insersión el campo monto_trasvalores_apertura y monto_trasvalores_actual deben actualizarse con el monto que se registrara nuevamente ejemplo me queda 10000 y voy hacer un nuevo registro por 30000 en total deberia haber ahora con la nueva insersión 40000 disponible.
__________________
yoclens avilan

Última edición por aviweb2015; 28/07/2017 a las 07:08 Razón: falto algo
  #2 (permalink)  
Antiguo 28/07/2017, 08:36
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: insertar e actualizar monto actual con el nuevo monto

paso 1 tienes un registro asi:


id_trasvalores 3
monto_trasvalores_apertura 10000
monto_trasvalores_actual 10000

y si hacen otra insercion de 30000 debe quedar asi?
//anterior
id_trasvalores 3
monto_trasvalores_apertura 40000
monto_trasvalores_actual 40000

//nueva
id_trasvalores 4
monto_trasvalores_apertura 40000
monto_trasvalores_actual 40000
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 30/07/2017, 12:13
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: insertar e actualizar monto actual con el nuevo monto

yo jugara con 2 tablas, una para ingresar los datos de los movimientos y otra para ir actualizando los totales, por ejemplo:

Si el registro es de tipo movimiento, solo actualizo el monto de monto_trasvalores_actual y si el movimiento es de tipo actualizar entrada, pues ajuto el de monto_trasvalores_apertura.

No se cual es la finalidad de esto, pero en una caja hay un monto de apertura y el otro es lo recaudado, por ende el monto de apertura no deberia de modificarse a menos que haya un cambio de cajero y este deba trabajar con un monto superior.

Código PHP:
Ver original
  1. $upA = $db->query("UPDATE montos SET monto_trasvalores_actual = (monto_trasvalores_actual + $monto) WHERE campo = '$loquesea'")

o algo asi, claro como dije, va a depender de cual sea la finalidad de la tabla.
__________________
[email protected]
HITCEL

Etiquetas: pdo
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 10:06.