Foros del Web » Programando para Internet » PHP »

Proteger campo MySQL

Estas en el tema de Proteger campo MySQL en el foro de PHP en Foros del Web. Hola, voy a tratar de ser lo mas explicit posible. Tengo un sistema de Ordenes de trabajo que funciona con sesiones, a cada orden de ...
  #1 (permalink)  
Antiguo 12/01/2007, 16:21
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 18 años, 10 meses
Puntos: 0
Proteger campo MySQL

Hola, voy a tratar de ser lo mas explicit posible.

Tengo un sistema de Ordenes de trabajo que funciona con sesiones, a cada orden de trabajo se le pueden ir agregando productos como con un carrito de compras, hasta aqui todo va bien. Cada producto tiene un codigo que se debe de ir incrementando segun en los ultimos 3 digitos algo asi: 31253301001

esstos ultimos digitos los toma de un campo de una base de datos mysql, o sea lo toma de la base le incrementa 1, lo guarda en una session:

Código PHP:
$productos $_SESSION['PRODUCTOS'];

$i=1;

    if(!isset(
$productos))
    {
    
    
$connector->w_sql "SELECT * FROM maestro WHERE codigo = '$id_modelo'";
    
$connector->WMySQLQuery();
    
$resultado $connector-> WMySQLResult();
    
$row mysql_fetch_array($resultado);
    
$codigo_inc $row['folio'] + 1;
    switch (
$codigo_inc) {
                                        
                                        case (
$codigo_inc 10) : 
                                        
$prefijo "0";
                                        break;
                                        
                                        case (
$codigo_inc >&& $folio 100) : 
                                        
$prefijo "";
                                        break;
                                        
                                        
                    
                                        
                                        }

    
$codigo $id_modelo.$prefijo.$codigo_inc;    

    
$productos = array ( array ('id_orden' => $id_orden 'codigo'  => $codigo ,'producto' => $producto'id_modelo' => $id_modelo
                                
'id_cliente' => $id_cliente'id_vendedor' => $id_vendedor'folio' => $row['folio'], 'color' => $color ));
    }
    else
    {
    
                    
$connector->w_sql "SELECT * FROM maestro WHERE codigo = '$id_modelo'";
                    
$connector->WMySQLQuery();
                    
$resultado $connector-> WMySQLResult();
                    
$row mysql_fetch_array($resultado);
                    
    
                    foreach(
$productos  as $ind => $item)  {
                    
                                        if  (
$item['id_modelo'] == $row['codigo'] && $item['color'] == $row['master'])
                                        {
                                         
$i++;
                                         
                                        }        
                    } 
                    
                    
                        
$codigo_inc $row['folio'] + $i;
                        
                        
                        switch (
$codigo_inc) {
                                        
                                        case (
$codigo_inc 10) : 
                                        
$prefijo "0";
                                        break;
                                        
                                        case (
$codigo_inc >&& $folio 100) : 
                                        
$prefijo "";
                                        break;
                                        
                                        }

$codigo $id_modelo.$prefijo.$codigo_inc;    

array_push($productos, array ('id_orden' => $id_orden 'codigo'  => $codigo ,'producto' => $producto'id_modelo' => $id_modelo'id_cliente' => $id_cliente'id_vendedor' => $id_vendedor'folio' => $codigo_inc,'color' => $color));                                
    }
$_SESSION['PRODUCTOS'] = $productos
El codigo funciona , sin embargo no cambia el numero de folio de la base de datos maestro hasta que no se cierra la orden, esto para evitar que se generen codigos en la base de datos si el usuario decide salirse del sistema sin terminar la orden. hasta aqui todo bien, el problema es si dos usuarios entran al mismo tiempo y los dos deciden cerar el mismo modelo de producto al mismo tiempo, el algoritmo toma el mismo numero de concecutivo de la base de datos y esto podria generar un brinco del concecutivo. me explique?

Alguien tiene una idea de como puedo proteger el uso de este cosecutivo si alguien esta capturando una orden?
  #2 (permalink)  
Antiguo 15/01/2007, 10:18
Avatar de fatherjuan  
Fecha de Ingreso: mayo-2005
Ubicación: Estado de México
Mensajes: 132
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Proteger campo MySQL

Hey foreros, que nadie quiere ayudarme?
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 19:01.