Foros del Web » Programando para Internet » PHP »

almacenar y sumar valores de arreglo?

Estas en el tema de almacenar y sumar valores de arreglo? en el foro de PHP en Foros del Web. Hola,que debo hacer para almacenar los valores que ingrese en la caja de texto "cantidad",y luego sumarlos,para posteriormente mostrar el resultado,en la parte de suma1.php. ...
  #1 (permalink)  
Antiguo 16/03/2006, 16:23
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 11 años, 9 meses
Puntos: 3
almacenar y sumar valores de arreglo?

Hola,que debo hacer para almacenar los valores que ingrese en la caja de texto "cantidad",y luego sumarlos,para posteriormente mostrar el resultado,en la parte de suma1.php.

Pero mi problema es el siguiente :Es que quiero ingresar diferentes valores en la caja de texto,pero que al momento de ingresarlo se almacenen en el arreglo y luego se sumen esos valores.pero eso no me resulta,ya que al momento de ingresar un valor desde el formulario,se inicializa y muestra siempre el ultimo valor quer ingrese.

ejemplo de lo que deseo hacer:

usuario:ingresa 6 chocolate ese 6 deberia quedar almacenado en el arreglo,luego el mismo usuario ingresa 2 cafe eso tambien deberia quedar almacenado en el mismo arreglo y finalmente ingresa 4 dulces,que tambien deberian almacenarse en dicho arreglo.

ahora el arreglo deberia contener estos valores $total[]=6,2,4;
y esos valores que almaceno deberia sumarse y dar como resultado 12.y ese valor deberia mostrarme en suma1.php,en resultado cantidad.

como puedo realizar eso que necesito?
gracias

y una ultima consulta:puedo utilizar dos formularios en una misma pagina y luego enviar la informacion de los formularios al mismo archivo php,para procesar esa informacion.



Código:
<html>
<head>
 <title></title>
</head>

<body>

<form name=formlario action=suma1.php method=post>
<input type=radio name=numero value=1>
<select name=codigo>
<option>seleccionar</option>
 <option value=315>dulce</option>
 <option value=316>cafe</option>
 <option value=317>chocolate</option>
 </select>
Cantidad:<input type=text name=cantidad>
<input type=submit name=enviar value=envia>


</body>

</html>
suma1.php
Código PHP:

$codigo
=$_POST['codigo'];
$cantidad=$_POST['cantidad'];


switch(
$_POST['numero'])
{
        case 
1:
               echo 
"codigo producto".$codigo;
               echo 
"<br>cantidad:".$cantidad;
              
/*arreglo que recibe valores ingresados en el input text*/
               
$total[]=$cantidad;
               
//$numelentos = count($total);


//muestra valor que contiene el arreglo*/

               
echo "<br>resultado cantidad:"$total[0];


/*es para mostrar nuevamente el formulario de ingreso,para seguir acumulando valores en el arreglo*/      
  
include("suma.php");

        break;
        }

?> 
  #2 (permalink)  
Antiguo 17/03/2006, 01:46
Avatar de SidP  
Fecha de Ingreso: febrero-2006
Ubicación: /etc/php.ini
Mensajes: 129
Antigüedad: 11 años, 9 meses
Puntos: 2
respo..

Hola thor
En tu lugar yo me haria una funcion por ejemplo
Código PHP:
function SaveData($codigo,$cantidad){
  
session_start(); 
 
$_SESSION['varibles']=$codigo."-".$cantidad;
 } 
asi cuando la vayas a utilizar
Código PHP:
SaveData($_POST['codigo'], $_POST['cantidad']);
$form explode("-",$_SESSION['variables']);
list(
$codigo,$cantidad) = $form
y ahi tienes los valores $codigo y $cantidad, de ahi haces las operaciones que quieras con ellos

o sino algo como esto
Código PHP:
$vars=$_SESSION['variables'];
$vars[$_POST['codigo']]=array('codigo'=>$_POST['codigo'],'cantidad'=>$_POST['cantidad'],'numero'=>$_POST['numero']);
$_SESSION['variables']=$vars
recuerda siempre iniciar la session, para sumar con un
Código PHP:
foreach($vars as $k => $cant){
$suma$cant['cantidad'].....
//las operaciones que vayas a realizar 
}

de seguro hay una solucion mejor, por lo menos una trate de darte una idea
espero te sirva, es lo que se me ocurre por ahora, ya el me vence, apenas veo el monitor

Sal2
  #3 (permalink)  
Antiguo 17/03/2006, 06:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tendrías que usar sesesion, cookies o algún médio de almacenamiento temporal; lease: Base de datos, archivo de texto plano .. etc.

