Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/10/2009, 08:10
khalim13
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 7 meses
Puntos: 0
Muchas gracias Emilio, màs o menos entendì tu lògica. Pero estuve intentando agregarla a mi còdigo de varias formas y no me da =( Debo estar cometiendo algùn error, pero no soy capaz de identificarlo. Soy bastante nuevo programando y bueno, este es mi primer sistema real.

Les dejo el còdigo de mi servicio a ver si pueden ayudarme.

require_once('../lib/rutas.php');
$server = new soap_server();
$server->configureWSDL('ListarPagoFilWsdl','urn:ListarPago FilWsdl');
$server->wsdl->schemaTargetNamespace = 'urn:ListarPagoFilWsdl';

/*
* Agregar tipos de datos complejos
*
**/
$server->wsdl->addComplexType(
'usuario',
'complexType',
'struct',
'all',
'',
array(
'indicador' => array('name' => 'indicador', 'type' => 'xsd:string'),
'nombres' => array('name' => 'nombres', 'type' => 'xsd:string'),
'co_perfil'=>array('name'=>'co_perfil','type'=>'xs d:string'),
'estado'=>array('name'=>'estado','type'=>'xsd:stri ng'),
'empleado'=>array('name'=>'empleado','type'=>'xsd: string'),
)
);


$server->wsdl->addComplexType(
'dato',
'complexType',
'array',
'',
'SOAP-ENC:Array',
array(),
array(
array('ref' => 'SOAP-ENC:arrayType', 'wsdl:arrayType' => 'tns:usuario[]')
),
'tns:usuario'
);

/*
* Registrar métodos dentro del servicio web
**/

$server->register('ListarPagoFil',
array('datos' => 'xsd:string'), // parametro de entrada
array('return' => 'tns:dato'), // parametro de salida
'urn:ListarPagoFilWsdl', // namespace
'urn:ListarPagoFilWsdl#ListarPagoFil', // soapaction
'rpc', // estilo
'encoded', // uso
'Retorna los usuarios registrados en el sistema' // documentation
);

/*
* funcion ListarPagos: Devuelve Pagos aprobados

* @return Resource datos Conjunto de datos de los pagos
**/
function ListarPagoFil($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*/

$sql="SELECT * FROM paymul WHERE bancos='".$datos['bancos']."' AND filial='".$datos['filial']."' AND eventos='".$datos['eventos']."' AND tipos='".$datos['tipos']."'";
$query=pg_query($conn,$sql);
$dato=array();

while($fila=pg_fetch_array($query))
{
$usuario=array('indicador' => $fila['filial'],
'nombres' => $fila['bancos'],
'co_perfil' =>$fila['eventos'],
'estado'=>$fila['tipos'],
'empleado' =>$fila['empleado']);
array_push($dato,$usuario);
}
return $dato;
}


$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

exit();

?>

$campoSql=array();

if(!empty($datos['bancos'])){$campoSql[]=" bancos='".$datos['bancos']."'";}
if(!empty($datos['filial'])){$campoSql[]=" filial='".$datos['filial']."'";}
if(!empty($datos['eventos'])){$campoSql[]=" eventos='".$datos['eventos']."'";}
if(!empty($datos['tipos'])){$campoSql[]="tipos ='".$datos['tipos']."'";}

$sql="SELECT * FROM paymul ";

if (count($campoSql)>0){
$sql.=' where '.implode(' and ',$campoSql);

}

$resultado=mysql_query($sql);


Una preguntita, por casualidad en este còdigo, no falta la comparaciòn de camposql con el campo de mi tabla? Es decir, en esta parte:

$sql="SELECT * FROM paymul ";

if (count($campoSql)>0){
$sql.=' where '.implode(' and ',$campoSql);

}

A mi entender, esa consulta estarìa quedando como algo asì: Select * From Paymul Where And Camposql. O sea, no estoy viendo la comparaciòn como tal del campo del arreglo con el campo de la tabla, es decir, Select * from paymul WHERE bancos='".$datos['bancos']."'. Algo asì, no sè si me explico. probablemente estè equivocado, pero como les dije, soy nuevo en esto.

Espero que de verdad puedan ayudarme, se los agradecerè mucho!

SAludos!

Ya vì la parte donde se està haciendo la comparaciòn. Pero aùn sigo sin hacer que el còdigo me funcione,

$sql.=' where '.implode(' and ',$campoSql);
Serà que falta algo allì?

Última edición por GatorV; 14/10/2009 a las 09:06