Salve a tutt!
vorrei fare un webservice per effettuare la ricerca di dati in database sql...il problema è che non so fare i webservice in php ... mi potete fare un esempio semplice? (so fare i webservice in c#, può aiutarmi??)
Salve a tutt!
vorrei fare un webservice per effettuare la ricerca di dati in database sql...il problema è che non so fare i webservice in php ... mi potete fare un esempio semplice? (so fare i webservice in c#, può aiutarmi??)
Piero
un webservice nella sua accezione più semplice è pensabile come una pagina web che risponde ad una specifica richiesta.
Se sai già farli in C# (posta al limite un sunto di un esempio) non cambia molto.
In pratica puoi partire realizzando una semplice "pagina".
Indica cosa ti potrebbe interessare realizzare...
Questo è il webservice che ho realizzato in c#:
<%@ WebService language="C#" class="ricerca"%>
using System;
using System.Web.Services;
using System.Xml.Serialization;
using MySql.Data;
using MySql.Data.MySqlClient;
using System.Data;
[WebService(Namespace="http://localhost")]
public class ricerca : WebService
{
[WebMethod]
public DataSet Search(string a, string b, string connStr)
{
//string connStr="Database=prova; Data Source=localhost;User Id=root; Password=";
MySqlConnection myConn = new MySqlConnection(connStr);
string query = "SELECT * FROM contatti WHERE "+a+"='"+b+"';";
MySqlCommand cmd = new MySqlCommand(query, myConn);
MySqlDataAdapter myAdapter = new MySqlDataAdapter();
myAdapter.SelectCommand = cmd;
DataSet tab = new DataSet();
myConn.Open();
myAdapter.Fill(tab, "Risultati ricerca");
myConn.Close();
return tab;
}
}
Fa le stesse cose che devo far fare al database in php,cioè effettuare una ricerca su un database creato con MySQL.
come posso fare?
Piero
aiuto .....ho creato questo webservice...a parte il dubbio se è giusto o meno....come faccio a farlo utilizzare a una mia pagina php?????? ho letto su una guida di questo sito che si deve fare un'animazione flash, ma non ho capito come...non c'è un modo più semplice per consumare un webservice??? se include il contenente il codice riportato qui sotto (ws.php) mi esce semplicemente la stessa cosa che vedo se apro ws.php direttamente dal browser (ok, questo è giusto, no?)...voglio usare la funzione ricerca...come???
<?
require_once("nusoap.php");
include ("config.php");
define("NAMESPACE", "http://localhost:81");
$server = new soap_server;
$server->debug_flag=false;
$server->configureWSDL('GestioneDati', NAMESPACE);
$server->wsdl->schemaTargetNamespace = NAMESPACE;
$server->wsdl->addComplexType('search','complexType','struct', 'all','',array('user' =>array('name'=>'user','type'=>'xsd:string'),'pass ' =>array('name'=>'pass','type'=>'xsd:string'), 'datasource' =>array('name'=>'datasource','type'=>'xsd:string') , 'database' =>array('name'=>'database','type'=>'xsd:string'),) );
$server->register('ricerca',array('categoria'=>'xsd:string ', 'valore' => 'xsd:string'),array('return'=>'tns:risultati'),NAM ESPACE);
function ricerca($categoria, $valore) {
$link = mysql_connect($db_host, $db_user, $db_password) or die('Could not connect: ' . mysql_error());
mysql_select_db($db_name) or die('Could not select database');
$query = "SELECT * FROM contatti WHERE $categoria = '$valore'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$dato=$result;
//mysql_free_result($result);
mysql_close($link);
return $dato;
}
$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ?$GLOBALS['HTTP_RAW_POST_DATA'] : '';
$server->service($HTTP_RAW_POST_DATA);
exit();
?>
Piero
le nusoap funzionano ASSOLUTAMENTE uno schifo, soprattutto se ti devi interfacciare con webservice scritti in .NET o client scritti in .NET ... parlo per esperienza
devi assolutamente utilizzare il supporto SOAP del PHP
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
ah...ok..però dato che non sono ancora un esperto....cosa cambia rispetto al codice che postato qui sopra? cosa devo fare? e poi cosa faccio per usare la funzione che definisco?
Piero
ho provato a scrivere questo su un file php per tentare di utilizzare la funzione ricerca definita nel webservice....però non vedo niente....
<?php
require_once("nusoap.php");
include ("config.php");
include ("top_foot.php");
//include("http://localhost:81/provamia.php");
//<soap:address location="http://localhost:81/provamia.php"/>
$categoria=$_REQUEST['categoria'];
$valore=$_REQUEST['valore'];
top();
echo'Risultati ricerca:';
$wsdl="http://localhost:81/provamia.php?wsdl";
$client=new soapclient($wsdl, true);
$param=array('str1'=>'nome', 'str2'=>'Piero');
echo $client->call('ricerca', $param);
//$result=ricerca($categoria, $valore);
?>
<form method="post" action="ricerca.php">
<input type="submit" value="Cerca ancora" />
</form>
<form method="post" action="home.php">
<input type="submit" value="Home" />
</form>
<?
// chiusura pagina
foot();
?>
ho modificato così il webservice in modo che stampi direttamente lui i risultati (almeno vorrei che così fosse)
<?
require_once("nusoap.php");
include ("config.php");
define("NAMESPACE", "http://localhost:81");
$server = new soap_server;
$server->debug_flag=false;
$server->configureWSDL('GestioneDati', NAMESPACE);
$server->wsdl->schemaTargetNamespace = NAMESPACE;
$server->wsdl->addComplexType('search','complexType','struct', 'all','',array('user' =>array('name'=>'user','type'=>'xsd:string'),'pass ' =>array('name'=>'pass','type'=>'xsd:string'), 'datasource' =>array('name'=>'datasource','type'=>'xsd:string') , 'database' =>array('name'=>'database','type'=>'xsd:string'),) );
$server->register('ricerca',array('categoria'=>'xsd:string ', 'valore' => 'xsd:string'),array('return'=>'tns:risultati'),NAM ESPACE);
function ricerca($categoria, $valore) {
$link = mysql_connect($db_host, $db_user, $db_password) or die('Could not connect: ' . mysql_error());
mysql_select_db($db_name) or die('Could not select database');
$query = "SELECT * FROM contatti WHERE $categoria = '$valore'";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());
$dato=$result;
//mysql_free_result($result);
mysql_close($link);
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
return $dato;
}
$HTTP_RAW_POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA']) ?$GLOBALS['HTTP_RAW_POST_DATA'] : '';
$server->service($HTTP_RAW_POST_DATA);
exit();
?>
dov'è l'errore???
Piero
Qui c'è un esempio usando l'estensione stessa di PHP5 per sviluppare un server soap e nell'ultima pagina fa anche un esempio veloce riguardo a WSDL
http://www.herongyang.com/php/php_soap_server.html
Qui invece c'è la pagina del manuale
http://it.php.net/soap
VM su SSD da 5$! https://www.digitalocean.com/?refcode=f6925c7f0ddb
ti chiedo scusa ma non riesco a capire lo stesso :master: .. in quel tutorial l'output non è come lo vorrei io...io voglio solo il risultato della funzione, mentre li ci sono molte informazioni in pù..come posso semplicemente usare la funzione del webservice come una funzione qualsiasi??
Piero
ho fatto altre ricerche in rete in questo tempo e ho scoperto diversi modi per fare un webservice con php (ovvio che non ho scoperto che l'acqua calda, ma sono nuovo di questo mondo )...cmq ho provato a fare un webservice in php con nusoap....anche se mi è stata consigliata come scelta, è quello che credo sia più facile per cominciare... volevo chiedervi come mai, quando chiamo la funzione, vedo solo una schermata bianca.
Qui sotto c'è il facsimile del mio codice (facsimile perchè nn ce l'ho dietro mentre sto scrivendo, comunque il cadice l'ho copiato da quello che c'è qui sotto e poi l'ho modificato)
<?
require_once('nusoap.php');
$wsdl="http://www.xmethods.net/sd/2001/CurrencyExchangeService.wsdl";
$client=new soapclient($wsdl, 'wsdl');
$param=array(
'country1'=>'usa',
'country2'=>'canada'
);
echo $client->call('getRate', $param);
?>
:berto:
Piero