Tengo creado una pequeña aplicación para la requisión de compras de articulos, tengo 2 tablas mysql: comdoc(Guardo el folio del documento y sus generales) y comren(guardo cada articulo dado de alta, renglon por renglon).
Cuando doy de alta el requisición el sistema primero va a la tabla comdoc a verificar el ultimo folio que use, y así poner el consecutivo, y después de eso me permite capturar manualmente el dato que necesite en cada renglon que pongo en la pantalla por medio de tablas. Bueno hasta ahí no hay problema, sino cuando voy a guardar, cuando le indico guardar, vuelvo a verificar que el ultimo folio, por aquello de que otro usuario en el inter lo halla usado, y bueno al parecer no me funciona del todo bien, pues en ocasiones si dos usuarios guardan al mismo tiempo, pues las partidas me aparecen complementadas con las del otro, es decir, se me guardan en con el mismo folio lo que capturo un usuario y el otro. Necesito consejos para saber como puedo mejorar esta programación y pueda bloquear el registro mientras guarda uno u el otro, espero me puedan ayudar.
Código PHP:
<html>
<head>
<title>Requisición de Compras</title>
</head>
<body>
<center><h2>Envio de Solicitud</h2></center>
<br>
<ol>
<?php
if (!($link=mysql_connect("10.74.204.17","fernando","fernandito")))
{
echo "error conectando a la base de datos";
exit();
}
if (!mysql_select_db("mb",$link))
{
echo "error seleccionando la base de datos";
exit();
}
/// Aqui comienza el llenado de comdoc
$tmp1 = "Select * from comdoc order by folio";
$consulta1=mysql_query($tmp1,$link);
while ($row=mysql_fetch_array($consulta1))
{
$folio=$row["folio"];
}
if($folio==0)
{
$folio=$folio+1;
}
else
{
$folio=$folio+1;
}
if(strlen($folio)==1)
{
$folio="00000".$folio;
}
if(strlen($folio)==2)
{
$folio="0000".$folio;
}
if(strlen($folio)==3)
{
$folio="000".$folio;
}
if(strlen($folio)==4)
{
$folio="00".$folio;
}
if(strlen($folio)==5)
{
$folio="0".$folio;
}
// printf (" Folio a registrar: %s" , $folio) ;
mysql_free_result ($consulta1) ;
$xfechaalta=date('Y-m-d');
$xhora=date('H:i:s');
$insert= "insert into comdoc (folio,plaza,fechas,hora,deptosolic,caracter,entrega,nomsolic,observacion)
values ('$folio','$plaza','$xfechaalta','$xhora','$deptosolic','$caracter','$entrega','$nomsolic','$observacion')";
mysql_query($insert,$link);
/// Aqui comienza el llenado de comren
if($Desc1!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte1','$Ren1','$Desc1','$Uni1','$Can1','$ExA1')";
mysql_query($insert,$link);
}
if($Desc2!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte2','$Ren2','$Desc2','$Uni2','$Can2','$ExA2')";
mysql_query($insert,$link);
}
if($Desc3!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte3','$Ren3','$Desc3','$Uni3','$Can3','$ExA3')";
mysql_query($insert,$link);
}
if($Desc4!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte4','$Ren4','$Desc4','$Uni4','$Can4','$ExA4')";
mysql_query($insert,$link);
}
if($Desc5!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte5','$Ren5','$Desc5','$Uni5','$Can5','$ExA5')";
mysql_query($insert,$link);
}
if($Desc6!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte6','$Ren6','$Desc6','$Uni6','$Can6','$ExA6')";
mysql_query($insert,$link);
}
if($Desc7!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte7','$Ren7','$Desc7','$Uni7','$Can7','$ExA7')";
mysql_query($insert,$link);
}
if($Desc8!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte8','$Ren8','$Desc8','$Uni8','$Can8','$ExA8')";
mysql_query($insert,$link);
}
if($Desc9!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte9','$Ren9','$Desc9','$Uni9','$Can9','$ExA9')";
mysql_query($insert,$link);
}
if($Desc10!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte10','$Ren10','$Desc10','$Uni10','$Can10','$ExA10')";
mysql_query($insert,$link);
}
if($Desc11!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte11','$Ren11','$Desc11','$Uni11','$Can11','$ExA11')";
mysql_query($insert,$link);
}
if($Desc12!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte12','$Ren12','$Desc12','$Uni12','$Can12','$ExA12')";
mysql_query($insert,$link);
}
if($Desc13!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte13','$Ren13','$Desc13','$Uni13','$Can13','$ExA13')";
mysql_query($insert,$link);
}
if($Desc14!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte14','$Ren14','$Desc14','$Uni14','$Can14','$ExA14')";
mysql_query($insert,$link);
}
if($Desc15!="")
{
$insert="";
$insert= "insert into comren (nofolio,noparte,renglon,descripcion,unidad,cantidad,existencia)
values ('$folio','$parte15','$Ren15','$Desc15','$Uni15','$Can15','$ExA15')";
mysql_query($insert,$link);
}
mysql_close ($link);
printf ("<tr><td><b>La solicitud ") ;
printf ("<td><b>%s</b>",$folio) ;
printf ("<td><b> fue enviada con éxito al depto. de Compras. </b>") ;
?>
<!--<center><table><tr><td><a href="file:///D|/mysql/Cryco/index.php">INICIO</a></tr></td></table></center> -->
</ol>
<center><a href="javascript:window.close()"><font>CERRAR</font></a></center>
</body>
</html>