PHP - Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

   
Vista:

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por Carlos (4 intervenciones) el 15/04/2013 00:14:58
Hola a todos, bueno tengo un problemita con un pequeño sistema en el que estoy trabajando, se trata de un sistema de ventas e inventario de una panadería y cuento con un total de 4 paginas en PHP y 2 tablas de base de datos en SQL usando WampServer, mi problema es que, a la hora de registrar una venta, se cuenta con varios campos a llenar (id_venta, conchas, virotes, empanadas, pastel, pizza, fecha) ademas de un campo llamado costototal, aqui va el problema, los campos de cada pan es decir conchas, virotes, empanadas, pastel, pizza y fecha ya tienen ciertas características cada uno almacenadas dentro de otra tabla que tiene sus registros con (id_inventario, producto, costo, cantidad_inicial, cantidad_final, total_venta). Lo que busco hacer es, que cuando esté realizando una venta, los campos de cada pan tengan como costo por defecto, el costo que les asigne en la otra tabla donde estan registrados (costo) para que al llevar acabo una venta si la cantidad de conchas a vender es de 3, este se multiplique por su costo y guarde un total para despues sumarlo con el total de los otros panes, me explico? además tambien tengo que lograr que la cantidad de panes que venda en una venta (valga la redundancia) se resten a los que se tienen en el inventario (cantidad_inicial, cantidad_final), bueno espero estarme explicando.. espero... De antemano muchas gracias por siquiera leer el mensaje XD
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por xve (5522 intervenciones) el 15/04/2013 09:10:02
Hola Carlos, por lo que comentas, es un problema de sumar y restar en la base de datos...

La verdad, no se por donde ayudarte, no se como lo tienes montado, pero no debería de ser muy difícil... si te parece, nos vas mostrando a cada paso el código con los errores o problemas, y lo vamos solucionando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por Carlos (4 intervenciones) el 16/04/2013 00:32:33
Bueno para comenzar este es el código de la pagina para registrar una venta.. En esta parte es donde quisiera que dependiendo de la cantidad de pan que se ponga en el campo, este se multiplique por el valor que tiene en el campo precio de otra tabla, para que así cuando se presione el boton Insertar Registro, los precios se multipliquen por las cantidades de cada pan y se guarden en el campo costototal que esta en la página de inventario... no se si me explico.. de cualquier forma aquí te dejo el código de la pagina para realizar una venta...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?php require_once('Connections/lola.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}
 
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
  $insertSQL = sprintf("INSERT INTO panes (id_venta, conchas, virotes, empanadas, pastel, pizza, fecha) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['id_venta'], "int"),
                       GetSQLValueString($_POST['conchas'], "int"),
                       GetSQLValueString($_POST['virotes'], "int"),
                       GetSQLValueString($_POST['empanadas'], "int"),
                       GetSQLValueString($_POST['pastel'], "int"),
                       GetSQLValueString($_POST['pizza'], "int"),
                       GetSQLValueString($_POST['fecha'], "text"));
 
  mysql_select_db($database_lola, $lola);
  $Result1 = mysql_query($insertSQL, $lola) or die(mysql_error());
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>¡Bienvenido al sistema de gestón de panaderia Doña Lola!</title>
<style type="text/css">
body {
	background-image: url();
	background-repeat: no-repeat;
	margin-left: 200px;
	margin-right: 200px;
	background-color: #D4BF55;
}
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	color: #FFFFFF;
}
.arial {
	font-family: Arial, Helvetica, sans-serif;
}
</style>
</head>
 
<body>
<center> <p><a href="Index.php"><img src="Imagenes/logoO.png" alt="" width="700" height="450" align="middle" /></a></p> </center>
<p>&nbsp;</p>
<p> <center>
  <p><img src="Imagenes/barra1.png" alt="" width="700" height="80" border="0" usemap="#Map" />
    <map name="Map" id="Map">
      <area shape="rect" coords="1,2,187,79" href="Ventapan.php" />
      <area shape="rect" coords="553,2,699,78" href="Inventario.php" />
      <area shape="rect" coords="255,3,453,81" href="Registro de ventas.php" />
    </map>
  </p>
  <p>&nbsp;</p>
  <h2>&nbsp;</h2>
  <h2>¡Bienvenido al formulario de registro de venta de la panaderia Doña Lola!</h2>
