Foros del Web » Programando para Internet » PHP »

Sumar cantidades a una tabla

Estas en el tema de Sumar cantidades a una tabla en el foro de PHP en Foros del Web. Hola a todos; Tengo una tabla en la que tengo estos campos: unidades, descripcion, grupo. En el campo unidades hay unas cantidades que me gustaria ...
  #1 (permalink)  
Antiguo 16/01/2009, 06:23
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Sumar cantidades a una tabla

Hola a todos;
Tengo una tabla en la que tengo estos campos:
unidades, descripcion, grupo. En el campo unidades hay unas cantidades que me gustaria se sumaran segun la cantidad que se envia desde un formulario.
Por ejemplo si en la tabla tengo en el campo "unidades" 200 y mediante un formulario quiero sumarle 30 mas.
Como tendría que hacerlo.
Muchas gracias
  #2 (permalink)  
Antiguo 16/01/2009, 06:39
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Sumar cantidades a una tabla

lo primero que deberias hacer es recuperar el campo unidades que actualmente está en BD y cargarla a tu form dentro de un input type="hidden" value"<?=$variable_campo_unidades_actual?>" por ejemplo. En el mismo form poner el campo "unidades_nuevas"
Luego al enviar el form el script debería recuperar y sumar así
$unidades = $variable_campo_unidades_actual + $unidades_nuevas ;
UPDATE nombre_table set unidades = '$unidades', descripcion = '$descripcion', grupo = '$grupo' WHERE id = $id";
  #3 (permalink)  
Antiguo 16/01/2009, 06:59
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Sumar cantidades a una tabla

Gracias por tu respuesta, pero soy un poco nuevo en esto y no entiendo bien lo que me dices.
te pongo el codigo que tengo
Código PHP:
<form id="form1" name="form1" method="post" action="">
      <label> Articulo:

        <select name="articulo" id="articulo">
          <?php
do {  
?>
          <option value="<?php echo $row_consulta['articulo']?>"<?php if (!(strcmp($row_consulta['articulo'], $row_consulta['articulo']))) {echo "selected=\"selected\"";} ?>><?php echo $row_consulta['articulo']?></option>
          <?php
} while ($row_consulta mysql_fetch_assoc($consulta));
  
$rows mysql_num_rows($consulta);
  if(
$rows 0) {
      
mysql_data_seek($consulta0);
      
$row_consulta mysql_fetch_assoc($consulta);
  }
?>
        </select>
      </label>
      Grupo: 
      <label>
        <select name="grupo" id="grupo">
          <?php
do {  
?>
          <option value="<?php echo $row_consulta['grupo']?>"<?php if (!(strcmp($row_consulta['grupo'], $row_consulta['grupo']))) {echo "selected=\"selected\"";} ?>><?php echo $row_consulta['grupo']?></option>
          <?php
} while ($row_consulta mysql_fetch_assoc($consulta));
  
$rows mysql_num_rows($consulta);
  if(
$rows 0) {
      
mysql_data_seek($consulta0);
      
$row_consulta mysql_fetch_assoc($consulta);
  }
?>
        </select>
      </label>
      Unidades:
      <label>
        <input name="unidades" type="text" id="unidades" size="4" />
      </label>
    </form>
como deberia cargar el campo que me dices?.
Muchas gracias por tu ayuda
  #4 (permalink)  
Antiguo 16/01/2009, 07:20
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Sumar cantidades a una tabla

Hola, en tu form reemplaza esto:
<input name="unidades" type="text" id="unidades" size="4" />
por esto:
<input name="unidades_nuevas" type="text" id="unidades_nuevas" size="4" />
y debajo copia esto:
<input name="unidades_actual" type="hidden" id="unidades_actual" value="<?php echo $row_consulta['unidades']?> />

no veo el action de tu form aqui deberia poner el archivo que recibirá la info que envies para procesarla, el script que escribe en la base de datos lo encontrarás facilmente porque pondrá algo parecido a esto:
UPDATE articulos set unidades = '$unidades', descripcion = '$descripcion', grupo = '$grupo' WHERE articulo = $articulo";

antes de esto debes agregar la siguiente línea para que sume los datos que haz pasado

$unidades = $unidades_actual + $unidades_nuevas ;

si estas trabajando con funciones debes pasar las variables dentro de la funcion, sino no funcionará
EJ:
funcion_alta_modif ($accion,$articulo,$grupo,$unidades_actual ,$unidades_nuevas);
  #5 (permalink)  
Antiguo 16/01/2009, 12:17
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Sumar cantidades a una tabla

Quizas este equivocado a la hora de hacer las consultas, te explico lo que estoy haciendo a ver si tu que sabes mas me dices si lo hago bien.
tengo una tabla que se llama STOCK y tiene 3 campos idarticulos, articulos, cantidad.
En esta tabla he colocado el stock inicial.
Tengo 4 locales que insertan los pedidos mediante un formulario a otra tabla que se llama "pedido" y aqui tengo 6 campos idpedido, unidades, articulos, local, fecha, si/no.
la fecha se inserta automaticamente y por defecto envio un campo oculto al campo "si/no" con la variable N, los demas campos los cojo con un combox desde la tabla STOCK menos las unidades.
El que tiene que llevar los pedidos hace una consulta y lista todos los datos que lleven el N y cuando a preparado el pedido acepta todos los articulos enviando una actualizacion actualizando los campos articulos (por si no tiene las cantidades que le piden) y el campo SI/No que lo actualiza a S.
Hasta aqui todo me sale bien.
Ahora quiero que se me actualice la tabla STOCK, quiero decir, que una vez se haya actualizado la tabla de alguna manera pueda restar lo que sale hacia los locales de la tabla STOCK.
No se si me he explicado bien o si es muy complicado lo que quiero hacer.

