Comunidad de diseño web y desarrollo en internet online

Cakephp operaciones matematicas

Citar            
MensajeEscrito el 11 Ene 2015 12:16 am
Buenas tardes, ante todo un cordial saludos para todos en el foro.
tengo un inconveniente, y necesito ayuda.
por favor serian tan amables de ayudarme con información , textos, ejemplos, para realizar operaciones matematicas en cakephp, el problema es que aun soy muy novato y se me complica un poco todo este tema, para tener una idea mejor esta es mi vista :

[img]http://www.subirimagenes.com/imagedata.php?url=http://s2.subirimagenes.com/otros/9234902vistaprevia.jpg[/img]


Lo que yo quiero es ir poniendo las cantidades y luego hacer la operación con respecto al precio hacer un solo calculo y colocarlo en el total,
por ejemplo en cantidad_adulto ingresar 2 y por detras multiplicarlo con el 7.50 que es el valor y asi con todos y hacer un calculo global y guardarlo en el campo total, creanme que voy dias en esto y no logro realizarlo. les agradezco su ayuda


La base de datos es esta:

[img]http://www.subirimagenes.com/imagedata.php?url=http://s2.subirimagenes.com/otros/9234906db.jpg[/img]

y este es el código de la vista: add.ctp

<div class="ventas form">

<?php echo $this->Form->create('Venta'); ?>

<fieldset>

<legend><?php echo __('PROCESO DE COMPRA'); ?></legend>

<?php

echo $this->Form->input('nombre');

echo $this->Form->input('apellido');

echo $this->Form->input('cedula');

echo $this->Form->input('direccion');

echo $this->Form->input('mail');

echo $this->Form->input('telefono');

echo $this->Form->input('tarjeta');

echo $this->Form->input('numtarjeta');

echo __('<legend>SELECCIONE SU PELICULA</legend>');

echo $this->Form->input('cartelera_id',array('label' => 'Seleccione su pelicula'));//el array permite modificar los atributos del formulario en este caso el label para modificar el nombre del campo que bake arroja de forma magica

echo $this->Form->input('cant_adulto', array('label' => 'Cantidad de boletos - Precio normal $ 7,50'));

echo $this->Form->input('cant_niño', array('label' => 'Cantidad de boletos - Precio niños/ancianos $ 5,50'));

echo $this->Form->input('cant_discapacitado', array('label' => 'Cantidad de boletos - Precio discapacitados $ 4,90'));



echo __('<legend>SELECCIONE SU COMBO</legend>');

echo $this->Form->input('combo_id');

echo $this->Form->input('numcombo', array('label' => 'Cantidad de combos - Precio discapacitados $ 12,90'));

echo $this->Form->input('total');

?>





</fieldset>

<?php echo $this->Form->end(__('Guardar')); ?>

</div>

<div class="actions">

<h3><?php echo __('Acciones'); ?></h3>

<ul>



<li><?php echo $this->Html->link(__('Listar Ventas'), array('action' => 'index')); ?></li>

<li><?php echo $this->Html->link(__('Listar Clientes'), array('controller' => 'clientes', 'action' => 'index')); ?> </li>

<li><?php echo $this->Html->link(__('Nuevo Cliente'), array('controller' => 'clientes', 'action' => 'add')); ?> </li>

<li><?php echo $this->Html->link(__('Listar Combos'), array('controller' => 'combos', 'action' => 'index')); ?> </li>

<li><?php echo $this->Html->link(__('Nuevo Combo'), array('controller' => 'combos', 'action' => 'add')); ?> </li>

<li><?php echo $this->Html->link(__('Listar Carteleras'), array('controller' => 'carteleras', 'action' => 'index')); ?> </li>

<li><?php echo $this->Html->link(__('Nueva Cartelera'), array('controller' => 'carteleras', 'action' => 'add')); ?> </li>

</ul>

</div>

Por kokimoto

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ene 2015 02:14 pm
Saludos, Kokimoto
Según mi criterio, lo pudieras realizar colocando un botón que realice las operaciones, y que te coloque el resultado en el campo total, eso lo puedes realizar utilizando JavaScript, cualquier duda o comentario por favor comentarlo para poder ayudarte de una mejor manera