</center>
</p>
<p> <center></center>
</p>
<center>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <form action="<?php echo $editFormAction; ?>" method="post" name="form1" id="form1">
    <table align="center">
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Id_venta:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="id_venta" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Conchas:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="conchas" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Virotes:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="virotes" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Empanadas:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="empanadas" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Pastel:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="pastel" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Pizza:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="pizza" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55"><h3>Fecha:</h3></td>
        <td bgcolor="#D49F55"><h3>
          <input type="text" name="fecha" value="" size="32" />
        </h3></td>
      </tr>
      <tr valign="baseline">
        <td align="right" nowrap="nowrap" bgcolor="#D49F55">&nbsp;</td>
        <td bgcolor="#D49F55"><input type="submit" value="Insertar registro" /></td>
      </tr>
    </table>
    <input type="hidden" name="MM_insert" value="form1" />
  </form>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p><img src="Imagenes/Pie.png" alt="" width="700" height="80" /></p>
<p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
</center>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por xve (5522 intervenciones) el 16/04/2013 07:34:26
Hola Carlos, por lo que veo en tu código cada vez que se realiza una venta, la guardas en la base de datos...

Hasta aquí creo que lo tienes bien.... ahora, si lo que quieres es saber la cantidad de cada producto que has vendido, yo lo haría con una consulta SQL utilizando la clausula sum()... algo así:

1
2
3
SELECT
sum(conchas) as conchasTotal, sum(virotes) as virotesTotal, sum(empanadas) as empanadasTotal, sum(pastel) as pastelTotal, sum(pizza) as pizzaTotal
FROM panes


Si deseas limitarlo por tiempo, por ejemplo para el mes actual, puedes hacerlo así:

1
2
3
4
SELECT
sum(conchas) as conchasTotal, sum(virotes) as virotesTotal, sum(empanadas) as empanadasTotal, sum(pastel) as pastelTotal, sum(pizza) as pizzaTotal
FROM panes
WHERE month(fecha)=month(NOW())


Espero que te sirva.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por Carlos (4 intervenciones) el 16/04/2013 21:24:58
Bueno si había visto sobre esa función, el problema que tengo sobre todo es saber donde poner esa parte del código que me estas dando, bueno talvez esto sera algo exigente, pero podría contactarte por otro medio un poco mas ágil para que me puedas ayudar? En cualquier caso ahí te planteo mi duda.. no se en que parte poner esa parte del código.. y esto es solo la primera parte :c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por xve (5522 intervenciones) el 16/04/2013 22:16:31
Hola CArlos, ese código que te he puesto, son las consultas sql que te devolverán la información que solicitas.... las tienes que utilizar en la pagina donde quieras mostrar los resultados.

