Descontar instrumentos de la BD!

Soy yo nuevamente, ¿cómo andas?
Te comento lo que estoy haciendo...
Estoy realizando un formulario donde se ingresan los instrumentos utilizados cuando se realizan las operaciones.
En dicho formulario tengo que elegir y llenar los siguientes datos: el profesional que intervino en la operación, el instrumento que se utilizo, la cantidad y la fecha de utilización.
Todo esto supuestamente se guarda en la tabla instrumentos_util
Hasta ahí va todo bien.
Los instrumentos que se dan de alta se almacenan en la tabla instrumentos
El problema es que cuando yo presiono el botón aceptar para supuestamente dar de baja un instrumento, lo que tendría que hacer es primero verificar que existe la cantidad que yo ingrese en el campo cantidad para poder ser descontado (osea tendría que verificar en la tabla instrumentos si la cantidad que hay es mayor a la que se quiere descontar) sino es así me avise que no hay suficiente stock para dar de baja esa cantidad.
te paso el form de instrumentos utilizados:
<?php
require_once "/../../includes/cnx.php";
?>
<!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=iso-8859-1" />
<link rel="stylesheet" type="text/css" href="/sao/css/style.css" />
<script type="text/javascript" src="/sao/partes/Instrum_util/popcalendar.js"></script>
<title>Documento sin título</title>
</head>
<body background="../../imgs/fondo_iframe.jpg">
<form name="instrum_util" method="post" onSubmit="return valida_envia(this);" action="nuevo_ingreso.php">
<table width="1%" border="0" class="label" align="center">
<tr>
<td bgcolor="#003399" align="center" class="cabecera">Instumentos utilizados</td>
</tr>
<tr>
<td>
<table width="100%" border="0">
<tr>
<td nowrap="nowrap" class="atributos">Profesional:</td>
<td><?php  
$consulta1= mysql_query("SELECT nombres,apellidos,cod_prof FROM profesionales where estado='Habilitado' ORDER BY apellidos ASC", $con);
       echo "<select name='doctores' id='doctores'>";
       echo "<option value=''></option>";
        while($row= mysql_fetch_array($consulta1)) {
         echo "<option value=".($row['cod_prof']).">".$row['apellidos'],", ",$row['nombres']."</option>";
       }
       echo "</select>";
  ?></td>
</tr>
<tr>
<td nowrap="nowrap" class="atributos">Instrumento:</td>
<td><?php  
$consulta1= mysql_query("SELECT descripcion, cod_instrum FROM instrumentos ORDER BY descripcion ASC", $con);
       echo "<select name='instrumentos'>";
       echo "<option value=''></option>";
        while($row= mysql_fetch_array($consulta1)) {
         echo "<option value=".($row['cod_instrum']).">".$row['descripcion']."</option>";
       }
       echo "</select>";
  ?></td>
</tr>
<tr>
<td nowrap="nowrap" class="atributos">Fecha de utiización:</td>
<td><input type="text" name="fecha" size="8" id="dateArrival" onfocus="popUpCalendar(this, instrum_util.dateArrival, 'dd-mm-yyyy');" onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"/>  
</tr>
<tr>
<td class="atributos">Cantidad:</td>
<td><input type="text" name="cantidad" size="3" maxlength="2" onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"/>  
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="bt_aceptar" value="Aceptar"/>
   <input type="reset" name="borrar" value="Borrar"/>
  </td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
--------------------------------------------------------------------------------------
Quería saber si tienes idea de como puedo llegar a realizar esto

1 Respuesta

Respuesta
1
Según escribes tienes listo el php donde vas a realizar la operación de dar baja a un numero de un instrumento, entonces lo que tienes que hacer es validar antes de hacer la operación.
Al mandar el numero de instrumento y el nombre del instrumento o el id del mismo, podrias hacer un select count(cantidad) as numInst from tabla_de_instrumetos where id_instrumento='id_instrumento' ese dato que te da lo guardas en una var ejemplo $cantidad_instrumento y despues realizas un si, ejemplo la si $cantidad_instrumento< $cantidad_enviada_del_form entonces restas esas variables y realizas el uddate colocando el valor de esa resta en el campo cantidad sino que te envie un mensaje en un alert por ejemplo echo "
<script> alert(.... .... ) </script>
";
Hola experto, me he basado en lo que me has dicho y por lo tanto el código que hice fue el siguiente..
Te muestro primero las dos tablas con la que interactuo y después el código php.
Tabla instrumentos tabla instrumentos_util
--------------------------- ------------------------------------
cod_instrum                                                              cod_instrum_util
descripcion                                                                cod_prof
cantidad                                                                    cod_instrum
fecha                                                                         fecha_util
---------------------------                                                descripcion
                                                                                  cantidad_util            
                                                                            ----------------------------------
ahora el codigo php
----------------------------------------------
require_once "/../../includes/cnx.php";
if (isset($_POST["bt_aceptar"])){
         $doc=$_POST['doctores'];                           
         $instrumento=$_POST['instrumentos'];
         $fecha=$_POST['fecha'];
         $cantidad=$_POST['cantidad'];
         $codigo=$_POST['idinstrum'];
      $consulto="select count($cantidad) as cantidad from instrumentos where descripcion='$instrumento'";
      $cantidad_total= mysql_query($consulto, $con);
      if (($cantidad_total < $cantidad)){
       $resta= ($cantidad_total - $cantidad);
       $consulta= "UPDATE instrumentos SET cantidad=$resta WHERE cod_instrum=$codigo";
       mysql_query($consulta, $con);
       echo "
<script> alert('El instrumento se dio de baja')</script>
";
      }else{
        echo "
<script> alert('La cantidad de instrumentos que se quiere dar de baja es mayor a la que hay en existencia')</script>
";
}
}
Cuando presiono aceptar entra al if y parecería que me da de baja los instrumentos, pero en realidad no lo hace.
Lo que tengo duda es el campo que esta después del as: select count($cantidad) as ...
No se si el campo que esta después del as esta bien.
Otra pregunta que tengo es que yo supuestamente estoy actualizando la tabla instrumentos modificando el campo cantidad.
Pero tendría que guardar ese registro también en la tabla instrumentos_util para después poder realizar reportes...
Osea necesitaría que cuando me actualice la cantidad de la tabla instrumento a su vez me lo guarde como un registro en la tabla instrumentos_util
Espero tu respuesta
Saludos
Diego
$consulto="select count($cantidad) as cantidad from instrumentos where descripcion='$instrumento'";
En la parte que te resalte del count no debe ir una variable count($cantidad) acá debe ir el campo de tu base de datos cantidad ya que con el where descripcion='$instrumento'"; esto es para tomar el numero total de instrumentos que tienes de ese item.
Por lo del alias count($cantidad) as cantidad seria recomendable que le colocaras otro nombre ya que ese nombre cantidad es un campo de la base de datos y se presta para confusiones.
Lo otro recomendable es las comillas simples $consulto="select count($cantidad) as otro_nombre from instrumentos where descripcion='$instrumento'";
$consulta= "UPDATE instrumentos SET cantidad='$resta' WHERE cod_instrum='$codigo'";
Cuando te metas en el si no envíes de una a realizar la actualización primero prueba con unos echo y pintas las variables que estas utilizando ejemplo:
echo "select count($cantidad) as otro_nombre from instrumentos where descripcion='$instrumento'";
echo "UPDATE instrumentos SET cantidad='$resta' WHERE cod_instrum='$codigo'";
Y revisa si tus variables están llevando los valores si es así realiza el update en la database y me cuentas, primero termina esta parte y después vamos a la siguiente...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas