Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: javaquery en 20 de Abril 2017, 10:25
-
Buenas .
estoy haciendo un ejercicio , en el cual tengo una base de datos en MYSQL con una tabla:
CONTACTO
identificador int, llave primaria (auto incrementable)
nombre varchar(50),
dirección varchar(100),
teléfono varchar(9),
email varchar(100)
Me pide crear un servicio web con PHP y SOAP que haga.
Crear contactos. se piden los datos del contacto y se guardan en la base de datos.
Buscar contacto: el usuario podrá buscar contactos por el campo nombre escribiéndolo en una caja de texto de un formulario.
Visualizar todos los contactos: se mostrarán todos los datos de todos los contactos en una tabla
Las funciones que insertan y muestran datos de la base de datos se deben programar en el servidor SOAP. El cliente deberá mostrar la interfaz de la aplicación y llamará a las funciones del servidor cuando se requiera.
He creado el archivo servicio.php en el que tengo la funcion creaContacto
<?php
function creaContacto($nombre, $direccion, $telefono, $email){
return "";
}
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
//parametros para registrar la funcion//
$server->register(
'creaContacto',
array('nombre' => 'xsd:string', 'direccion' => 'xsd:string', 'telefono' => 'xsd:string', 'email' => 'xsd:string'),
array('return'=>'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'Metodo holaMundo por excelencia'
);
//servidor
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
?>
y otro archivo llamado cliente.php desde el que llama a la funcion
<?php
require_once("lib/nusoap.php");
$client = new soapclient('http://localhost/clase11/servidor.php?wsdl');
//llamo a la funcion//
$result = $client->holaMundo();
echo "$result<br/>";
?>
La base de datos la tengo creada y la tabla tambien.
-
Solicito ayuda para este ejercicio, tengo que entregarlo para antes del Martes. Si alguien puede ayduarme, estaria muy agradecido
un saludo
-
Buenas, te dejo una posible solución.
En el archivo servidor.php e incluido las funciones para crear nuevo contacto, buscar contacto y mostrar todos los contactos:
<?php
require_once('nusoap-0.9.5/lib/nusoap.php');
$miURL = 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$server = new soap_server();
$server->configureWSDL('WSDLTST', $miURL);
$server->wsdl->schemaTargetNamespace=$miURL;
$server->register('creaContacto',
array('nombre' => 'xsd:string', 'direccion' => 'xsd:string',
'telefono' => 'xsd:string', 'email' => 'xsd:string'),
array('return' => 'xsd:string'),
$miURL);
$server->register('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$miURL);
$server->register('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$miURL);
function buscarContacto($nombre) {
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "SELECT * FROM contacto where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function mostrarTodosContactos() {
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "SELECT * FROM contacto";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function creaContacto($nombre, $direccion, $telefono, $email){
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return', 'xsd:string', $msg);
}
if ( !isset( $HTTP_RAW_POST_DATA ) ) {
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}
$server->service($HTTP_RAW_POST_DATA);
?>
En los siguientes códigos, en cada uno de ellos se llama a uno de las tres funciones que contiene servidor.php.
<?php
require_once('nusoap-0.9.5/lib/nusoap.php');
$serverURL = 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript = 'servidor.php';
$metodoALlamar = 'creaContacto';
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl", 'wsdl');
$result = $cliente->call(
"$metodoALlamar",
array('nombre' => 'Rubia',
'direccion' => 'Colombia',
'telefono' => '456789123',
'email' => 'trapo@paco.com'),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
echo 'Respuesta: '.$result;
?>
<?php
require_once('nusoap-0.9.5/lib/nusoap.php');
$serverURL = 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript = 'servidor.php';
$metodoALlamar = 'buscarContacto';
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl", 'wsdl');
$result = $cliente->call(
"$metodoALlamar",
array('nombre' => 'Juan'),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
echo $result;
?>
<?php
require_once('nusoap-0.9.5/lib/nusoap.php');
$serverURL = 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript = 'servidor.php';
$metodoALlamar = 'mostrarTodosContactos';
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl", 'wsdl');
$result = $cliente->call(
"$metodoALlamar",
array(),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
echo $result;
?>
Ahora ya solo faltaría que lo acomodases con el formulario que usará el cliente.
Saludos. ;D
-
Hola tengo unas dudas
cuando dices,
En los siguientes códigos, en cada uno de ellos se llama a uno de las tres funciones que contiene servidor.php.
yo esos archivos entiendo que son los que se ponen en el cliente para llamar a las funciones, los he puesto juntos en un archivo cliente.php
Otra cosa, se puede poner en el archivo servidor.php primero las funciones y luego los $server->register, es que asi lo explico el profesor por eso lo pregunto
El formulario lo tendria que hacer en el cliente.php , pero un formulario para todo que contenga crearcontacto, buscar y mostrar?
gracias
-
Buenas.
Sí, esos tres códigos son de parte del cliente, lo hice separado en tres partes para que se viese mejor.
Las funciones las puedes poner en el lugar que quieras, no habrá ningún problema al ejecutar el código.
Tendrías que hacer 3 formularios, yo los haría en un archivo independiente y dependiendo de que datos se envien a clientes.php ejecutar un código u otro,en clientes.php tambíen se podrían crear tres funciones, eso ya depende de que te pueda ser más práctico a tí.
Te dejo el código de los formularios y como quedaría el archivo clientes.php.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Servicios web</title>
</head>
<body>
<form action="cliente.php" method="post" >
Nombre: <input type="text" name="nombre" /><br/>
Direccion: <input type="text" name="direccion" /><br/>
Teléfono: <input type="text" name="telefono" /><br/>
Email: <input type="text" name="email" /><br/>
<input type="text" name="funcion" value="creaContacto" hidden />
<input type="submit" value="Crear nuevo usuario" />
</form>
<hr/>
<form action="cliente.php" method="post" >
Nombre<input type="text" name="nombre" />
<input type="text" name="funcion" value="buscarContacto" hidden />
<input type="submit" value="Buscar Contacto" />
</form>
<hr/>
<form action="cliente.php" method="post" >
<input type="text" name="funcion" value="mostrarTodosContactos" hidden />
<input type="submit" value="Mostrar todos los contactos" />
</form>
</body>
</html>
<?php
require_once('nusoap-0.9.5/lib/nusoap.php');
$serverURL = 'http://localhost/ejemplos/Nuevacarpeta/nusoap0000';
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$cliente = new nusoap_client("$serverURL/$serverScript?wsdl", 'wsdl');
if(strcmp($metdodALlamar, 'creaContacto')) {
$result = $cliente->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
} else if($metdodALlamar == 'buscarContacto') {
$result = $cliente->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
} else if(strcmp($metdodALlamar, 'mostrarTodosContactos')) {
$result = $cliente->call(
"$metodoALlamar",
array(),
"uri:$serverURL/$serverScript",
"uri:$serverURL/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
Saludos. ;D
-
Me da algunos notice y un error al final
Notice: Undefined index: funcion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 35
Notice: Undefined index: nombre in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 41
Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 42
Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 43
Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 44
en esta lineas de codigo estarian los notice
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
y el warning que da es el siguiente
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl' : Extra content at the end of the document in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:80 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(80): SoapClient->SoapClient('http://localhos...') #1 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 80
-
Hola Javi.
Me da la sensación de que colocaste los dos últimos códigos en un mismo archivo, lo digo por los números de línea que me comentas, el html yo lo coloque en un archivo llamado formularios.php y el código php en clientes.php
es eso??
-
Si lo puse todo en el mismo, voy a cambiarlo y te cuento, gracias
-
Te paso como tengo los codigos
formularios.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Servicios web</title>
</head>
<body>
<form action="cliente.php" method="post" >
Nombre: <input type="text" name="nombre" /><br/>
Direccion: <input type="text" name="direccion" /><br/>
Teléfono: <input type="text" name="telefono" /><br/>
Email: <input type="text" name="email" /><br/>
<input type="text" name="funcion" value="creaContacto" hidden />
<input type="submit" value="Crear nuevo usuario" />
</form>
<hr/>
<form action="cliente.php" method="post" >
Nombre<input type="text" name="nombre" />
<input type="text" name="funcion" value="buscarContacto" hidden />
<input type="submit" value="Buscar Contacto" />
</form>
<hr/>
<form action="cliente.php" method="post" >
<input type="text" name="funcion" value="mostrarTodosContactos" hidden />
<input type="submit" value="Mostrar todos los contactos" />
</form>
</body>
</html>
cliente.php
<?php
require_once("/lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if($metodoALlamar == 'buscarContacto') {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metodoALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$serverScript = 'servidor.php';
$metodoALlamar = 'creaContacto';
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
$result = $client->call(
"$metodoALlamar",
array('nombre' => 'Pepe',
'direccion' => 'Colombia',
'telefono' => '456789123',
'email' => 'trapo@paco.com'),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
echo 'Respuesta: '.$result;
?>
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$serverScript = 'servidor.php';
$metodoALlamar = 'buscarContacto';
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
$result = $client->call(
"$metodoALlamar",
array('nombre' => 'Juan'),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
echo $result;
?>
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$serverScript = 'servidor.php';
$metodoALlamar = 'mostrarTodosContactos';
$client = new soapclient('http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php?wsdl');
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
echo $result;
?>
servidor.php
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
function creaContacto($nombre, $direccion, $telefono, $email){
$conn = mysqli_connect($host, $user, $pass, $db_name)or die("Error de conexión con la base de datos");
$sql = "INSERT INTO CONTACTO (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new $msg;
}
function buscarContacto($nombre) {
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM CONTACTO where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return $listado;
}
function mostrarTodosContactos() {
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM CONTACTO";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return $listado;
}
$server->register
('creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);
$server->register
('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->register
('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
?>
Cuando cargo el archivo formulario.php me muestra el formulario, pero cuando creo un usuario me da un fatal error con el siguiente comentario:
Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:61 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->__call('call', Array) #1 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->call('creaContacto', Array, 'uri:http://loca...', 'uri:http://loca...') #2 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 61
-
¿Has dado los datos de la conexión a la base de datos correctos?
$host, $user, $pass, $db_name
??
-
si, en un archivo llamado datos.php
<?php
$host = 'localhost';
$user = 'root';
$pass = '';
$db_name = 'agenda';
?>
-
Pero necesitas incluirlo en archivo servidor.php mediante...
require_once("datos.php");
-
Lo acabo de hacer , y ahora cuando relleno el formulario me da un fatal error, creo que el mismo que antes
Fatal error: Uncaught SoapFault exception: [Client] Function ("call") is not a valid method for this service in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php:61 Stack trace: #0 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->__call('call', Array) #1 C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php(61): SoapClient->call('creaContacto', Array, 'uri:http://loca...', 'uri:http://loca...') #2 {main} thrown in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 61
-
el archivo cliente.php no puede tener 61 líneas, tiene bastantes menos
mira a ver si es igual que el que modifique en tu mensaje anterior donde también dentro de clientes estaban los códigos que puse esta mañAna por separado.
-
tenia puesto el de ayer y el de hoy
ahora se me queda asi
<?php
require_once("/lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if($metodoALlamar == 'buscarContacto') {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metodoALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
-
Ahora no me da error al darlo de alta el usuario, pero en la busqueda no me funciona
me da notice.
Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13
Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 14
Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 15
-
En:
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
Tienes que quitar el nombre del archivo, solo dejando hasta donde se encuentra el archivo servidor.php.
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
Para que en esta línea se escriba bien la ruta...
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
o cambias esa última línea por esta otra:
$client = new nusoap_client("$namespace?wsdl", 'wsdl');
;D
-
Voy a perder la cabeza con este ejercicio, me sigue dando error
<?php
require_once("/lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace?wsdl", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if($metodoALlamar == 'buscarContacto') {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metodoALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
-
Perdón, es que no me expliqué bien en el anterior mensaje, cuando decía "o cambias esa última línea por esta otra:" era solo para cambiar esa parte solo.
<?php
require_once("/lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client(""$namespace/$serverScript?wsdl"", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if($metodoALlamar == 'buscarContacto') {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metodoALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
Como lo dejé ahora debería funcionar.
A mí si me funciona.
;D
-
me error en esta linea
$client = new nusoap_client(""$namespace/$serverScript?wsdl"", 'wsdl');
¿sera esas dobles comillas?
-
este error
Parse error: syntax error, unexpected '$namespace' (T_VARIABLE) in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 7
-
Pueden ser las dobles comillas que no se que haría para ponerlas.
-
me dao cuenta que no me inserta usuarios en la base de datos, lo he comprobado con el phpmyadmin, pero lo raro es que cuando relleno los datos de alta de usuario lo hace y no me muestra ningun error
-
¿no te muestra ningún error ni ningún mensaje después de pulsar el botón de crear contacto?
Pega el código de servidor.php por si hubiese algún error allí.
;D
-
exacto
te pego el codigo de servidor.php
<?php
require_once("datos.php");
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
function creaContacto($nombre, $direccion, $telefono, $email){
$conn = mysqli_connect($host, $user, $pass, $db_name)or die("Error de conexión con la base de datos");
$sql = "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return', 'xsd:string', $msg);
}
function buscarContacto($nombre) {
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function mostrarTodosContactos() {
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>ID</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return $listado;
}
$server->register
('creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);
$server->register
('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->register
('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
?>
-
Esta línea:
require_once("datos.php");
tienes que colocarla dentro de cada función, porque al colocarla fuera, desde las funciones no reconoce los valores de las variables que contiene.
;D
-
Ahora ya si me aparece el mensaje de usuario insertado en la bd, pero en phpmyadmin no aparecen los datos, y otra cosa cuando hago una busquedad me muestra estos errores.
Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 12
Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13
Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 14
ID Nombre Direcci�n Tel�fono email
-
¿Los nombres de los campos de la tabla que yo he puesto son iguales que los que tu has creado?
Cuando haces una búsqueda, las líneas que comentan los notice no se ejecutan así que no entiendo porque esta sucediendo eso.
;D
-
si, mira
create database agenda;
use agenda;
create table contacto (
identificador int auto_increment primary key,
nombre varchar(50),
direccion varchar(100),
telefono varchar(9),
email varchar(100));
-
De momento en el archivo servidor.php, dentro de la función buscarContacto() en esta línea cambia id por identificador, que yo creé la tabla llamando al identificador como id.
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
por
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
y en la función mostrarTodosContactos() también hay que cambiar esa línea.
;D
-
ya lo he cambiado, ahora cuando inserto usuarios no muestra nada :(
-
Ponme otra vez los códigos de cliente.php y servidor.php
A ver que es lo que se me está escapando, porque a mí me funciona bien, la única diferencia es que uso wampserver.
>:(
-
cliente.php
<?php
require_once("/lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
if(strcmp($metodoALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if($metodoALlamar == 'buscarContacto') {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metodoALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
servidor.php
<?php
require_once("datos.php");
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
function creaContacto($nombre, $direccion, $telefono, $email){
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name)or die("Error de conexión con la base de datos");
$sql = "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return', 'xsd:string', $msg);
}
function buscarContacto($nombre) {
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function mostrarTodosContactos() {
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return $listado;
}
$server->register
('creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);
$server->register
('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->register
('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
?>
-
Cambié algunas cosas en servidor.php
<?php
//require_once("datos.php");//
require_once("lib/nusoap.php");
//$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php";
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$server = new soap_server();
$server->configureWSDL("WSDLTST");
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
function creaContacto($nombre, $direccion, $telefono, $email){
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name)or die("Error de conexión con la base de datos");
$sql = "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return', 'xsd:string', $msg);
}
function buscarContacto($nombre) {
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function mostrarTodosContactos() {
require_once("datos.php");
$conn = mysqli_connect($host, $user, $pass, $db_name);
$sql = "SELECT * FROM contacto";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['identificador']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
$server->register
('creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);
$server->register
('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->register
('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
?>
-
lo he cambiado, ahora cuando doy de alta un usuario me sale el mensaje de usuario dado de alta en la bd, pero en el phpmyadmin no aparece, me aparecen los id (1,2,3,4..etc)pero las demas columnas nombre, telefono, email, direccion estan vacias,, claro cuando voy a buscar un usuario me sigue dando errores, son estos
Notice: Undefined index: direccion in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 11
Notice: Undefined index: telefono in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 12
Notice: Undefined index: email in C:\xampp\htdocs\DAW_M07_ACT_05_Javier_Martin\cliente.php on line 13
identificador Nombre Direcci�n Tel�fono email
-
Si intentas ejecutar en el navegador el archivo servidor.php si te sale por pantalla esto
(http://i.imgur.com/UDGTMNe.png)
cuando pulsas en WSDL ¿que ocurre?
;D
-
Me sale una pantalla que pone esto
Este fichero XML no parece tener ninguna información de estilo asociada. Se muestra debajo el árbol del documento.
y debajo codigo xml
<definitions targetNamespace="http://localhost/soap/WSDLTST"><types><xsd:schema targetNamespace="http://localhost/soap/WSDLTST"><xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/></xsd:schema></types><message name="creaContactoRequest"><part name="nombre" type="xsd:string"/><part name="direccion" type="xsd:string"/><part name="telefono" type="xsd:string"/><part name="email" type="xsd:string"/></message><message name="creaContactoResponse"><part name="return" type="xsd:string"/></message><message name="mostrarTodosContactosRequest"/><message name="mostrarTodosContactosResponse"><part name="return" type="xsd:string"/></message><message name="buscarContactoRequest"><part name="nombre" type="xsd:string"/></message><message name="buscarContactoResponse"><part name="return" type="xsd:string"/></message><portType name="WSDLTSTPortType"><operation name="creaContacto"><documentation>funcion que crea contacto</documentation><input message="tns:creaContactoRequest"/><output message="tns:creaContactoResponse"/></operation><operation name="mostrarTodosContactos"><documentation>funcion que crea muestra los contactos</documentation><input message="tns:mostrarTodosContactosRequest"/><output message="tns:mostrarTodosContactosResponse"/></operation><operation name="buscarContacto"><documentation>funcion que crea muestra los contactos</documentation><input message="tns:buscarContactoRequest"/><output message="tns:buscarContactoResponse"/></operation></portType><binding name="WSDLTSTBinding" type="tns:WSDLTSTPortType"><soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/><operation name="creaContacto"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/creaContacto" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation name="mostrarTodosContactos"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/mostrarTodosContactos" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation name="buscarContacto"><soap:operation soapAction="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php/buscarContacto" style="rpc"/><input><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body use="encoded" namespace="http://localhost/DAW_M07_ACT_05_Javier_Martin" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation></binding><service name="WSDLTST"><port name="WSDLTSTPort" binding="tns:WSDLTSTBinding"><soap:address location="http://localhost/DAW_M07_ACT_05_Javier_Martin/servidor.php"/></port></service></definitions>
-
La única diferencia que veo con tu código es en servidor.php la última línea, en tu código es esta:
$server->service(isset($GLOBALS['HTTP_RAW_POST_DATA']) ? $GLOBALS['HTTP_RAW_POST_DATA'] : '');
Si uso esa línea, a mi tampoco me funciona nada, pero si uso en vez de esa esta:
if ( !isset( $HTTP_RAW_POST_DATA ) ) {
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}
$server->service($HTTP_RAW_POST_DATA);
Entonces todo me funciona aunque me lanza algún notice en el archivo cliente.php.
;D
-
asi me inserta, pero luego en la busqueda me da notice y no me encuentra, y en mostrar todos me aparecen los id, y algun notice, pero los demas campos vacios
-
Sera algo del phpmyadmin, no se es muy extraño
-
Bueno, seguí probando un poco y he conseguido que tu código funcione, te dejo los códigos de los cuatro archivos que usé:
formularios.php
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>Servicios web</title>
</head>
<body>
<form action="cliente.php" method="post" >
Nombre: <input type="text" name="nombre" /><br/>
Direccion: <input type="text" name="direccion" /><br/>
Teléfono: <input type="text" name="telefono" /><br/>
Email: <input type="text" name="email" /><br/>
<input type="text" name="funcion" value="creaContacto" hidden />
<input type="submit" value="Crear nuevo usuario" />
</form>
<hr/>
<form action="cliente.php" method="post" >
Nombre<input type="text" name="nombre" />
<input type="text" name="funcion" value="buscarContacto" hidden />
<input type="submit" value="Buscar Contacto" />
</form>
<hr/>
<form action="cliente.php" method="post" >
<input type="text" name="funcion" value="mostrarTodosContactos" hidden />
<input type="submit" value="Mostrar todos los contactos" />
</form>
</body>
</html>
cliente.php
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$serverScript = 'servidor.php';
$metodoALlamar = $_POST['funcion'];
$client = new nusoap_client("$namespace/$serverScript?wsdl", 'wsdl');
if(strcmp($metdodALlamar, 'creaContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre'],
'direccion' => $_POST['direccion'],
'telefono' => $_POST['telefono'],
'email' => $_POST['email']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metdodALlamar, 'buscarContacto')) {
$result = $client->call(
"$metodoALlamar",
array('nombre' => $_POST['nombre']),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
} else if(strcmp($metdodALlamar, 'mostrarTodosContactos')) {
$result = $client->call(
"$metodoALlamar",
array(),
"uri:$namespace/$serverScript",
"uri:$namespace/$serverScript/$metodoALlamar"
);
}
echo $result."<br><br><a href='formularios.php'>Volver a formularios</a>";
?>
servidor.php
<?php
require_once("lib/nusoap.php");
$namespace = "http://localhost/DAW_M07_ACT_05_Javier_Martin";
$server = new soap_server();
$server->configureWSDL("WSDLTST", $namespace);
$server->soap_defencoding = 'UTF-8';
$server->wsdl->schemaTargetNamespace = $namespace;
function creaContacto($nombre, $direccion, $telefono, $email){
require_once("datos.php");
$conn = mysqli_connect($servername, $username, $password, $dbname)or die("Error de conexión con la base de datos");
$sql = "INSERT INTO contacto (nombre, direccion, telefono, email) VALUES ('".$nombre."', '".$direccion."', '".$telefono."', '".$email."')";
if (mysqli_query($conn, $sql)) {
$msg = "Se introdujo un nuevo registro en la BD; ".$nombre;
} else {
$msg = "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
return new soapval('return', 'xsd:string', $msg);
}
function buscarContacto($nombre) {
require_once("datos.php");
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "SELECT * FROM contacto where nombre='".$nombre."'";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
function mostrarTodosContactos() {
require_once("datos.php");
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "SELECT * FROM contacto";
$resultado = mysqli_query($conn, $sql);
$listado = "<table><tr><td>identificador</td><td>Nombre</td><td>Dirección</td><td>Teléfono</td><td>email</td></tr>";
while ($fila = mysqli_fetch_array($resultado)){
$listado = $listado."<tr><td>".$fila['id']."</td><td>".$fila['nombre']
."</td><td>".$fila['direccion']."</td><td>".$fila['telefono']
."</td><td>".$fila['email']."</td></tr>";
}
$listado = $listado."</table>";
mysqli_close($conn);
return new soapval('return', 'xsd:string', $listado);
}
$server->register('creaContacto',
array('nombre'=>'xsd:string','direccion'=>'xsd:string',
'telefono'=>'xsd:string','email'=>'xsd:string'),
array('return'=> 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea contacto'
);
$server->register
('mostrarTodosContactos',
array(),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
$server->register
('buscarContacto',
array('nombre' => 'xsd:string'),
array('return' => 'xsd:string'),
$namespace,
false,
'rpc',
'encoded',
'funcion que crea muestra los contactos'
);
if ( !isset( $HTTP_RAW_POST_DATA ) ) {
$HTTP_RAW_POST_DATA = file_get_contents( 'php://input' );
}
$server->service($HTTP_RAW_POST_DATA);
?>
datos.php
<?php
$servername = "localhost";
$username = "root";
$password = "*******";
$dbname = "nombreBaseDatos";
?>
Saludos. ;D
-
Buenos dias
he cambiado dos cosas yo en mi codigo en el archivo datos.php tengo puesto db_name y en el tuyo es dbname , luego en el servidor.php lo he cambiado , y en tu codigo tienes puesto id y en el mio identificador, he probado y sigue sin funcionarme, me inserta los datos , pero en el phpmyadmin no aparece nada, nada mas que la columna id.
Gracias
-
Ya funciona ;D ;D
con el ultimo codigo que me pasaste
Muchas gracias ;) ;)