Foros del Web » Programando para Internet » PHP »

Como hacer una transaccion (si asi se llama)

Estas en el tema de Como hacer una transaccion (si asi se llama) en el foro de PHP en Foros del Web. Bueno, pues tengo una tabla de facturas, en la cual se pueden Anular alguna por algún evento que haya ocurrido, ahora lo que quiero es ...
  #1 (permalink)  
Antiguo 05/04/2013, 07:12
Avatar de andres_15_  
Fecha de Ingreso: septiembre-2008
Ubicación: Cali
Mensajes: 232
Antigüedad: 15 años, 7 meses
Puntos: 7
Como hacer una transaccion (si asi se llama)

Bueno, pues tengo una tabla de facturas, en la cual se pueden Anular alguna por algún evento que haya ocurrido, ahora lo que quiero es que al momento de anularse NO se elimine si no que se pase automáticamente a otra tabla. Les muestro mi tabla de ingresar facturas y anular facturas:

Validar facturas:

Código PHP:
<html>
<meta http-equiv="content-type" content="text/html charset=utf-8"/> 
<head>
    </head>
<body>
<?php

    
require ("../Conexion/conexion.php");

    if (
$_POST){

                    
$contrato=$_POST["contrato"];
                    
$factura=$_POST["nf"];
                    
$valorfactura=$_POST["vf"];
                    
$fecha=$_POST["fecha"];
                


                    

                    
$sql"select valor_contrato from contratos where numero_contrato='$contrato'"//se hace la consulta del valor del contrato para almacenarla despues con un while


                    
$sql2"select saldo from facturas where contrato= '$contrato' "// se hace la consulta del saldo para tambien almacenarla despues



                    




                    
$datos2 mysqli_query($con,$sql); //se conecta y se hace la consulta del contrato



                    
$datos3 mysqli_query($con,$sql2); //se conecta y se hace la consulta del saldo




                    
                    
while ($reg mysqli_fetch_array($datos2)) //traer el valor del contrato para despues comparar

                    
{
                        
$valor$reg["valor_contrato"]; //variable que contiene el valor del contrato 



                    
}

                    while (
$reg2 mysqli_fetch_array($datos3)) //trae el valor del saldo para comparar

                    
{

                        
$saldo$reg2["saldo"]; //variable con el valor del saldo

                        
                        
                    
}


                    


                    
                    

                    if (isset(
$saldo) and $saldo>0)
                    { 

                        
$resto$saldo-$valorfactura//se resta del saldo el valor de la factura
                         //una alerta en js

                        
$inserccion="insert into facturas (numero_factura,fecha_factura,contrato,valor_factura,saldo) 
                        values ('$factura','$fecha','$contrato','$valorfactura','$resto')"
// Se inserta en la tabla facturas


                        
if ($valorfactura>$saldo){
                            echo 
"<script> alert ('Error, el saldo es ".$saldo." y el pago es de ".$valorfactura."');</script>";
                            exit;
                        }

                        
$datos mysqli_query($con,$inserccion); //conexion e inserccion de la consulta

                        
if ($datos==0){
                            echo 
"<script> alert ('Error, ya existe un registro o no se puedo insertar uno nuevo') </script>";
                        }

                        if (
$datos==1){
                            echo 
"<script> alert ('Se ha hecho el pago de ".$valorfactura.", el contrato tiene un saldo de ".$resto."') </script>";
                        }

                            
                    }

                            if (empty(
$saldo) and is_null($saldo))

                            { 

                            
$resto2$valor-$valorfactura//se resta del valor del contrato el valor de la factura



                            
$inserccion2="insert into facturas (numero_factura,fecha_factura,contrato,valor_factura,saldo) 
                            values ('$factura','$fecha','$contrato','$valorfactura','$resto2')"
//se inserta la consulta

                            
echo "<script> alert ('Se ha hecho el pago de ".$valorfactura.", el saldo es ".$resto2.".');</script>";



                                
                            
$datos4 mysqli_query($con,$inserccion2);
                            }    
                    

                    elseif (!
is_null($saldo) and $saldo==0){
                        echo 
"<script> alert('¡El saldo está en 0!');</script>";    
                    }
                }
    
?>
</body>
<html>
Y esta es la de Anular facturas, OJO no pueden quedar eliminadas como por el momento lo estoy haciendo, solo tienen que quitarse de la tabla facturas y pasar a una tabla de facturas anuladas

Código PHP:
<html>
<head>
    <title></title>
</head>
<body>

    <?php

    
require ("../Conexion/conexion.php");


    if (isset(
$_POST["numfac"])){
        
$factura=$_POST["numfac"];
    }

    else{
        
$factura="";
    }

    if (isset(
$_POST["numcontra"])){
        
$contrato=$_POST["numcontra"];
    }

    else{
        
$contrato="";
    }

    if (isset(
$_POST["elim"])){
        
$botn=$_POST["elim"];
    }

    else{
        
$botn="";
    }

    
$sql="delete from facturas where numero_factura='$factura' and contrato='$contrato';";

    
$datos=mysqli_query($con,$sql);

    
$borrados=mysqli_affected_rows($con);

    if (
$borrados==and $botn){
        echo 
"<script> alert ('Error: No se ha borrado la factura, verifique el contrato o el numero de la factura'); </script>";
    }

    elseif(
$borrados==and $datos==1){
        echo 
"<script> alert ('La factura ha sido eliminada'); </script>";
    }

    
    
?>

    <form action="" method="post">

    Numero de la factura <input type="text" name="numfac"/>


    Numero del contrato <input type="text" name="numcontra"/>

    <input type="submit" value="Anular" name="elim"/>


    </form>

    <form action="../principal.php">

        <input type="submit" value="Pagina principal"/>
    </form>

</body>
</html>
  #2 (permalink)  
Antiguo 05/04/2013, 09:53
pr0
 
Fecha de Ingreso: marzo-2004
Mensajes: 687
Antigüedad: 20 años
Puntos: 28
Respuesta: Como hacer una transaccion (si asi se llama)

No entiendo el problema, si es que existe alguno.

1- Haces SELECT de la factura a eliminar y te guardas los datos en un $datos.
2- Haces INSERT de la factura en la nueva tabla.
3- Si el INSERT tiene éxito haces DELETE de la factura en su vieja tabla.

Etiquetas: html, mysql, registro, select, sql, tabla
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 08:27.