Por mario22121985

88 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ene 2015 02:51 pm
Muchas gracias Mario por responder , la situación es esta, he probado formas de realizar esos calculos con php nativo, el problema es que no me ejecuta las paginas nativas de php, y la de javascript hice un intento y nada, la cosa es que en un foro me aconsejaron usar esta logica, pero la verdad no lo comprendo, es a través de callbacks en el modelo http://book.cakephp.org/2.0/en/models/callback-methods.html#beforesave, con esto supuestament yo puedo hacer esas operaciones, he visto un par de ejemplos parecidos pero no he logrado entender como funciona esa logica .
ejemplo: http://stackoverflow.com/questions/8364169/beforesave-cakephp-math

Por kokimoto

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 12 Ene 2015 08:38 pm
¿por que PHP haría una operación visual para el front??

Digo al final con CAKE vas a procesar el precio y la cantidad elegida para guardarla en BD, pero como dice mario con Javascript solucionarías la parte gráfica.

Deja de un lado el Cake, y preocúpate por el HTML que te genera. Así podrás manipularlo...

Por que el codigo que pones de CAKE no sirve de mucho.

Suerte ;)

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 13 Ene 2015 11:01 pm
Muchas gracias por responder, ante todo muy agradecido por tomarse su tiempo y tratar de ayudar a novatos como yo, por otra parte entiendo que se puede realizar ese tipo de calculos con javascript, es solo que me resulta complicado usarlo en vistas de este framework ya que no se ejecuta nada, ahora bien, yo tengo un script que es funcional en paginas html normales, pero no puedo implementarlo en el framework

Código Javascript :

?>
<script type="text/javascript">
function sumar() {
var n1 = parseInt(document.getElementById("ventaCantAdulto").value);
var n2 = parseInt(document.getElementById("ventaCantNiño").value);
var n3 = parseInt(document.getElementById("ventaCantDiscapacitado").value);
var n4 = parseInt(document.getElementById("ventaNumcombo").value);
document.getElementById("VentaTotal").value=(n1*7.50)+(n2*5.50)+(n3*4.90)+(n4*12.90);

}
</script> 


intente tomar los datos de los formularios por medio del getElementById, ya que es mas facil tomar esos nombres , por que el html que arroja cake como nombre de un imput es este por ejemplo data['venta']['cant_adulto']..... en fin no tengo ni la mas minima ideaq de como hacerlo funcionar en cake, es por esta razon que insisto hacerlo con este framework , ya que es complejo hacer funcionar paginas php, o script sin que no estén bajo la lógica de esta cosa.

Por kokimoto

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 13 Ene 2015 11:36 pm
Okay mira has esto.. corre tu código de CakePHP

cuando se muestre tu página, ve al codigo fuente (depende de tu navegador como hacer esto), copia todo ese HTML y pasalo aqui en el foro.

o de preferencia en un link de www.pastebin.com asi reviso el HTML que genera y ya se te puede ayudar con la funcion de javascript.


Mientras tanto investiga como cargarle Jquery a CakePHP, asi como meterle scripts JS.

Por elporfirio

Claber

652 de clabLevel

1 tutorial

Genero:Masculino  

FullStack Web Developer

chrome
Citar            
MensajeEscrito el 13 Ene 2015 11:57 pm
Estimado amigo este es el codigo, muchas gracias por ayudarme me salvarias de un apuro si lo logramos , ya estoy revisando el manual de cake ....llevo intentando dias pero no logro nada

Código HTML :

<div class="ventas form">

