Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Insert y Update al mismo tiempo dentro de php (https://www.clubdelphi.com/foros/showthread.php?t=40542)

analondo 20-02-2007 16:53:34

Insert y Update al mismo tiempo dentro de php
 
Buenas, estoy tratando de realizar un update despues de insertar un componente. El codigo es
Código PHP:

if ($_POST['Origen']=="add")
{        
        
$Venta=$_POST['Venta'];
        
$Fecha=$_POST['DateIni'];
        
$Producto=$_POST["Producto"];        
        
$Factura=$_POST["Factura"];
        
$Manguera=$_POST["Manguera"];
        
$Surtidor=$_POST["Surtidor"];
        
$Islero=$_POST['Islero'];        
        
$PPG=$_POST["PPG"];
        
$Cantidad=$_POST["Cantidad"];
        
$Valor=$_POST["Valor"];
        
$Empresa=$_POST['Empresa']; 
        
$Placa=$_POST['Placa'];
        
$Cantidad=$Cantidad*1000;
        
$sth1 ibase_query("SELECT * FROM MANGUERAS where ID_Manguera=$Manguera");
        while (
$row1 ibase_fetch_row($sth1))
            {
                
$Manguera=$row1[0];
                
$Surtidor=$row1[2];
            }

        if((
$Placa!='')and($Empresa!='Panel'))
        {
            
$sth ibase_query("INSERT INTO VENTAS (ID_VENTA,FECHA,PRODUCTO,CANTIDAD,ID_MANGUERA,ID_SURTIDOR,ID_ISLERO,VALOR,EMPRESA,PLACA, NO_FACTURA,PPG,OBSERVACIONES) 
                            VALUES(GEN_ID(GEN_ID_VENTAS,1),'
$Fecha','$Producto','$Cantidad','$Manguera','$Surtidor','$Islero','$Valor','$Empresa','$Placa','$Factura','$PPG','')");
            
ibase_commit();
            
mensage(12345,'commit-');
                            
        }
        else if    ((
$Placa!='')and($Empresa=='Panel'))
        {
            
$sth ibase_query("INSERT INTO VENTAS (ID_VENTA,FECHA,PRODUCTO,CANTIDAD,ID_MANGUERA,ID_SURTIDOR,ID_ISLERO,VALOR,EMPRESA,PLACA, NO_FACTURA,PPG,OBSERVACIONES) 
                            VALUES(GEN_ID(GEN_ID_VENTAS,1),'
$Fecha','$Producto','$Cantidad','$Manguera','$Surtidor','$Islero','$Valor','Panel','P_$Placa','$Factura','$PPG','')");
            
ibase_commit();
            
mensage(12345,'commit-');
        }
        else
        {
            
$sth ibase_query("INSERT INTO VENTAS (ID_VENTA,FECHA,PRODUCTO,CANTIDAD,ID_MANGUERA,ID_SURTIDOR,ID_ISLERO,VALOR,EMPRESA,PLACA, NO_FACTURA,PPG,OBSERVACIONES) 
                            VALUES(GEN_ID(GEN_ID_VENTAS,1),'
$Fecha','$Producto','$Cantidad','$Manguera','$Surtidor','$Islero','$Valor','Personal','','$Factura','$PPG','')");
            
ibase_commit();
            
mensage(12345,'commit-');
        }
        
        
        
$sth2 ibase_query("select PROGRAMA, UNIDADESXPUNTOS, TIPO_PUNTOS from EMPRESAS where ID_EMPRESA=$Empresa");
        while(
$row2 ibase_fetch_row($sth2))
        {
            echo 
"<h1>HOLA!!!</h1>";
            
//Si es Programa de Fidelizacion
            
if($row2[0]==0)
            {
                if(
$row[2]==1)
                    
$puntos=ceil($Valor/$row[1]);
                else
                    
$puntos=ceil($Cantidad/$row[1]);
                
                
$sth3ibase_query("select EMPRESA,PUNTOS from VEHICULOS where PLACA=$Placa");
                while(
$row3 ibase_fetch_row($sth3))
                {    
                    if(
$row3[0]==$Empresa)
                    {
                        
$puntoVeh=$row3[1];
                        
$puntoVeh=$puntoVeh+$puntos;
                        
$sth4=ibase_query("update VEHICULOS set PUNTOS=$puntoVeh where PLACA=$Placa");
                        
ibase_commit();
                    }
                    
                    else
                        echo 
"alert('La Placa del vehiculo no pertenece al plan señalado')";
                    
                }
            }
        
        
        }
        
        


No se que tengo malo que no me funciona, me esta insertando el campo pero no me esta haciendo el query despues, ni siquiera $sth2 = ibase_query("select PROGRAMA, UNIDADESXPUNTOS, TIPO_PUNTOS from EMPRESAS where ID_EMPRESA=$Empresa");. Cualquier ayuda se los agradeceria enormemente

//Editado por jhonny para colocar etiquetas php

fdelamo 20-02-2007 17:57:33

Cuando dices que no funciona, ¿da algun error? ¿o es que no devuelve y actualiza nada?

(Al estar en este foro supongo que utilizas Interbase/Firebird)
Si es que no actualiza nada, ¿podría ser que la query del insert, la del select y la del update estén en distintas transacciones?, si es así, al hacer el select y el update, para sus respectivas transacciones no existe el registro, y por eso no lo recupera.

No se si será de esto, yo no he usado PHP, y no se como gestiona las transacciones.

Un saludo

jgutti 20-02-2007 19:44:00

analondo, yo utilizo el sgte codigo y da buenos resultados para insertar es:
$sql="INSERT INTO orden(codigo,nombre,obs)
VALUES($codigo,'$nombre','$obs')";
$result = ibase_query($sql);
if (ibase_fetch_row()==1)
{
$texto = "No se pudo grabar el encabezado, por favor intente nuevamente";
print"
<script language=\"JavaScript\" type=\"text/JavaScript\">
alert('$texto');
</script>";
}

Update:
$sql="UPDATE orden SET nombre='$nombre',obs='$obs' WHERE
codigo=$codigo";
$result = ibase_query($sql);
if (ibase_affected_rows()==0)
{ $texto = "No actualizao";
print"
<script language=\"JavaScript\" type=\"text/JavaScript\">
alert('$texto');
</script>";
}

select:

$sql = "SELECT codigo,nombre,obs FROM orden WHERE codigo = $codigo";
$result1 = ibase_query($sql);
while ($myrow = ibase_fetch_row($result1))
{
}

analondo 20-02-2007 20:40:56

Muchas gracias por la ayuda, me sirvio prefecto... (K)


La franja horaria es GMT +2. Ahora son las 17:02:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi