Foros del Web » Programando para Internet » PHP »

Cruza de datos insert en mysql

Estas en el tema de Cruza de datos insert en mysql en el foro de PHP en Foros del Web. Buenas tardes a todos, disculpe la molestia antes que nada, y agradecere que me puedan ayudar en lo siguiente: Tengo creado una pequeña aplicación para ...
  #1 (permalink)  
Antiguo 26/02/2008, 13:28
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Cruza de datos insert en mysql

Buenas tardes a todos, disculpe la molestia antes que nada, y agradecere que me puedan ayudar en lo siguiente:
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>
Pongo el codigo para que lo vean, tal vez no sea la mejor manera de programar pero en su momento me sirvio, pero ahora ya es mas usado.

Última edición por GatorV; 26/02/2008 a las 13:38 Razón: Agregar tags de PHP
  #2 (permalink)  
Antiguo 26/02/2008, 13:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cruza de datos insert en mysql

En pocas palabras: Usa Transacciones, es la forma mas sencilla de garantizar la atomicidad de los datos.

Saludos.
  #3 (permalink)  
Antiguo 26/02/2008, 15:15
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Re: Cruza de datos insert en mysql

Muchas gracias por el dato, pero abusando de tú gentileza, me podrías explicar más sobre el asunto, o donde puedo ver ejemplos de esto. Perdón pero no soy experto en la materia, pero le entiendo mas o menos... muchas gracias de todas maneras por tu valiosa respuesta, comenzare por buscar por mi cuenta la comprensión de esto... gracias nuevamente.
  #4 (permalink)  
Antiguo 26/02/2008, 15:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Cruza de datos insert en mysql

El tema de transacciones es muy amplio como para explicarlo en un solo tema, mejor busca un buen libro sobre Bases de Datos, la mayoría dedican todo un capitulo o varios capítulos a explicar sobre transacciones.

Saludos.
  #5 (permalink)  
Antiguo 26/02/2008, 15:36
 
Fecha de Ingreso: mayo-2006
Mensajes: 3
Antigüedad: 18 años
Puntos: 0
Re: Cruza de datos insert en mysql

Tienes razón, mucha gracias por todo, luego te platico como me fue... saludos.
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 00:50.