Sumar 2 campos de una tabla

54 views
Skip to first unread message

ajmv

unread,
Oct 30, 2014, 7:28:34 PM10/30/14
to kum...@googlegroups.com
Cordial saludo.


Amigos soy algo nuevo en manejo de BD con KumbiaPHP, he intentado realizar la sumatoria de dos campos de una tabla y no he podido si alguien me puede colaborar se lo agradezco.
lo que quiero realizar es esto:
select cantidad, ingreso, (cantidad + ingreso) as resultado from promotions.inventory where id=1;

y luego de esto el campo cantidad me quede con el dato de resultado.

gracias amigos de antemano.

Nelson Rojas Nuñez

unread,
Nov 1, 2014, 11:01:13 AM11/1/14
to kum...@googlegroups.com
Hola estimado:
Así por lo que veo, el query está bien. Lo que no entiendo es qué es lo que pretende hacer luego de lanzar el query, y con qué intención lo espera hacer.

Recuerde que hay una máxima en programación: mejor escribir código entendible que código "demasiado inteligente".

Si se explica mejor en lo que necesita, idealmente con alguna imagen, encantado le doy una mano.

Saludos!

Alvaro Meriño

unread,
Nov 1, 2014, 12:03:40 PM11/1/14
to kum...@googlegroups.com

Hola, amigo lo que intento hacer es actualizar el campo cantidad cuando haya algún valor en el campo ingresar (sumar) y cuándo haya algún dato en el campo egreso (sustraer). La idea es que me maneje la cantidad de productos que tengo en una bodega.

Gracias por su atención brindada.

--
Viva KumbiaPHP Framework!
http://www.kumbiaphp.com/
Ha recibido este mensaje porque está suscrito a Grupo "KumbiaPHP Framework" de Grupos de Google.
Para obtener más opciones, visita este grupo en http://groups.google.com/group/kumbia?hl=es.
---
Has recibido este mensaje porque estás suscrito al grupo "KumbiaPHP Framework" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a kumbia+un...@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Nelson Rojas Nuñez

unread,
Nov 1, 2014, 10:20:37 PM11/1/14
to kum...@googlegroups.com
Hola nuevamente:
Lo que no alcancé a pedirle fue que me contara en qué momento y al hacer qué acción quiere hacer lo que desea.

Si lo pudieras traducir usando el esquema Modelo vista controlador**, e incluyendo el script de la tabla, sería más sencillo.

Por lo que leí, no me queda claro si lo que quieres hacer es una actualización masiva, o una actualización cada vez que se modifique una tupla (registro, fila)

Esperaré por la aclaración.

Saludos!

** en esquema MVC -- ejemplo
Quiero que se actualice un registro del modelo Y cuando presiono el botón actualizar de la acción X, que está en el controlador W.

Hasta la próxima.-

Alvaro Meriño

unread,
Nov 20, 2014, 4:03:32 PM11/20/14
to kum...@googlegroups.com
Cordial saludo.
la idea principal es administrar un inventario donde se manejan los movimientos de artículos (ingresos y egreso).
amigo lo quiero actualizar cada vez que se actualice un registro.



mi tabla contiene los siguientes campos:

1,id,INT,binary,11,1,0
2,cod,VARCHAR,utf8,10,6,0
3,detalle,VARCHAR,utf8,100,25,0
4,cantidad,INT,binary,10,5,0
5,ingreso,INT,binary,10,4,0
6,dt_fechingreso,TIMESTAMP,binary,19,19,0
7,egreso,INT,binary,10,0,0
8,dt_egreso,TIMESTAMP,binary,19,19,0




esta es mi vista:
<?php View::content(); ?>
            <div class="form-actions">
                <h3 class="title" style="text-align: center">Modificar</h3>
          
                        <?php echo Form::open(); // por defecto llama a la misma url ?>
                    <label>Codigo Material </label>
                            <?php echo Form::text('inventory.cod',"readonly='readonly'") ?>
               
                    <label>Detalle</label>
                      <?php echo Form::text('inventory.detalle', "readonly='readonly'") ?>              
                    
                    <label >Cantidad</label> 
                      <?php echo  Form::text('inventory.cantidad',"readonly='readonly'") ?>
                    
                    <label >Ingresar</label> 
                      <?php echo  Form::text('inventory.ingreso') ?>
                                  
                   
                                    <?php echo Form::hidden('inventory.id') ?>
                <div class="bottom"> <?php echo Form::submit('Actualizar') ?> </div>  

                        <?php echo Form::close() ?>
         </div>     




y esta es  la acción de mi controller:

public function ingresar($id)
    {
        $inventory = new Inventory($id);
        
        //se verifica si se ha enviado el formulario (submit)
        if(Input::hasPost('inventory')){
                 
           
            
            if($inventory->update(Input::post('inventory'))){
                   
                Flash::valid('Operación exitosa');
                //enrutando por defecto al index del controller
                
                return Redirect::to();
            } else {
                Flash::error('Falló Operación');
            }
        } else {
            //Aplicando la autocarga de objeto, para comenzar la edición
            $this->inventory = $inventory->find_by_id((int)$id);
        }
    }
  

Lo que deseo es que en la acción del controlador ingresar una sentencia y cada vez que llamen la acción se actualice el campo cantidad.
pero no se como hacerlo, agradezco tu colaboración.


Trate de hacerlo con 2 tablas como me habías dicho anteriormente pero no supe implementar el código para hacerlo de esa manera.
--
Alvaro Javier Meriño V.
Ingenieria de Sistemas (X Semestre)
Corporacion Universitaria Remington

Nelson Rojas Nuñez

unread,
Nov 21, 2014, 7:10:22 AM11/21/14
to kum...@googlegroups.com
Hola don:

La idea es que intente usar el patrón MVC para separar el código.

Lo óptimo sería hacer algo en el modelo, ya sea al llamar un método de actualización creado por ti, o usando los callbacks before_save que provee ActiveRecord

Si cada vez que la vista llama la acción del controlador, éste llama al mismo método donde está contenida la lógica de la actualización, no tendrás que hacer nada más que llamar dicho método desde el controlador y para la vista será transparente.

Para ser más prácticos:

<?php

    class Inventory extends ActiveRecord {

        function before_save() {
            $this->cantidad += $this->ingreso;
        }

        function actualizar($datos) {
            if ($this->update($datos)) {
                return true;
            } else {
                return false;
            }
        }
    }
?>


¿quiere hacer algo así?

Saludos!

Nelson Rojas Nuñez

unread,
Nov 21, 2014, 7:13:01 AM11/21/14
to kum...@googlegroups.com
Con este arreglo de la versión anterior puede que tengas una mejor visión de lo que puedes hacer con el callback :-)

Saludos!

<?php

    class Inventory extends ActiveRecord {

        function before_save() {
            $this->cantidad += (int)$this->ingreso - (int)$this->egreso;

        }

        function actualizar($datos) {
            if ($this->update($datos)) {
                return true;
            } else {
                return false;
            }
        }

    }

?>
Reply all
Reply to author
Forward
0 new messages