Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] problemas con insersion y actualizacion

Estas en el tema de problemas con insersion y actualizacion en el foro de PHP en Foros del Web. saludos amigos, tengo las siguientes tablas: trasvalores: id_trasvalores monto_trasvalores_apertura monto_trasvalores_actual monto_trasvalores_cierre fecha id_usuarios transferencias: id_transferencias n_transferencia fecha hora monto_trasferido porcentaje ganancia total id_usuarios id_bancos_admin id_cuentas_admin ...
  #1 (permalink)  
Antiguo 13/07/2017, 15:58
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
problemas con insersion y actualizacion

saludos amigos, tengo las siguientes tablas:

trasvalores:
id_trasvalores
monto_trasvalores_apertura
monto_trasvalores_actual
monto_trasvalores_cierre
fecha
id_usuarios

transferencias:
id_transferencias
n_transferencia
fecha
hora
monto_trasferido
porcentaje
ganancia
total
id_usuarios
id_bancos_admin
id_cuentas_admin
id_clientes
id_bancos
id_cuentas
portada
status

ahora lo que necesito hacer es lo siguiente:



la tabla trasvalores es para ingresar montos por día, ejemplo: el admin hoy ingreso un monto de 100$. que seria el monto para iniciar el dia de trabajo

Ahora la tabla transferencias: para qué sirve, esta tabla es para realizar transferencias a clientes lo que quiero lograr es que cuando se haga una trasferencia se vaya actualizando en la tabla trasvolares; ejemplo si tengo en trasvolares un monto de 100$ y hice una transferencia de 20$ ya me debe quedar 80$ disponibles en trasvolares, lo que se tendría que actualizar cada vez que se haga una transferencia seria el monto_trasvalores_actual de la tabla trasvalores, pero antes de hacer la insersion debería hacer una consulta a la tabla trasvalores si hay fondo disponibles si hay se ejecuta el código de lo contrario debería mandar a recargar trasvalores para poder seguir realizando transferencias. hasta los momentos tengo esto.

Código PHP:
Ver original
  1. <!-- proceso para registrar-->
  2. <?php
  3. if(isset($_POST['guardar'])){
  4.  
  5.  
  6.   $sql = "SELECT monto_trasvalores_actual FROM trasvalores WHERE monto_trasvalores_actual = :monto_trasvalores_actual LIMIT 1"; //Creamos la select
  7.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  8.   $check->bindParam(':monto_trasvalores_actual', $_POST['monto_trasvalores_actual']);//Substituimos las variables de la SELECT
  9.   $check->execute();//Ejecutamos la consulta
  10.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  11.   if ($contador > 2000) {
  12.   $check->closeCursor();
  13.    
  14.               $errMSG = "¡ Ups Aviso: trasvalores insuficiente Por favor Actualize el monto!";
  15.  
  16.     }
  17.  
  18.     else
  19.      
  20.     {
  21.  
  22.  
  23.     $imgFile = $_FILES['portada']['name'];
  24.     $tmp_dir = $_FILES['portada']['tmp_name'];
  25.     $imgSize = $_FILES['portada']['size'];
  26.    
  27.       $upload_dir = '../galerias_transferencias/'; // upload directory
  28.  
  29.       $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); // get image extension
  30.    
  31.       // valid image extensions
  32.       $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); // valid extensions
  33.    
  34.       // rename uploading image
  35.       $portada = rand(1000,1000000).".".$imgExt;
  36.        
  37.       // allow valid image file formats
  38.       if(in_array($imgExt, $valid_extensions)){    
  39.         // Check file size '5MB'
  40.         if($imgSize < 5000000)        {
  41.           move_uploaded_file($tmp_dir,$upload_dir.$portada);
  42.         }
  43.         else{
  44.                    
  45.         $errMSG = "¡ Lo siento, su archivo es demasiado grande !";
  46.         }
  47.       }
  48.       else{
  49.              
  50.       $errMSG = "¡ Lo sentimos, sólo se permiten archivos JPG, JPEG, PNG y GIF !";
  51.       }
  52.    
  53.     // si no hay errores continuo...
  54.  
  55.   $sql = "SELECT  n_transferencia FROM transferencias WHERE   n_transferencia = :n_transferencia LIMIT 1"; //Creamos la select
  56.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  57.   $check->bindParam(':n_transferencia', $_POST['n_transferencia']);//Substituimos las variables de la SELECT
  58.   $check->execute();//Ejecutamos la consulta
  59.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  60.   if ($contador > 0) {
  61.   $check->closeCursor();
  62.    
  63.               $errMSG = "¡ Ups Aviso: El Registro ya se Encuentra Insertado !";
  64.  
  65.     }
  66.     else
  67.     {
  68.  
  69. $sql=$DB_con->prepare("INSERT INTO transferencias (n_transferencia,fecha,hora,monto_trasferido,porcentaje,ganancia,total,
  70.  id_usuarios,id_bancos_admin,id_cuentas_admin,id_clientes,id_bancos,id_cuentas,portada,status) VALUES (
  71.  :n_transferencia,:fecha,:hora,:monto_trasferido,:porcentaje,:ganancia,:total,:id_usuarios,:id_bancos_admin,:id_cuentas_admin,
  72.  :id_clientes,:id_bancos,:id_cuentas,:portada,:status)");
  73. $sql->bindParam(':n_transferencia', $_POST['n_transferencia']);
  74. $sql->bindParam(':fecha', $_POST['fecha']);
  75. $sql->bindParam(':hora', $_POST['hora']);
  76. $sql->bindParam(':monto_trasferido', $_POST['monto_trasferido']);
  77. $sql->bindParam(':porcentaje', $_POST['porcentaje']);
  78. $sql->bindParam(':ganancia', $_POST['ganancia']);
  79. $sql->bindParam(':total', $_POST['total']);
  80. $sql->bindParam(':id_usuarios', $_POST['id_usuarios']);
  81. $sql->bindParam(':id_bancos_admin', $_POST['id_bancos_admin']);
  82. $sql->bindParam(':id_cuentas_admin', $_POST['id_cuentas_admin']);
  83. $sql->bindParam(':id_clientes', $_POST['id_clientes']);
  84. $sql->bindParam(':id_bancos', $_POST['id_bancos']);
  85. $sql->bindParam(':id_cuentas', $_POST['id_cuentas']);
  86. $sql->bindParam(':portada', $portada);
  87. $sql->bindParam(':status', $_POST['status']);
  88. $sql->execute();
  89.  
  90. $successMSG ="¡ Bien Hecho: Registro Insertado Correctamente !";
  91.  
  92.  
  93. $monto_trasferido= 0;
  94.  
  95. $sql2 = "UPDATE trasvalores SET monto_trasferido=:monto_trasvalores_actual WHERE monto_trasvalores_actual=:monto_trasvalores_actual;";  
  96. $sql2=$DB_con->prepare($sql2);
  97. $sql2->bindValue(":monto_trasvalores_actual",$monto_trasvalores_actual);
  98.  
  99.     if ($sql2 ->execute())
  100.     {
  101.         //echo "Se actualizaron ".$sql2->rowCount()." registros";
  102.     }
  103.     else
  104.     {
  105.         //echo "Los registros no se  actualizaron";
  106.     }
  107.  
  108.                }
  109.  
  110.        }
  111.   }
  112. ?>
  113. <!-- fin proceso para registrar-->
