Respuesta: Stored procedure desde php Mira perdona pero esque estoy echo un lio porque esto es totalmente nuevo para mi mira voy a ponerte lo que tengo a ver si puedo verlo mas claro.
Esto de a continuación es el STORED PROCEDURE que tengo en la base de datos SQL SERVER.
Código:
CREATE PROCEDURE PAdd_Clientes
@msg varchar(100) output,
@Codigo int,
@Nombre varchar (100),
@Nombre_Comercial varchar (100),
@Direccion varchar (100),
@Poblacion varchar (100),
@Codigo_postal varchar (25),
@Provincia varchar (100),
@Pais varchar (100) ,
@Nif varchar (25) ,
@Telefono varchar (25),
@Fax varchar (25) ,
@Subcuenta varchar (25),
@Email varchar (100),
@Web varchar (100),
@FPago int,
@Dia_Fijo1 int,
@Dia_Fijo2 int,
@Dia_Fijo3 int,
@Tarifa int,
@Dto_Especial numeric(18,2),
@Dto_PP numeric(18,2),
@Dto_Articulos numeric(18,2),
@Riesgo_Maximo numeric(18,2),
@Copias_Fac int,
@Fecha_Ini_vac datetime,
@Fecha_Fin_vac datetime,
@Cod_Grupo_Clientes int,
@CodTransportista int,
@Comercial int,
@Comision numeric(18,2),
@Notas text,
@Bloqueado bit,
@Excento_IVA bit,
@Recargo bit,
@Subcuenta_Retencion varchar (25),
@Cuenta_Remesas int,
@Alerta varchar(500),
@Aviso_Albaranes_Pendientes bit,
@Tipo_IVA int,
@Serie varchar(10),
@Notas_Presupuestos varchar (100),
@Notas_Pedidos varchar (100),
@Notas_Albaranes varchar (100),
@Notas_Facturas varchar (100),
@Notas_Abonos varchar (100),
@Periodicidad int,
@Dto_Mano_obra numeric(18,2),
@Usuario varchar(10)=null,
@Llamada char(3) /** Llamada desde VB o otro sp: @llamada="VB" --> VB / @llamada='SQL' --> TSQL**/,
@Dias_Ampliacion int= null,
@Cod_Provincia int=null,
@Cod_Pais int=null,
@Clave_NIF_Pais_Residencia int=null
Código PHP: $conecta = mssql_connect ("192.168.1.34", "sa", ""); mssql_select_db("base_de_datos"); $db= "base_de_datos"; $sp= mssql_init("PAdd_CLientes"); /*Aqui es donde pongo las variables para poder probarlo*/ mssql_bind($sp, "@msg", $nombre, SQLCHAR, false, false, 30); mssql_bind($sp, "@Codigo", $Codigo, SQLCHAR); mssql_bind($sp, "@Nombre", $Nombre, SQLVARCHAR); mssql_bind($sp, "@Nombre_Comercial", $Nombre_Comercial, SQLVARCHAR); mssql_bind($sp, "@Direccion", $Direccion, SQLVARCHAR); mssql_bind($sp, "@Poblacion", $Poblacion, SQLVARCHAR); mssql_bind($sp, "@Codigo_postal", $Codigo_postal, SQLVARCHAR); mssql_bind($sp, "@Provincia", $Provincia, SQLVARCHAR); mssql_bind($sp, "@Pais", $Pais, SQLVARCHAR); mssql_bind($sp, "@Nif", $Nif, SQLVARCHAR); mssql_bind($sp, "@Telefono", $Telefono, SQLVARCHAR); mssql_bind($sp, "@Fax", $nombre, SQLVARCHAR); mssql_bind($sp, "@Subcuenta", $nombre, SQLVARCHAR); mssql_bind($sp, "@Email", $Email, SQLVARCHAR); mssql_bind($sp, "@Web", $nombre, SQLVARCHAR); mssql_bind($sp, "@FPago", $nombre, SQLINT1); mssql_bind($sp, "@Dia_Fijo1", $nombre, SQLINT1); mssql_bind($sp, "@Dia_Fijo2", $nombre, SQLINT1); mssql_bind($sp, "@Dia_Fijo3", $nombre, SQLINT1); mssql_bind($sp, "@Tarifa", $nombre, SQLINT1); mssql_bind($sp, "@Dto_Especial", $nombre, SQLVARCHAR); mssql_bind($sp, "@Dto_PP", $nombre, SQLVARCHAR); mssql_bind($sp, "@Dto_Articulos", $nombre, SQLVARCHAR); mssql_bind($sp, "@Riesgo_Maximo", $nombre, SQLVARCHAR); mssql_bind($sp, "@Copias_Fac", $nombre, SQLVARCHAR); mssql_bind($sp, "@Fecha_Ini_vac", $nombre, SQLFLT8); mssql_bind($sp, "@Fecha_Fin_vac", $nombre, SQLFLT8); mssql_bind($sp, "@Cod_Grupo_Clientes", $nombre, SQLVARCHAR); mssql_bind($sp, "@CodTransportista", $nombre, SQLVARCHAR); mssql_bind($sp, "@Comercial", $nombre, SQLVARCHAR); mssql_bind($sp, "@Comision", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas", $nombre, SQLVARCHAR); mssql_bind($sp, "@Bloqueado", $nombre, SQLVARCHAR); mssql_bind($sp, "@Excento_IVA", $nombre, SQLVARCHAR); mssql_bind($sp, "@Recargo", $nombre, SQLVARCHAR); mssql_bind($sp, "@Subcuenta_Retencion", $nombre, SQLVARCHAR); mssql_bind($sp, "@Cuenta_Remesas", $nombre, SQLVARCHAR); mssql_bind($sp, "@Alerta", $nombre, SQLVARCHAR); mssql_bind($sp, "@Aviso_Albaranes_Pendientes", $nombre, SQLVARCHAR); mssql_bind($sp, "@Tipo_IVA", $nombre, SQLVARCHAR); mssql_bind($sp, "@Serie", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas_Presupuestos", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas_Pedidos", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas_Albaranes", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas_Facturas", $nombre, SQLVARCHAR); mssql_bind($sp, "@Notas_Abonos", $nombre, SQLVARCHAR); mssql_bind($sp, "@Periodicidad", $nombre, SQLVARCHAR); mssql_bind($sp, "@Dto_Mano_obra", $nombre, SQLVARCHAR); mssql_bind($sp, "@Usuario", $nombre, SQLVARCHAR); mssql_bind($sp, "@Llamada", $nombre, SQLVARCHAR); mssql_bind($sp, "@Dias_Ampliacion", $nombre, SQLVARCHAR); mssql_bind($sp, "@Cod_Provincia", $nombre, SQLVARCHAR); mssql_bind($sp, "@Cod_Pais", $nombre, SQLVARCHAR); mssql_bind($sp, "@Clave_NIF_Pais_Residencia", $nombre, SQLVARCHAR); $data = mssql_fetch_row(mssql_execute($sp));
$BD = odbc_connect('base_de_datos', 'sa', ''); $count = "Select top 1 * from Clientes order by Codigo desc"; $result=odbc_exec($BD,$count)or die(exit("Error en odbc_exec")); print odbc_result_all($result,"border=1");
if ($valor = odbc_fetch_array($result)){ do{ $ULTIMO=$valor['Codigo']; $ULTIMO=$ULTIMO+1; echo $ULTIMO; } while ($valor = odbc_fetch_array($result)); } else echo (""); $sql = "INSERT INTO Clientes(Codigo, Nombre , Nombre_Comercial, Telefono, Email, Direccion, NIF, Poblacion, Provincia, Pais)". "VALUES ('$ULTIMO', '$Nombre', '$Nombre_Comercial', '$Telefono', '$Email', '$Direccion', '$Nif', '$Poblacion', '$Provincia', '$Pais')"; $result=odbc_exec($BD,$sql)or die(exit("Error en odbc_exec")); if($result){ echo ("<p><img src='cliente_ok.png' width='64' height='64'>El Cliente se a modificado con éxito!!</p>"); }else{ echo ("<img src='cliente_nok.png' width='64' height='64'>Error modificando datos: </p>"); }
Entonces no se si esto asi puede funcionar porque me inserta y puedo insertar cosas duplicadas cosa que en el procedimiento no me deja como por ejemplo en NIF.
Gracias!! |