Ver Mensaje Individual
  #16 (permalink)  
Antiguo 17/04/2012, 11:55
julianrb90
 
Fecha de Ingreso: marzo-2012
Mensajes: 21
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Web service php para obtencion de datos de la base de datos postgresql

Cita:
Iniciado por GatorV Ver Mensaje
Lo raro es esto:
Código:
PHP Notice: Undefined index: idproduc in C:\\Program Files (x86)\\Apache Software Foundation\\Apache2.2\\htdocs\\Prueba\\cliente.php on line 4, referer: http://localhost:9090/Prueba/index.php
Ya que te esta diciendo que no existe el indice idproduc así que seguramente cliente no envía el parámetro cuando pasa ese notice, agrega un chequeo de errores para evitar eso, ej:
Código PHP:
Ver original
  1. if (!isset($_POST['idproduc']) || empty($_POST['idproduc'])) {
  2.         die('Se necesita un parámetro');
  3. }

Saludos.
Al correrlo sin la correcion salen los siguientes errores:

Cita:
PHP Warning: pg_query() [<a href='function.pg-query'>function.pg-query</a>]: Query failed: ERROR: error de sintaxis al final de la entrada\nLINE 1: ...titulo, descripcion, precio from producto where id_producto=\n ^ in C:\\Program Files (x86)\\Apache Software Foundation\\Apache2.2\\htdocs\\Prueba\\ws.php on line 6
PHP Warning: pg_num_rows() expects parameter 1 to be resource, boolean given in C:\\Program Files (x86)\\Apache Software Foundation\\Apache2.2\\htdocs\\Prueba\\ws.php on line 7
PHP Notice: Undefined variable: respuesta in C:\\Program Files (x86)\\Apache Software Foundation\\Apache2.2\\htdocs\\Prueba\\ws.php on line 15
por lo que entiendo que en la funcion obtenerProducto no estra ingresando el parametro por esto:

Cita:
.... titulo, descripcion, precio from producto where id_producto=\n...
ya que ne la consulta no muestra el parametro que uno ingresa.

Haciendo la correccion que me sugeriste no muestra el mensaje de 'falta parametro' lo que me hace pensar que el cliente si esta recibiendo el valor de idproduc y puede confirmar que el error esta cuando uno envia el parametro a la funcion por medio del cliente.

Código PHP:
$metodoALlamar 'obtenerProducto';   
$l_stResult $l_oClient->call(
                
$metodoALlamar,
                array(
'id' => $parametro),
                
"http://localhost:9090/Prueba",
                
"http://localhost:9090/Prueba/ws.php/$metodoALlamar"); 
o en la funcion de ws.php

Código PHP:
function obtenerProducto($id){
    
$con=pg_connect("host=localhost dbname=prueba user=admin password=123" ) or die("Error en la conexion a la base de datos");
    
$sql="select id_producto, titulo, descripcion, precio from producto where id_producto=".$id."";
    
$busqueda=pg_query($con,$sql) ;    
    if(
pg_num_rows($busqueda)!=0){
        while( 
$row pg_fetch_object $busqueda)) {    
            
$respuesta=array('id_producto' => $row->id_producto,
            
'titulo' => $row->titulo,
            
'descripcion' => $row->descripcion,
            
'precio' => $row->precio);
        }
    }
    return new 
soapval('return''tns:producto'$respuesta);

o en el register de ws.php

Código PHP:
$server->register('obtenerProducto',
                  array(
'id_producto' => 'xsd:string'),
                  array(
'return'=>'tns:producto'),
                  
$miURL); 
Gracias