Foros del Web » Programando para Internet » PHP »

Problema con Listas de Selecciòn (combos)

Estas en el tema de Problema con Listas de Selecciòn (combos) en el foro de PHP en Foros del Web. Buenos dìas amigos foristas. Tengo un formulario con una serie de lista de selecciòn (combos). Este formulario me lleva a otra pàgina, donde guardo los ...
  #1 (permalink)  
Antiguo 13/10/2009, 07:53
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 7 meses
Puntos: 0
Exclamación Problema con Listas de Selecciòn (combos)

Buenos dìas amigos foristas. Tengo un formulario con una serie de lista de selecciòn (combos). Este formulario me lleva a otra pàgina, donde guardo los datos de los combos en un arreglo, los envìo a un servicio (de la clase nusoap), donde se realiza la consulta sql y me devuelve los resultados y los publico en esa misma pag. El problema es el siguiente, el combo funciona a la perfecciòn, siempre y cuando el usuario escoja una opciòn de cada lista. El asunto es que no es necesario que eso pase, el usuario puede escoger una, dos, tres etc o todos las listas. Lògicamente, cuando el usuario escoge sòlo una opciòn, el arreglo se envìa vacìo en el resto de los campos y por supuesto, cuando realizo la consulta "$sql="SELECT * FROM paymul WHERE bancos='".$datos['bancos']."' AND filial='".$datos['filial']."' AND eventos='".$datos['eventos']."' AND tipos='".$datos['tipos']."'";" No me trae ningùn resultado.

Què puedo hacer en este caso?, què deberìa modificar en la consulta para que me funcione con 1, con 2, con 3 o con todos y no sòlo con todos?, o quizà debo cambiar alguna cosa en el formulario entonces? Espero de verdad que puedan ayudarme, ya a mi no se me ocurre màs nada. De antemano, muchas gracias por su ayuda! Saludos.
  #2 (permalink)  
Antiguo 13/10/2009, 08:06
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Problema con Listas de Selecciòn (combos)

bueno hay q hacer algunas comprobaciones y completar la consulta, deberias de hacer algo asi

Código php:
Ver original
  1. $campoSql=array();
  2.  
  3. if(!empty($datos['bancos'])){$campoSql[]=" bancos='".$datos['bancos']."'";}
  4. if(!empty($datos['filial'])){$campoSql[]=" filial='".$datos['filial']."'";}
  5. if(!empty($datos['eventos'])){$campoSql[]=" eventos='".$datos['eventos']."'";}
  6. if(!empty($datos['tipos'])){$campoSql[]="tipos ='".$datos['tipos']."'";}
  7.  
  8. $sql="SELECT * FROM paymul ";
  9.  
  10. if (count($campoSql)>0){
  11. $sql.=' where '.implode(' and ',$campoSql);
  12.  
  13. }
  14.  
  15. $resultado=mysql_query($sql);

espero te sirva
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 14/10/2009, 08:10
 
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
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 19:24.