PHP & SOAP [Résolu/Fermé]

Signaler
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016
-
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016
-
Bonjour,

Je suis débutante avec SOAP. J'ai crée un client et un serveur et j'aimerais bien faire deux fonctions une pour la récupération et autre pour l'insertion.

la fonction de récupération fonctionne correctement mais la fonction d'insertion ne marche pas.

serveur:
require_once ('lib/nusoap.php'); 
$server = new soap_server();
$server->configureWSDL('Test','urn:Test');

$server->soap_defencoding = 'utf-8';

$server->register('connection',array('ID' => 'xsd:int'),
array('return' =>'xsd:string'));
$server->register('insertUser',array('FirstName'=>'xsd:string','LastName' =>'xsd:string'),array('return' =>'xsd:string'));
//base de donnée
function connection($ID){
try {
$db=new PDO('mysql:host=localhost;dbname=service','root','');
foreach($db->query('select * from myusers where ID = '.$ID) as $row)
{
return $row['FirstName'];
break;
}
} catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}

}
function insertUser($FirstName,$LastName){
try {
$db1=new PDO('mysql:host=localhost;dbname=service','root','');
$req=$db1->prepare('insert into myusers values(?,?)');

$FirstName=$_POST['nom'];
$LastName=$_POST['prenom'];

$req->bindParam(1,$FirstName);
$req->bindParam(2,$LastName);
$req->execute();
return "client ajouter";

}
catch (PDOException $e) {
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
}


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

code client:
<?php
// Pull in the NuSOAP code
require_once('lib/nusoap.php');
// Create the client instance

$client = new nusoap_client('http://localhost/testc/server.php');
$result = $client->call('connection',array('ID' => 1));
echo $result;
if(isset($_POST['btn_ajt']))
{
$res=$client->call('insertUser',array('FirstName'=>$_POST['nom'],'LastName'=>$_POST['prenom']));
echo $res;
}
else
{
echo "
<form name='test' method='post' action='server.php'>
<table>

<tr><td>Nom</td><td><input type='text' name='nom'></td></tr>
<tr><td>Prenom</td><td><input type='text' name='prenom'></td></tr>
<tr><td><input type='submit' value='ajouter' name='btn_ajt'></td></tr>
</table>
</form>";
}


Merci d'avance

1 réponse

Messages postés
32046
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 avril 2021
3 386
Bonjour,

là comme ça... je pense que l'erreur se trouve là :
Côté serveur tu écris :
	$FirstName=$_POST['nom'];
	$LastName=$_POST['prenom'];

mais côté client tu as mis :
$res=$client->call('insertUser',array('FirstName'=>$_POST['nom'],'LastName'=>$_POST['prenom']));

plus exactement :
array('FirstName'=>$_POST['nom'],'LastName'=>$_POST['prenom'])

Donc... tu envoies ... non plus "nom" et "prenom" ... mais .. "FirstName" et LastName"
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016

oui, le meme message !!!!
Messages postés
32046
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 avril 2021
3 386
Et... que contient ton fichier WSDL ?
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016
>
Messages postés
32046
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
11 avril 2021

je travail en mode non wsdl càd il doit etre générer automatiquement d'après qlq tutorial.
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016
>
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016

j'ai trouvé le problème
cette ligne ne s'execute pas:
if(isset($_POST['btn_ajt']))


avez vous une idée comment passer une methode en paramètre d'action et pas le fichier.php?
Messages postés
15
Date d'inscription
lundi 7 mars 2016
Statut
Membre
Dernière intervention
4 avril 2016

je vous remercie infinement