Autor | Zpráva | ||
---|---|---|---|
greg Profil |
#1 · Zasláno: 25. 6. 2014, 14:26:52
Dobrý den, řeším korespondenční úkol do školy a nevím si rady s webovou službou (SOAP), client mi nevrací žádný výsledek ani se nehlásí žádná chyba. client by měl vyhledat v databázi záznami podle daného kritéria, konzultoval jsem to s profesorem ale není my schopen odpovědět.
Client : <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> <title>Untitled 1</title> </head> <body> <?php $celed = $_POST["celed"]; ?> <?php $soap = new SoapClient("http://cipisek.upce.cz/e11412/WS/e11412.wsdl"); $response = $soap->getCount($celed); ?> <form name="frm" action="client.php" method="post" enctype="multipart/form-data"> <select name="celed"> <option value="Prvni" <?php if($celed == 'Prvni') { ?> selected="selected" <?php } ?>>Prvni</option> <option value="Druha" <?php if($celed == 'Druha') { ?> selected="selected" <?php } ?>>Druha</option> <option value="Treti" <?php if($celed == 'Treti') { ?> selected="selected" <?php } ?>>Treti</option> </select> <input type="submit" value="Zjisti počet"/> Pocet zaznamu je : <? echo $response; ?> </form> </body> </html> <?php include("config.php"); function getCount($typ) { $sql = "SELECT count(*) FROM Pavouci WHERE Celed='".$typ."'"; $ret = mysql_query($sql); $row = mysql_fetch_array($ret); return $row[0]; } ini_set("soap.wsdl_cache_enabled","0"); $server = new SoapServer("e11412.wsdl"); $server->addFunction("getCount"); $server->handle(); ?> WSDL: <?xml version='1.0' encoding='windows-1250' ?> <definitions targetNamespace="http://cipisek.upce.cz/e11412/WS/" xmlns:pavouk="http://cipisek.upce.cz/e11412/WS/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <message name="getCountRequest"> <part name="symbol" type="xsd:string"/> </message> <message name="getCountResponse"> <part name="result" type="xsd:integer"/> </message> <portType name="typType"> <operation name="getCount"> <input message="pavouk:getCountRequest"/> <output message="pavouk:getCountResponse"/> </operation> </portType> <binding name="pavoukBinding" type="pavouk:typType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getCount"> <soap:operation soapAction="urn:xmethods-delayed-quotes#getCount"/> <input><soap:body use="encoded" namespace="urn:xmethods-delayed-quotes" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input> <output><soap:body use="encoded" namespace="urn:xmethods-delayed-quotes" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output> </operation> </binding> <service name="PavoukService"> <port name="pavoukPort" binding="pavoukBinding"> <soap:address location="http://cipisek.upce.cz/e11412/WS/server.php"/> </port> </service> </definitions> Jsem z toho už bezradný..kdyby někdo viděl nějakou chybu budu moc vděčný..děkuji |
||
rafej Profil |
#2 · Zasláno: 25. 6. 2014, 14:43:46
Nemůže být problém třeba v tom, že odesílaný požadavek nic nenajde? Vypiš si postupně, co odesílá formulář, co vyleze z DB a co se vrací pomocí SOAP.
|
||
greg Profil |
#3 · Zasláno: 25. 6. 2014, 15:13:08
rafej:
v případě že nic nenajde, měl by vratit 0 ale nezobrazí se ani ta..jsme začatečník a toto dělám prvně.. |
||
juriad Profil |
#4 · Zasláno: 25. 6. 2014, 15:19:47
Zkus si přidat do na začátek funkce getCount řádek:
file_put_contents('getCount.1.txt', 'Vstup: ' . $typ); file_put_contents('getCount.2.txt', 'Výstup: ' . $row[0]); A pak podle toho, zda se takový soubor vytvořil, zjistíš, zda se funkce zavolala a jestli dotaz prošel v pořádku. |
||
greg Profil |
#5 · Zasláno: 25. 6. 2014, 17:06:50
juriad:
udělal jsem to takto : <?php include("config.php"); function getCount($typ) { file_put_contents('getCount.1.txt', 'Vstup: ' . $typ); $sql = "SELECT count(*) FROM Pavouci WHERE Celed='".$typ."'"; $ret = mysql_query($sql); $row = mysql_fetch_array($ret); return $row[0]; file_put_contents('getCount.2.txt', 'Výstup: ' . $row[0]); } ini_set("soap.wsdl_cache_enabled","0"); $server = new SoapServer("http://cipisek.upce.cz/e11412/WS/e11412.wsdl"); $server->addFunction("getCount"); $server->handle(); ?> |
||
juriad Profil |
#6 · Zasláno: 25. 6. 2014, 17:11:44
Ten druhý se ani vytvořit nemůže, příkaz jsi dal až za return. Přesuň jej o řádek výš.
Vytvořil se alespoň ten vstupní soubor? Pokud ne, tak se ta funkce ani nezavolá. Mimochodem, ta doména cipisek.upce.cz neexistuje, není problém v tom?
|
||
greg Profil |
#7 · Zasláno: 25. 6. 2014, 17:18:03
juriad:
nevytvořil se ani jeden..k domeně jsem připojen přes VPN..ale ta funkce se vážně asi nevolá, ale kde je chyba to netušim.. |
||
rafej Profil |
U databázového dotazu nevidím žádnou kontrolu, jestli se dotaz vykonal.
Nehledě na to, že posíláš do databáze neošetřený vstup, který ti může rozbít celý dotaz. Ošetřuj proměnné pomocí funkce mysql_real_escape_string .
A prohlédni si logy PHP. |
||
Časová prodleva: 11 let
|
0