Siguiendo con tu conexión a la base de datos, podría ser algo así:
1
2
3
4
5
6
7
8
9
10
$result = mysql_query("SELECT
sum(conchas) as conchasTotal, sum(virotes) as virotesTotal, sum(empanadas) as empanadasTotal, sum(pastel) as pastelTotal, sum(pizza) as pizzaTotal
FROM panes
WHERE month(fecha)=month(NOW())");
while($row=mysql_fetch_array($result))
{
    echo "<br>".$row["conchasTotales"];
    echo "<br>".$row["virotesTotal"];
    ...
}


Espero que te ayude... aunque ten en cuenta que mysql_... son funciones deprecated, que quiere decir que en próximas versiones ya no aparecerán.

Espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sumar/Restar datos de varios campos en formularios y tablas (PHP y Base de datos)

Publicado por Carlos (4 intervenciones) el 16/04/2013 23:15:44
Ok ya veo.. ahora.. aqui te pongo el código que es la página donde se muestran las ventas realizadas..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<?php require_once('Connections/lola.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }
 
  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
 
  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}
 
if ((isset($_POST['id_venta'])) && ($_POST['id_venta'] != "")) {
  $deleteSQL = sprintf("DELETE FROM panes WHERE id_venta=%s",
                       GetSQLValueString($_POST['id_venta'], "int"));
 
  mysql_select_db($database_lola, $lola);
  $Result1 = mysql_query($deleteSQL, $lola) or die(mysql_error());
}
 
$maxRows_Registro = 30;
$pageNum_Registro = 0;
if (isset($_GET['pageNum_Registro'])) {
  $pageNum_Registro = $_GET['pageNum_Registro'];
}
$startRow_Registro = $pageNum_Registro * $maxRows_Registro;
 
mysql_select_db($database_lola, $lola);
$query_Registro = "SELECT * FROM panes";
$query_limit_Registro = sprintf("%s LIMIT %d, %d", $query_Registro, $startRow_Registro, $maxRows_Registro);
$Registro = mysql_query($query_limit_Registro, $lola) or die(mysql_error());
$row_Registro = mysql_fetch_assoc($Registro);
 
if (isset($_GET['totalRows_Registro'])) {
  $totalRows_Registro = $_GET['totalRows_Registro'];
} else {
  $all_Registro = mysql_query($query_Registro);
  $totalRows_Registro = mysql_num_rows($all_Registro);
}
$totalPages_Registro = ceil($totalRows_Registro/$maxRows_Registro)-1;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>¡Bienvenido al sistema de gesitón de panaderia Doña Lola!</title>
<style type="text/css">
body {
	background-image: url();
	background-repeat: no-repeat;
	margin-left: 200px;
	margin-right: 200px;
	background-color: #D4BF55;
}
body,td,th {
	font-family: Arial, Helvetica, sans-serif;
	font-size: 14px;
	color: #FFFFFF;
}
.arial {
	font-family: Arial, Helvetica, sans-serif;
}
</style>
</head>
 
<body>
<center> <p><a href="Index.php"><img src="Imagenes/logoO.png" alt="" width="700" height="450" align="middle" /></a></p> </center>
<p>&nbsp;</p>
<p> <center>
  <img src="Imagenes/barra1.png" alt="" width="700" height="80" border="0" align="absmiddle" usemap="#Map" />
  <map name="Map" id="Map">
    <area shape="rect" coords="1,2,187,79" href="Ventapan.php" />
    <area shape="rect" coords="553,2,699,78" href="Inventario.php" />
    <area shape="rect" coords="255,3,454,79" href="Registro de ventas.php" />
  </map>
</center>
</p>
<p> <center></center>
</p>
<p>&nbsp;</p>
<h2 align="center">¡Bienvenido al registro de venta de la panaderia Doña Lola!</h2>
<p>&nbsp; </p>
<p align="justify">&nbsp;</p>
<table width="1081" border="1" align="center">
  <tr bgcolor="#D49F55">
    <th width="135" scope="col"><h3>Numero de venta</h3></th>
    <th width="133" scope="col"><h3>Cantidad de Conchas</h3></th>
    <th width="124" scope="col"><h3>Cantidad de Virotes</h3></th>
    <th width="154" scope="col"><h3>Cantidad de empanadas</h3></th>
    <th width="117" scope="col"><h3>Cantidad de pastelitos</h3></th>
    <th width="109" scope="col"><h3>Cantidad de pizzas</h3></th>
    <th width="144" scope="col"><h3>Pago total</h3></th>
    <th width="113" scope="col"><h3>Fecha de la venta</h3></th>
  </tr>
 
  <?php do { ?>
    <tr>
      <th scope="col"><?php echo $row_Registro['id_venta']; ?></th>
      <th scope="col"><?php echo $row_Registro['conchas']; ?></th>
      <th scope="col"><?php echo $row_Registro['virotes']; ?></th>
      <th scope="col"><?php echo $row_Registro['empanadas']; ?></th>
      <th scope="col"><?php echo $row_Registro['pastel']; ?></th>
      <th scope="col"><?php echo $row_Registro['pizza']; ?></th>
      <th scope="col"><?php echo $row_Registro['costototal']; ?></th>
      <th scope="col"><?php echo $row_Registro['fecha']; ?></th>
    </tr>
 
    <?php } while ($row_Registro = mysql_fetch_assoc($Registro)); ?>
</table>
<p>&nbsp;</p>
<center> <form id="id_venta" name="id_venta" method="post" action="">
  <h3>Si desea eliminar algun registro, ingrese aqui el numero de venta a eliminar:
    <label for="borrar"></label>
    <input type="text" name="id_venta" id="id_venta" />
    <input type="submit" name="borrar" id="borrar" value="Eliminar" />
  </h3>
</form>
</center>
<p>&nbsp;</p>
<p>&nbsp;</p>
<center>
<p align="center"><img src="Imagenes/Pie.png" alt="" width="700" height="80" /></p>
</center>
<p align="justify">&nbsp;</p>
</body>
</html>
<?php
mysql_free_result($Registro);
?>


Si te fijas, en el código anterior que era el de la venta, no mostre el campo CostoTotal para que no lo llenaran y asi poder usar ese campo como el lugar donde pondre el resultado de la suma de los costos de los panes, entonces ahí te explico mejor mi duda.. en que parte de ese código pondría lo que me diste.. y otra duda, eso de conchastotal y esas cosas que me pones, son variables que tengo que crear aparte o como?
Disculpa mi nivel de novato amigo... :c
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar