Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -Privacidad y política de cookies -
Ayuda al foro con tu donación

Búsqueda en los foros

Foros en Udias.com / PHP y MySQL / sumar importes y totales
Autor Mensaje

Miembro

Asiduo

  Karma             541

#1 Publicado: 21 Sep 2011 10:18



Hola estoy creando un carrito de la compra, me esta costando mucho , agradeceria ayda.,
tengo echo esto modificado de alguna web que he encontrado.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
session_start();
session_register('itemsEnCesta');
$item=$_POST['item'];
$precio=$_POST['item'];
$cantidad=$_POST['cantidad'];

$itemsEnCesta=$_SESSION['itemsEnCesta'];

if ($item){
if (!isset($itemsEnCesta)){
$itemsEnCesta[$item]=$cantidad;
}else{
foreach($itemsEnCesta as $k => $v){
if ($item==$k){
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $itemsEnCesta[$item]=$cantidad;
}
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
<?php
session_start();
//conectamos a la base de
//datos
mysql_connect("localhost","****","****");
mysql_select_db("****");

//y hacemos la consulta
$qry=mysql_query("select * from numero order by numero asc");
?>

Dime el producto <select name="item">




<?php
while($row=mysql_fetch_assoc($qry)){

echo " <option value=".$row['plato']."> ".$row['plato'].",".$row['precio']."</option> ";
//echo "<input type='hidden' value=".$row['precio'].">";

}
?>

</select>
Cuantas unidades <input type="text" name="cantidad" size="20"><br>
precio <input type="text" name="precio" value="<?php echo "<input type='hidden' value=".$row['precio'].">";?>"size="20"><br>
<input type="submit" value="Añadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)){
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
}
}
?>

lo que necesito es que me muestre el importe en otro campo y que me haga las operaciones pero no consigo que me muestre aparte del articulo y la cantidad el importe, lo he conseguido poniendolo en el mismo campo que el articolo, para orientacion del que lo selecciona pero nada mas.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#2 Publicado: 21 Sep 2011 10:37 - Editado por: jcu



Si quieres un importe total, crea una variable $total y dentro del foreach vas sumando los importes parciales, lo mismo puedes hacer para la cantidad total.

No se como llamas a las cantidades ni a los importes, pero puede quedar así

$total =0;
$totalcantidad =0;

foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
$total =$total+$variable_que_nos_da_el_importe_unitario;

$totalcantidad =$totalcantidad+$variable_que_nos_da_el_importe_un itario;;

}

echo 'Cantidad total de artículos: '.$totalcantidad .'<br>';
echo 'Importe total: '.$total.'<br>';

Por favor, los temas que están resulatos márcalos como RESUELTOS


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#3 Publicado: 25 Sep 2011 12:38



mira lo he dejado asi, la cantidad me suma la cantiidad de productos que he elegido en la ultima linea pero el importe al imprimir importe echo $importe; me pone el nombre del plato y no se porque.
aqui en el formulario parece que esta bien pero no lo recoge, he dejado la linea del formulario en negrita. alguna idea


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php // Manual de PHP de WebEstilo.com
session_start();
session_register('itemsEnCesta');
$item=$_POST['item'];
$importe=$_POST['item'];
echo $importe;
$cantidad=$_POST['cantidad'];

$itemsEnCesta=$_SESSION['itemsEnCesta'];

if ($item){
if (!isset($itemsEnCesta)){
$itemsEnCesta[$item]=$cantidad;
}else{
foreach($itemsEnCesta as $k => $v){
if ($item==$k){
$itemsEnCesta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $itemsEnCesta[$item]=$cantidad;
}
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>

<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
<?php
session_start();
//conectamos a la base de
//datos
mysql_connect("localhost","bbdd.gorlizokela","bbdd 01");
mysql_select_db("gorlizokela_com");

//y hacemos la consulta
$qry=mysql_query("select * from numero order by numero asc");
?>

Dime el producto <select name="item">




<?php
while($row=mysql_fetch_assoc($qry)){
echo " <option value=".$row['plato']."> ".$row['plato']."</option> ";
//echo "<input type='hidden' value=".$row['precio'].">";

}
?>

</select>
Cuantas unidades <input type="text" name="cantidad" size="20"><br>
<input type="text" name="importe" value=""><br>
<input type="submit" value="Añadir a la cesta"><br>
</form>
<?
if (isset($itemsEnCesta)){
echo'El contenido de la cesta de la compra es:<br>';
foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';

}
}
?>
<?php
session_start();
session_register('itemsEnCesta');
$total =0;
$totalcantidad =0;

foreach($itemsEnCesta as $k => $v){
echo 'Artículo: '.$k.' ud: '.$v.'<br>';
$total =$total+$importe; //variable_que_nos_da_el_importe_unitario
;
$totalcantidad =$cantidad+$importe; //variable_que_nos_da_el_importe_unitario

}

echo 'Cantidad total de artículos: '.$cantidad.'<br>';
echo 'Importe total: '.$total.'<br>';
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>
</tt>
</body>
</html>


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#4 Publicado: 25 Sep 2011 15:16



Te falta recoger la variable


Esto no funciona
$importe=$_POST[item];

Est sí debiera de funcionar
$importe=$_POST[importe];


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#5 Publicado: 25 Sep 2011 20:36



Eres un crack, muchas gracias
Una cosa no me va bien, cada vez que relleno los campos , por ejemplo:
articulo ensalada alcachofas unidades 2 precio 12

me pone:

El contenido de la cesta de la compra es:

Artículo: Ensalada ud: 2

Cantidad total de artículos: 2
Importe total: 12
si yo meto otro articulo me pone:


El contenido de la cesta de la compra es:
Artículo: Ensalada ud: 2
Artículo: pastel ud: 2

Cantidad total de artículos: 2
Importe total: 20 y deberia poner:
articulo: ensalada cantidad 2 precio 6 importe 12
articulo: pastel cantidad 2 precio 10 importe 20

total articulos: 4
total: 31

osea que cuando meto otro articulo refleja la ultima operacion.

un saludo y gracias


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#6 Publicado: 25 Sep 2011 22:43



Eso te pasa porque rellenas mal el array que compone el carrito,

El primer error es NO utilizar una base de datos para guardar las ventas que haces, pero ya no lo puedes arreglar.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#7 Publicado: 26 Sep 2011 09:47



vale haber si he entendido, cuando haces una venta la guardas en una base de datos y cuando haces otra la vuelves a guardar, y luego en el carrito al ejecutar el archivo haces una busqueda de las ventas de buscando por el usuario que tiene la sesion abierta.
Pero pregunto, si buscamos por el usuario si este ha hecho mas compras el mismo dia, nos puede inducir a error al recuperar las ventas.
Como podemos decirle que si es el mmismo usuario de la sesion abierta en un campo por ejemplo nº factura que poonga uno (el que sea) y si es otra sesion que ponga uno mas.
gracias por tu ayuda.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Miembro

Asiduo

  Karma             541

#8 Publicado: 26 Sep 2011 09:49



Una cosa, igual tienes tu una idea mejor de como enumerar las ventas de cada linea de factura para luego buscarlas y con que criterios busccarlas.

un saludo

Me ha valido de mucho tu ultima explicacion de registrar cada linea de venta de la factura.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#9 Publicado: 26 Sep 2011 10:28



Hay que diferenciar dos cosas. Ventas realizadas y artículos en el carrito de compra. Esto es fácil, crea una tabla de ventas realizadas, facturas, otra tabla de líneas de factura, esto para las operaciones ya realizadas, y otras dos tablas de carrito en curso y otra tabla de líneas de carrito en curso.

Mientras no compre, los artículos permanecerán en el carrito, cuando ya han comprado los artículos pasan a la factura y se vacía el carrito.

Para controlar el carrito, puedes utilizar sesiones que duren 48 horas, después se borra todo lo que hay en el carrito, eso para los usuarios no registrados, para los registrados, utilizas su ID de registro y mantienes el carrito lleno hasta que el propio usuario lo vacíe.

El tema de los carritos de compra, como puedes ver tiene su complejidad, y hay que saber desarrollar muy bien, con las ideas muy claras, para no tener errores.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#10 Publicado: 27 Sep 2011 09:36



Sobre la tabla de las lineas de factura, como las paso a ventas, tendran que tener un mismo numero de factura que no sea el ID de la tabla linea de factura, como puedo decirle , que mientras sea la misma seison (mismo usuario ) que busque en la tabla lineas de factura, todos los registros de ese usuario, y luego al comprarlos que los borre,¿ puede ser asi?
Porque sin los borra nos buscaria otros de otra seison de la misma persona.

Una pregunta, cual es el comando (la etiqueta o como se llame) en php para decirle que:
escriba un numero dentro del campo de una tabla, que le vamos a llamar al campo numero factura, que mientras el usuario sea el mismo el numero del campo numero de factura sea el mismo y que si es otro usuario que ponga uno mas.

De tal forma que cuando entre un tercer usuario el numero de factura sea correlativo tambien.
He intentado hacerlo en la tabla pero si el campo no es ID (primary key) no me deja ponerle que inserte numeros y que sean correlativos, que vaya aumentando uno mas.

una pregunta mas, sobre las dos tablas de carrito en curso, porque dos , que es lo que hace cada una y que informacion debe contener cada una.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#11 Publicado: 27 Sep 2011 12:12



Las sesiones no tienen nada que ver con las facturas, en el caso de las facturas solo las utilizas para que el usuario que entre tenga permisos para comprar y/o ver sus facturas o compras.

Las sesiones las puedes utilizar para los carritos de compra temporales.

Cada factura tiene su ID, que hay que utilizar como clave de relación con las líneas de factura, luego cada línea de factura tendrá otro ID único, que no tiene nada que ver con campo de relación.

Para insertar valores en una tabla necesitas utilizar la orden INSERT

INSERT INTO nombre_de_tabla (campo1, campo2, campo3,...)
VALUES (valor1, valor2, valor3,...)

Una tabla es el carrito y la otra es donde se guardan los productos del carrito.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#12 Publicado: 27 Sep 2011 22:46



creo que solo me queda una duda, como se hace esto:
has dicho "Cada factura tiene su ID, que hay que utilizar como clave de relación con las líneas de factura,"
Que hago, Le pongo a la tabla que almacena las lineas de facturas un campo numero de factura y la relaciono con el ID de factura de la talba facturas o como se hace, si puedes explicame ese paso de relacion , creo que es lo unico que me falta por comprender y ante todo muchas gracias por el curso rapido.
un saludo.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#13 Publicado: 27 Sep 2011 23:15



Tabla facturas

ID --> autointroducido, serial
Resto de campos que necesites

Tabla líneas de factura

ID --> autointroducido, serial
ID_factura --> Este número tiene que tener el mismo valor que el ID de la tabla facturas, para que cuando realices una busqueda de una factura veas tambien sus líneas de factura.
Resto de campos que necesites


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#14 Publicado: 29 Sep 2011 09:37



Una aclaracion si es posible, durante la compra vas rellenando en la tabla lineas de factura las compras de tal forma que le tienes que decir que si el usuario es el mismo , introduzca un nº en ID_factura y que si es otro usuario introduzca ese numero +1 y asi sucesivamente.

Como se hace eso en php.
muchas gracias y un saludo.

tu explicacion ha sido genial.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela

Administrador


  Karma               26432

#15 Publicado: 29 Sep 2011 09:47



No exactamente, a parte de que el usuario sea el mismo, lo que controlas es que el ID de la factura sea el mismo. Una vez creada la factura puedes añadir todos los artículos que queras a esa factura a través del ID de la misma.

De todas las forma hablamos de factura y debiéramos de hablar de orden de compra en el carrito, la factura no se emite hasta que no se cierra el carrito de compra.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Asiduo

  Karma             541

#16 Publicado: 7 Oct 2011 10:08



muchas gracias por tu ayuda y un saludo , aclarado


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
okela
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con sumar importes y totales


Conectados: Invitados - 26
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2021
Para Udias.com © 1996-2021
Hosting con Interdominios