<form action="/uide/ventas/add" id="VentaAddForm" method="post" accept-charset="utf-8"><div style="display:none;"><input type="hidden" name="_method" value="POST"/></div>
   <fieldset>
      
      <legend>PROCESO DE COMPRA</legend>

   <div class="input text required">
      <label for="VentaNombre">Nombre</label>
      <input name="data[Venta][nombre]" maxlength="45" type="text" id="VentaNombre" required="required"/>
   </div>
   <div class="input text required">
      <label for="VentaApellido">Apellido</label>
      <input name="data[Venta][apellido]" maxlength="45" type="text" id="VentaApellido" required="required"/>
   </div>
   <div class="input number required">
      <label for="VentaCedula">Cedula</label>
      <input name="data[Venta][cedula]" type="number" id="VentaCedula" required="required"/>
   </div>
   <div class="input text required">
      <label for="VentaDireccion">Direccion</label>
      <input name="data[Venta][direccion]" maxlength="100" type="text" id="VentaDireccion" required="required"/>
   </div>
   <div class="input text required">
      <label for="VentaMail">Mail</label>
      <input name="data[Venta][mail]" maxlength="45" type="text" id="VentaMail" required="required"/>
   </div>
   <div class="input text required">
      <label for="VentaTelefono">Telefono</label>
      <input name="data[Venta][telefono]" maxlength="45" type="text" id="VentaTelefono" required="required"/>
   </div>
   <div class="input text required">
      <label for="VentaTarjeta">Tarjeta</label>
      <input name="data[Venta][tarjeta]" maxlength="20" type="text" id="VentaTarjeta" required="required"/>
   </div>
   <div class="input number required">
      <label for="VentaNumtarjeta">Numtarjeta</label>
      <input name="data[Venta][numtarjeta]" type="number" id="VentaNumtarjeta" required="required"/>
   </div>
   <legend>SELECCIONE SU PELICULA</legend>
   <div class="input select"><label for="VentaCarteleraId">Seleccione su pelicula</label>
      <select name="data[Venta][cartelera_id]" id="VentaCarteleraId">
         <option value="6">300</option>
         <option value="7">Robocop</option>
         <option value="8">CAPITAN PHILIPS</option>
         <option value="14">El Lobo de wallstreet</option>
         <option value="15">Europa report</option>
</select>
</div>
<div class="input number required">
   <label for="VentaCantAdulto">Cantidad de boletos - Precio normal $ 7,50</label>
   <input name="data[Venta][cant_adulto]" type="number" id="VentaCantAdulto" required="required"/>
</div>
<div class="input number required">
   <label for="VentaCantNiño">Cantidad de boletos - Precio niños/ancianos $ 5,50</label>
   <input name="data[Venta][cant_niño]" type="number" id="VentaCantNiño" required="required"/>
</div>
<div class="input number required">
   <label for="VentaCantDiscapacitado">Cantidad de boletos - Precio discapacitados $ 4,90</label>
   <input name="data[Venta][cant_discapacitado]" type="number" id="VentaCantDiscapacitado" required="required"/>
</div>
<legend>SELECCIONE SU COMBO</legend>
<div class="input select"><label for="VentaComboId">Combo</label><select name="data[Venta][combo_id]" id="VentaComboId">
   <option value="6">Combo 1</option>
   <option value="7">MegaCombo</option>
</select>
</div>
<div class="input number required"><label for="VentaNumcombo">Cantidad de combos - Precio discapacitados $ 12,90</label><input name="data[Venta][numcombo]" type="number" id="VentaNumcombo" required="required"/></div><div class="input number"><label for="VentaTotal">Total</label><input name="data[Venta][total]" step="any" type="number" id="VentaTotal"/></div>   


   </fieldset>
<div class="submit"><input  type="submit" value="Guardar"/></div></form></div>
<div class="actions">

Por kokimoto

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 14 Ene 2015 07:50 pm
Bueno les comento señores que ya solucione el inconveniente y próximamente estaré posteando como

Por kokimoto

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 22 Ago 2019 10:58 pm

kokimoto escribió:

Bueno les comento señores que ya solucione el inconveniente y próximamente estaré posteando como


ME INTERESA MUCHO VER SU SOLUCION, POR FAVOR YO TENGO EL MISMO PROBLEMA Y TAMBIEN ESTOY TRABAJANDO EN CAKEPHP, POR FAVOR RESPONDA

Por LORDES2880

0 de clabLevel



 

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.