Autor Zpráva
mafos
Profil
Dobrý večer,

prosím o pomoc při tvorbě domácího úkolu :-) Jde o webovou službu pomocí PHP. Služba má vypisovat počet záznamů v databázi dle zvoleného kritéria. Dělám to poprvé a buď tam mám nějakou hloupost nebo jsem se do toho totálně zamotal. Pokud byste mi byli schopni nějak pomoci byl bych velice rád.

Při otevření client.php píše toto:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Missing name for <input> of 'getCount' in /var/www-stud/e11427/client.php:20 Stack trace: #0 /var/www-stud/e11427/client.php(20): SoapClient->SoapClient('http://cipisek....') #1 {main} thrown in /var/www-stud/e11427/client.php on line 20

obsah client.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<HTML>
    <HEAD>

        <TITLE>VYHLÍDKOVÉ LETY LETADLEM - Roman Lipka</TITLE>
            <meta http-equiv="Content-type" content="text/html; charset=windows-1250">
            <meta http-equiv="Content-Style-Type" content="text/css">
    </HEAD>

<BODY style="background: url(pozadi.gif) #2979dc; background-position: right top; background-repeat: no-repeat; font-family: arial">
  <div style="margin: 0 auto; width: 800px; top: 10px; border: 5px solid #000000; padding: 5px; background-color: #FFFFFF">
    <div style="border: 1px solid #000000; background: url(logo.gif) #FFFFFF; background-position: center top; background-repeat: no-repeat; padding: 19px">
        <p style="margin: 106px 0 20px 16px; font-weight: bold"><a href="index.php" style="color: #000000">OBJEDNÁVKA</a> | <a href="administrace.php" style="color: #000000">ADMINISTRACE</a> | <a href="sluzba.php" style="color: #000000">WEBOVÁ SLUŽBA</a></p>
        <H1>WEBOVÁ SLUŽBA</h1>
        <H2>zjištění počtu záznamů dle zadaných kritérií</H2>

        <?
            $pocet = $_POST["pocet"];
            
            $soap = new SoapClient("http://cipisek.upce.cz/e11427/WS/e11427.wsdl");
            $response = $soap->getCount($pocet);
        ?>

        <form action="client.php" method="post" name="formularWS">
            <table border="0">
                <tr>
                    <td style="width: 200px">Počet osob v letadle: </td>
                    <td>
                        <select name="pocet" class="form_prvek">
                        <option value="1" <? if ($pocet == 1) {echo " selected=\"selected\"";} ?>>1</option>
                        <option value="2" <? if ($pocet == 2) {echo " selected=\"selected\"";} ?>>2</option>
                        <option value="3" <? if ($pocet == 3) {echo " selected=\"selected\"";} ?>>3</option>

                    </td>
                </tr>
            </table>
            <p style="text-align: center"><input type="submit" value="ZJISTI POČET" class="form_prvek"></p>
            <p>Počet záznamů, které odpovídají vybranému počtu osob je: <? echo $response; ?>
        </form>
    </div>
  </div>
</body>
</html>

obsah wsdl:
<?xml version ='1.0' encoding ='windows-1250' ?>
<definitions targetNamespace="http://cipisek.upce.cz/e11427/WS/"
xmlns:pocet="http://cipisek.upce.cz/e11427/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 mesage="pocet:getCountRequest"/>
            <output message="pocet:getCountResponse"/>
        </operation>
    </portType>

    <binding name="pocetBinding" type="pocet: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="pocetService">
        <port name="pocetPort" binding="pocetBinding">
            <soap:address location="http://cipisek.upce.cz/e11427/WS/server.php"/>
        </port>
    </service>

</definitions>

obsah server.php:
<?

    function getCount($pocet)
    {
        $query = "SELECT * FROM letadlo where pocet=".$pocet;
        $result = mysql_query($query, $link) or die("SQL dotaz nešlo provést");
        $row = mysql_fetch_array($result);
        return $row[0];
    }


    ini_set("soap.wsdl_cache_enabled", "0");
    $server = new SoapServer("e11427.wsdl");
    $server->addFunction("getCount");
    $server->handle();
?>


Vidíte tam někde nějakou chybu? Určitě tam je něco špatně, ale fakt nevím co :-(

Děkuji
novacek90
Profil
mafos:
$query = "SELECT * FROM letadlo where pocet=".$pocet;
5. řádek server.php
nemělo by to být $query = "SELECT * FROM letadlo where pocet='".$pocet."'"; ?

Taky jsem začátečník ale myslím že by to mělo být takhle
Tori
Profil
Počet záznamů, které odpovídají vybranému počtu osob je:
Podle téhle věty by měl dotaz vypadat takhle: $query = "SELECT COUNT(*) FROM letadlo where pocet=".(int)$pocet;

novacek90:
Pokud je sloupec pocet číselného typu (INT, FLOAT), tak bez apostrofů. Pokud to je řetězcový typ nebo datum, tak s nimi. Podobně jako v PHP.
mafos
Profil
Ještě nějaký jiný nápad prosím? Děkuji


Tak tedy vyřešeno :-) Ve wsdl mi na řádku 20 chybělo písmenko :-)

Stejně to ale nefunguje. Nyní to píše chybu:
Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in /var/www-stud/e11427/client.php:21 Stack trace: #0 [internal function]: SoapClient->__call('getCount', Array) #1 /var/www-stud/e11427/client.php(21): SoapClient->getCount('1') #2 {main} thrown in /var/www-stud/e11427/client.php on line 21


Nějaký nápad?

Děkuji


Tak už jsem přišel i na to :-) V server.php mi chybělo přihlášení do db. To byly ale fakt blbý chyby co? :-) Pěkný den všem

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: