Foros del Web » Programando para Internet » PHP »

Ayuda con consulta SQL con Servicios

Estas en el tema de Ayuda con consulta SQL con Servicios en el foro de PHP en Foros del Web. Buenos dìas amigos foristas! Le escribo para ver si pueden ayudarme con el siguiente problema. Estoy realizando un sistema basado en servicios, con la clase ...
  #1 (permalink)  
Antiguo 27/01/2010, 07:08
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Ayuda con consulta SQL con Servicios

Buenos dìas amigos foristas! Le escribo para ver si pueden ayudarme con el siguiente problema. Estoy realizando un sistema basado en servicios, con la clase nusoap y necesito hacer lo siguiente: Tengo una serie de datos en el formulario que insertarè en la base de datos, a travès de mi servicio. Eso puedo hacerlo. El asunto es que antes de ingresar los datos, debo generar un nùmero de identificaciòn e insertarlo junto con el resto de los datos. Este nùmero viene dado por el anterior nùmero de identificaciòn màs uno. (Num +1) Estaba pensando hacer un servico con 2 consultas sql. Una parte de mi funciòn serìa algo como esto:



function VerificarPago($datos)
{
/*conectar a la base de datos*/
$conn = pg_connect("host='".HOST."' dbname='".BASE_DATOS."' user='".USUARIO."' password='".CLAVE_USUARIO."'")
or die ("Error de Conexion con la Base de Datos.");
/*ejecutar query*/
$stat=1;
Código PHP:
Ver original
  1. $sql1="SELECT MAX id FROM paymul1";
  2.         $query1=pg_query($conn,$sql1);
  3.      $sql="UPDATE paymul1 SET estatus='".$stat."', verificador='".$datos['indicador']."' ,fecha_ver='".$datos['fecha']."' WHERE num_pay='".$datos['num_pay']."';";
  4.         $query=pg_query($conn,$sql);
  5.         $dato=array();

Lo que no sè hacer es realizar la primera consulta (donde obtengo el MAX id) tomar el resultado que esa consulta me devuelve y sumarle 1 para luego hacerle el update. Algo asì:

$sql1="SELECT MAX id FROM paymul1"; (Tambièn pensè en: "sql1="SELECT MAX id AS num_pay1 FROM paymul1")

Asignarle ese ""MAX id" que obtengo a una variable y sumarle uno, para luego hacer el update:

num_pay1= max id+1;

$sql="UPDATE paymul1 SET estatus='".$stat."', verificador='".$datos['indicador']."' ,fecha_ver='".$datos['fecha']."', num_pay1='".$num_pay1."' WHERE num_pay='".$datos['num_pay']."';";


Algo asì pes. Quizà es algo sencillo, pero yo soy nuevo ene sto y no tengo muchos conocimientos, he estado buscando, pero no he dado con la forma correcta de hacerlo.

Espero haberme explicado bien y que puedan ayudarme.
De antemano, muchas gracias
  #2 (permalink)  
Antiguo 27/01/2010, 07:53
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Ayuda con consulta SQL con Servicios

Ok, ¿pero porque no otorgas un valor incrementable en la base de datos? El problema de este tipo de código es que si dos personas casi simultaneamente ejecutan el código, lo más probable es que se añadan dos números iguales. Por eso te pregunto si es posible otorgarle al campo que sea auto_incrementable.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 27/01/2010, 08:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Ayuda con consulta SQL con Servicios

Muchas gracias por tu respuesta amigo. Pero no puedo hacerlo de esa forma, te explico el por què. Como veràs, estoy haciendo un update ya que antes de que el usuario haga uso del formulario, tengo una serie de datos ingresados en ese mismo registro. Se trata de unas òrdenes de pago. Puedo recibir 4 òrdenes de pago que ingresan automàticamente en la base de datos, luego el usuario debe verificar los pagos y puede que encuentre algùn error en uno de los pagos y lo elimine. Si lo hago autoincrement y recibo 4 pagos, recibiràn los siguientes nùmeros: 1-2-3-4. Pero si el usuario decide eliminar el pago 3, entonces el resto me quedarìa asì: 1-2-4
y no pueden haber saltos entre los nùmeros de òrdenes de pago :-p. Por eso necesito hacerlo de otra forma.
  #4 (permalink)  
Antiguo 27/01/2010, 09:02
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Ayuda con consulta SQL con Servicios

Entonces ¿por qué no ingresas la información en un array y recorres el para que ingrese el siguiente valor mayor?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 27/01/2010, 11:14
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Ayuda con consulta SQL con Servicios

UHmm! Amigo, disculpa, pero de verdad esa ùltima parte no te entendì mucho. O sea, normalmente me traigo lso datos en un array desde el formulario y los ingreso a la BD. Pero como les comentè, en ese array deberìa venir el nùmero de una vez o generarlo en el momento en que el array llegue al servicio. Pero ahì es dònde me estanco :(
  #6 (permalink)  
Antiguo 27/01/2010, 11:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Ayuda con consulta SQL con Servicios

Podrias dar un ejemplo de como haces en la base de datos, es que sigo perdido en la forma como ingresas la información a la base de datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 27/01/2010, 11:53
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Ayuda con consulta SQL con Servicios

Código SQL:
Ver original
  1. FUNCTION VerificarPago($datos)
  2.     {
  3.         /*conectar a la base de datos*/
  4.         $conn = pg_connect("host='".HOST."' dbname='".BASE_DATOS."'  user='".USUARIO."' password='".CLAVE_USUARIO."'")
  5.         OR die ("Error de Conexion con la Base de Datos.");
  6.         /*ejecutar query*/
  7.         $stat=1;
  8.         $sql="UPDATE paymul1 SET estatus='".$stat."', verificador='".$datos['indicador']."' ,fecha_ver='".$datos['fecha']."' WHERE num_pay='".$datos['num_pay']."';";
  9.          $inserto=pg_query($conn,$sql);
  10.             IF(!$inserto)
  11.             {
  12.                 pg_close($conn);  
  13.                 RETURN FALSE;
  14.             }
  15.         pg_close($conn);
  16.         RETURN TRUE;
  17.         }
  18.     }


A travès de esa funciòn (la cual està en mi servicio en el servidor de aplicaciones), ingreso los datos que me da el usuario desde el formulario. Funciona perfecto.
Los datos que estàn contenidos inicialmente en la tabla, ingresan a travès de una funciòn pl pgsql, esto es transparente al usuario.
  #8 (permalink)  
Antiguo 27/01/2010, 11:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Ayuda con consulta SQL con Servicios

Podrias dar un var_dump a todos los valores, me refiero a $stat y $datos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: servicios, sql
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 22:32.