Un saludo
  #6 (permalink)  
Antiguo 16/01/2009, 16:23
 
Fecha de Ingreso: enero-2009
Mensajes: 165
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Sumar cantidades a una tabla

Si, te entiendo, entonces lo que necesitas es que en el momento que revisan el pedido y cambian el estado de No a Si se reste en stock las unidades del artículo.
Para esto en el form del que prepara los pedidos debes recoger de la base de datos el campo cantidad de tu tabla STOCK en un input type=hidden para que cuando envíe el formulario recoja los datos como te explicaba antes y haga la resta:
$cantidad = $cantidad - $unidades_pedido ;
y luego entonces que haga el update STOCK set cantidad = '$cantidad' WHERE idarticulos = $idarticulos
Creo que sería interesante que verifiques con javascript antes que envíe el formulario que $unidades_pedido sea menor a la $cantidad disponible y que si no lo es muestre una alerta con la cantidad disponible de manera que no te quede el campo con números negativos.
Suerte, slds
  #7 (permalink)  
Antiguo 17/01/2009, 12:28
 
Fecha de Ingreso: febrero-2008
Mensajes: 675
Antigüedad: 16 años, 2 meses
Puntos: 5
Respuesta: Sumar cantidades a una tabla

Gracias A_PRONTE, como te he dicho antes no se donde colocar lo que me dices, soy un poco nuevo y aprendo bastante con vosotros. te pego el codigo y si puedes me dices donde colocar el codigo que me pones y si no es mucho pedir explicar por que se pone ahi. Es solo para tener una idea de por que se pone codigo en un sitio especifico.
Código PHP:
<?php require_once('../../Connections/meu.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_update"])) && ($_POST["MM_update"] == "actua")) {
  
$updateSQL sprintf("UPDATE pedidos SET articulo=%s, unidades=%s, sino=%s WHERE idpedido=%s",
                       
GetSQLValueString($_POST['articulo'], "text"),
                       
GetSQLValueString($_POST['unidades'], "int"),
                       
GetSQLValueString($_POST['si'], "text"),
                       
GetSQLValueString($_POST['id'], "int"));

  
mysql_select_db($database_meu$meu);
  
$Result1 mysql_query($updateSQL$meu) or die(mysql_error());

  
$updateGoTo "listados.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));
}

$maxRows_actualiza 10;
$pageNum_actualiza 0;
if (isset(
$_GET['pageNum_actualiza'])) {
  
$pageNum_actualiza $_GET['pageNum_actualiza'];
}
$startRow_actualiza $pageNum_actualiza $maxRows_actualiza;

mysql_select_db($database_meu$meu);
$query_actualiza "SELECT * FROM pedidos";
$query_limit_actualiza sprintf("%s LIMIT %d, %d"$query_actualiza$startRow_actualiza$maxRows_actualiza);
$actualiza mysql_query($query_limit_actualiza$meu) or die(mysql_error());
$row_actualiza mysql_fetch_assoc($actualiza);

if (isset(
$_GET['totalRows_actualiza'])) {
  
$totalRows_actualiza $_GET['totalRows_actualiza'];
} else {
  
$all_actualiza mysql_query($query_actualiza);
  
$totalRows_actualiza mysql_num_rows($all_actualiza);
}
$totalPages_actualiza ceil($totalRows_actualiza/$maxRows_actualiza)-1;$maxRows_actualiza 10;
$pageNum_actualiza 0;
if (isset(
$_GET['pageNum_actualiza'])) {
  
$pageNum_actualiza $_GET['pageNum_actualiza'];
}
$startRow_actualiza $pageNum_actualiza $maxRows_actualiza;

mysql_select_db($database_meu$meu);
$query_actualiza "SELECT * FROM pedidos WHERE sino = 'N' AND salon = 'ARAGON'";
$query_limit_actualiza sprintf("%s LIMIT %d, %d"$query_actualiza$startRow_actualiza$maxRows_actualiza);
$actualiza mysql_query($query_limit_actualiza$meu) or die(mysql_error());
$row_actualiza mysql_fetch_assoc($actualiza);

if (isset(
$_GET['totalRows_actualiza'])) {
  
$totalRows_actualiza $_GET['totalRows_actualiza'];
} else {
  
$all_actualiza mysql_query($query_actualiza);
  
$totalRows_actualiza mysql_num_rows($all_actualiza);
}
$totalPages_actualiza ceil($totalRows_actualiza/$maxRows_actualiza)-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>Documento sin título</title>
</head>

<body>
<p>PEDIDOS LOCAL ARAGON</p>
<?php do { ?>
  <form id="actua" name="actua" method="POST" action="<?php echo $editFormAction?>">
    <label>
      <input name="id" type="text" id="id" value="<?php echo $row_actualiza['idpedido']; ?>" size="2" />
    </label>
    <label>
      Unidades: 
      <input name="unidades" type="text" id="unidades" value="<?php echo $row_actualiza['unidades']; ?>" size="4" />
    </label>
    <label>
      Articulo:
      <input name="articulo" type="text" id="articulo" value="<?php echo $row_actualiza['articulo']; ?>" />
    </label>
    <label>
      <input name="si" type="hidden" id="si" value="Y" />
      <input type="submit" name="button" id="button" value="Enviar" />
    </label>
    <input type="hidden" name="MM_update" value="actua" />
  </form>
  <?php } while ($row_actualiza mysql_fetch_assoc($actualiza)); ?>
<p>&nbsp;</p>
</body>
</html>
<?php
mysql_free_result
($actualiza);
?>
Muchas gracias de nuevo.
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 14:01.