__________________
yoclens avilan
  #2 (permalink)  
Antiguo 13/07/2017, 16:24
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: problemas con insersion y actualizacion

Creo que para esa operación te serviría mejor usar un TRIGGER SQL.... que una vez se efectué una transacción, reste al valor actual lo transferido
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 13/07/2017, 16:28
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Respuesta: problemas con insersion y actualizacion

Cita:
Iniciado por petit89 Ver Mensaje
Creo que para esa operación te serviría mejor usar un TRIGGER SQL.... que una vez se efectué una transacción, reste al valor actual lo transferido
gracias por tu respuesta amigo petit89, pero nunca hecho un TRIGGER SQL
__________________
yoclens avilan
  #4 (permalink)  
Antiguo 13/07/2017, 17:55
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: problemas con insersion y actualizacion

Código PHP:
Ver original
  1. $a = $this->con->query("UPDATE transvalores SET monto_trasvalores_actual = (monto_trasvalores_actual-$monto) WHERE id = '$id'");

alli actualizas el monto actual, restandole el monto transferido
__________________
[email protected]
HITCEL
  #5 (permalink)  
Antiguo 14/07/2017, 06:56
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Respuesta: problemas con insersion y actualizacion

lo he intentado así, pero no me actualiza

Código MySQL:
Ver original
  1. $sql="CREATE
  2.          TRIGGER nuevotrasvalor AFTER INSERT
  3.          ON transferencias
  4.          FOR EACH ROW BEGIN
  5.          UPDATE trasvalores SET monto_trasvalores_actual = (monto_trasvalores_actual-monto_trasferido)
  6.          WHERE monto_trasvalores_actual=monto_trasvalores_actual";
__________________
yoclens avilan
  #6 (permalink)  
Antiguo 14/07/2017, 10:55
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Respuesta: problemas con insersion y actualizacion

bueno al final lo solucione con trigger xd

Código MySQL:
Ver original
  1.           TRIGGER nuevotrasvalor AFTER INSERT
  2.           ON transferencias
  3.           FOR EACH ROW
  4.           UPDATE trasvalores SET monto_trasvalores_actual = (monto_trasvalores_actual-NEW.monto_trasferido)
__________________
yoclens avilan

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:43.