Cada ejecución de un script PHP es individual, toda variable iniciada en el se "pierde" al terminar la ejecución del mismo .. Por eso ndecesitas al menos de una sesión (sería lo ideal para tu caso) para almacenar en el "servidor" de forma temporar esa información según la vas a agregando para que en otro(s) scripts puedas tomarla y hacer lo que requieras con ella.

Si quieres manejar un array (para ver tus items a "sumar" y operar con el):


Tu script o sección del mismo que acumula tus datos en una variable de sesión (en forma de array):
Código PHP:
<?
session_start
();
$_SESSION['items'][] = $_POST['cantidad'];
Y por otro lado .. si quieres presentar esos datos ingresados al momento y operar con el ..

Código PHP:
<?
// Inicio uso sesiones .. sólo se usa una vez al principio de tu script (lo digo por si el mismo script que usas para ingresar un nuevo dato .. lo usas para presentar su sub-totales o bien el total.

session_start(); 

foreach (
$_SESSION['items'] as $subtotal){
   echo 
$subtotal."<br>";
}

$total=array_sum($_SESSION['items']);
echo 
"---------------------<br>";
echo 
$total;
?>
Te recomiendo ver sobre sesiones en:
www.php.net/session
(en las FAQ's de este foro tienes ejemplos también)

Un saludo,
  #4 (permalink)  
Antiguo 17/03/2006, 14:53
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 11 años, 9 meses
Puntos: 3
gracias a los dos por la ayuda,cluster era justo lo que necesitaba

una ultima consulta,despues que termine de ingresar los datos para el primer usuario,en que lado debo ubicar session_destroy(); ,para acabar con los datos que se ingresaron con el primer usuario.
gracias
Código PHP:
<?php
session_start
();
$_SESSION['items'][] = $_POST['cantidad'];

$codigo=$_POST['codigo'];



switch(
$_POST['numero'])
{
        case 
1:
              foreach (
$_SESSION['items'] as $subtotal)
              {
             echo 
$subtotal."<br>";
               }

             
$total=array_sum($_SESSION['items']);
             echo 
"---------------------<br>";
             echo 
$total;

         include(
"suma.php");
      
//session_destroy();  
    
        
}

?>
  #5 (permalink)  
Antiguo 17/03/2006, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las sesiones son únicas para el "cliente" que las crea .. No sé realmente el concepto de "usuario" que empleas .. NO sé si es alguien que deba usar el sistema despues del último proceso ..

Aclara eso y vermos mejor donde destruir la sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 17/03/2006, 15:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 11 años, 9 meses
Puntos: 3
si,las sesiones son unicas para el cliente que las crea,
por ejemplo:el cliente 1,ingreso 20 productos y esa sesion es solo para el,luego se deberia destruir.para ingresar 30 productos para el cliente 2,luego que al cliente dos se le ingresaron sus productos,nuevamente deberia destruirse la sesion, para ingresar productos al cliente 3 y asi sucesivamente........

es decir utilizar una sesion unica,para cada cliente.
gracias
  #7 (permalink)  
Antiguo 17/03/2006, 15:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando hablo de "cliente" no me refiero a un "cliente de una empresa" o usuario de tu sistema sino al "PC" que ejecuta esa aplicación .. eso es el "cliente" .. quien "pide" esa página al "servidor".

En principio si quieres destruir tu sesión cuando termines de usar tus datos lo puedes hacer .. entre por otro lado otro usuario o no al sistema. Realmente no entendí que es lo que estás creando ... pero esos datos son únicos para cada cliente y .. a no ser que te lleves esos datos a una BBDD o un archivo de texto plano finalmente .. al destruir tu sesión se "moriran" esos datos .. actuando como una simple "calculadora" temporal ese script (cosa que podrías haber hecho tal vez en "javascript sólo" sin más complicaciones).

Como identificas tus usuarios y sus sesiones? .. como te cambias de "usuario"? .. o ese usuario va a entrar desde cualquier sitio (PC) a tu aplicación? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 17/03/2006, 15:43
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 11 años, 9 meses
Puntos: 3
La pagina la pide un vendedor el cual ingresara al cliente.Para el vendedor inicio una sesion despues del login de ingreso.Por lo cual cada vendedor que utilize el sistema para ingresar pedidos de productos,tendra una sesion unica.


estas son las tablas que utilizo.

pedidos
Tendra cada pedido que se hace para cada cliente que exista en el sistema.

detalle pedidos
Esta entidad contendra el detalle de los productos que se vendan a determinado cliente. (en el fondo los productos)



esto lo deseo realizar

pedidos
- ped_id (id de pedido)
- ped_cli_id (rut del cliente que hace el pedido)

detalle pedidos
- dtp_id (id del detalle del pedido)
- dtp_ped_id (id del pedido)
- dtp_lin_det (correlativo linea de pedido)
- dtp_prd_cod_pro (codigo del producto que se vende)
- dtp_can_ven (detalle cantidad vendida del producto)
- dtp_mon_ven (total por linea para el producto vendido)
dtp_can_ven (total en cantidad vendida para el pedido)
-dtp_mon_ven (total en plata vendida para el pedido)



******************************************
clientes
cli_id = 1
cli_rut = 12345678

categorias
cat_id = 1
cat_cod_cat = 10
cat_nom = productos de limpieza

productos
prd_id =1
prd_cat_id =1
prd_cod_pro = COD1
prd_val_pro = $100

prd_id =2
prd_cat_id =1
prd_cod_pro = COD2
prd_val_pro = $150

prd_id =3
prd_cat_id =1
prd_cod_pro = COD3
prd_val_pro = $200

Todos estos productos pertenecen al id de categoria 1.



pedidos
ped_id = 1
ped_cli_id = 1 (asociado al rut 12345678)

detalle pedidos
dtp_id = 1
ped_id = 1 (asociado al id de pedido 1 que a su ves es el pedido del cliente rut 12345678)
dtp_lin_det = 1 (linea 1)
dtp_prd_cod_pro = COD1,CODIGO DEL PRODUCTO,este dato lo sacare de la tabla productos.
dtp_can_pro = 2 (cantidad)
dtp_mon_ven = $200

dtp_id = 2
ped_id = 1 (asociado al id de pedido 1 que a su ves es el pedido del cliente rut 12345678)
dtp_lin_det = 2 (linea 2)
dtp_prd_cod_pro = COD2
dtp_can_pro = 5 (cantidad)
dtp_mon_ven = $700

dtp_id = 3
ped_id = 1 (asociado al id de pedido 1 que a su ves es el pedido del cliente rut 12345678)
dtp_lin_det = 3 (linea 3)
dtp_prd_cod_pro = COD3
dtp_can_pro = 10 (cantidad)
dtp_mon_ven = $2000


Hasta aqui se ha realizado el pedido 1 perteneciente al cliente 12345678 que a vendido 3 productos por los siguientes montos :

total linea 1 = 2x100 = $200 (el producto COD1 tiene un precio unitario de $100)

total linea 2 = 5x150 = $750(el producto COD2 tiene un precio unitario de $150)

total linea 3 = 10*200 = $2000 (el producto COD3 tiene un precio unitario de $200)


dtp_can_ven=6 (total en cantidad vendida para el pedido)
dtp_mon_ven=2950 (total en plata vendida para el pedido)
  #9 (permalink)  
Antiguo 17/03/2006, 15:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
La pagina la pide un vendedor el cual ingresara al cliente.Para el vendedor inicio una sesion despues del login de ingreso.Por lo cual cada vendedor que utilize el sistema para ingresar pedidos de productos,tendra una sesion unica.
Eso es lo que interesa .. Tu sesión la incias con tu vendedor .. si dices tener un "login" por médio y ya controlas al usuario en el sistema (tu "vendedor") por una variable de sesión, lo que no debes hacer es "matar" la sesión entera sino a lo sumo deshacerte de esa variable que usastes en este proceso.

unset($_SESSION['items']);

Por qué sino, mataras las otras varaibles que contenga esa sesión en curso.

Cada "vendedor" ya tiene su sesión .. así que deberías aplicar ese "unset()" al terminar tu proceso .. donde muestres ese total o lo uses definitivamente (si en ese punto ya no ha opción a ingresar más datos para ese array o grupo de valores).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 17/03/2006, 20:43
 
Fecha de Ingreso: febrero-2006
Mensajes: 446
Antigüedad: 11 años, 9 meses
Puntos: 3
Cita:
Iniciado por Cluster
Eso es lo que interesa .. Tu sesión la incias con tu vendedor .. si dices tener un "login" por médio y ya controlas al usuario en el sistema (tu "vendedor") por una variable de sesión, lo que no debes hacer es "matar" la sesión entera sino a lo sumo deshacerte de esa variable que usastes en este proceso.

unset($_SESSION['items']);

Por qué sino, mataras las otras varaibles que contenga esa sesión en curso.

Cada "vendedor" ya tiene su sesión .. así que deberías aplicar ese "unset()" al terminar tu proceso .. donde muestres ese total o lo uses definitivamente (si en ese punto ya no ha opción a ingresar más datos para ese array o grupo de valores).

Un saludo,
gracias
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 15:10.