Uhm, the code looks somewhat broken, as far as I can tell. Comments below (in italiano)
> -----Messaggio originale----- > Da: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] conto di TeddyZ > Inviato: lunedi 21 luglio 2003 22:27 > A: [EMAIL PROTECTED] > Oggetto: [phpxmlrpc] DB result and array > > > Hi, sorry for my english..i'm going to expose you what's my problem. > I have client and server . the client call a method . this > method retrieve > values from a mysql db but i can't see these values. i'm very > newbie :| > > here is my code, i thing i'm in error with the array of my > method...can you > help me please? > sorry for the stupid question (i think..uhm..i'm sure) > bye! > > client.php > > > include("xmlrpc.inc"); > $message=new xmlrpcmsg('examples.conn'); > $client=new xmlrpc_client("/test/server.php", "xmlrpc.datto.lan", 80); > $response=$client->send($message); innanzitutto ti conviene PRIMA testare $response per evedre che non sia null, POI il faultcode e INFINE recuperare il valore > $value=$response->value(); > if (!$response->faultCode()) { > print "Queste sono le sezioni trovate". > $value->scalarval() . "<BR>"; > print "<HR>vedi:<BR><PRE>" . > htmlentities($response->serialize()). "</PRE><HR>\n"; > } else { > print "Fault: "; > print "Code: " . $response->faultCode() . > " Reason '" .$response->faultString()."'<BR>"; > } > > > server.php > > include("xmlrpc.inc"); > include("xmlrpcs.inc"); > > function conn() { > mysql_connect('localhost','root'); > mysql_select_db('publish'); > $sql="select * from sezioni"; > $res=mysql_query($sql); > $count=mysql_num_rows($res); > for ($i=0;$i<$count;$i++){ > $row=mysql_fetch_array($res); > $sezioni[]=new xmlrpcval($row['nome_sezione'],"array"); Qui crei un nuovo valore xmlrpc di tipo array e lo aggiungi a un array php. Il problema e' che $row['nome_sezione'] non e' un array (la riga del db), ma solo il singolo campo 'nome_sezione' di tale array. I casi sono 2: Se volevi recuperare solo il nome sezione per spedirlo, avresti dovuto fare (supponendo che il nome sezione sia una stringa): $sezioni[] = new xmlrpcval($row['nome_sezione'], "string"); P.S. Inoltre tanto valeva nella query recuperare solo il nome sezione: con 'select nome_sezione from sezioni' hai meno dati traferiti tra DB e PHP e maggiore velocita' di esecuzione nella query nel DB. Se invece volevi spedire tutta la riga relativa alla sezione, avresti dovuto scrivere $valori = array(); foreach($row as $key=> $val) $valori[] = new xmlrpcval($val, "string"); // supponendo che tutti i campi vadano bene come stringa $sezioni[] = new xmlrpcval($valori, "array"); oppure $valori = array(); foreach($row as $key=> $val) $valori[$key] = new xmlrpcval($val, "string"); // supponendo che tutti i campi vadano bene come stringa $sezioni[] = new xmlrpcval($valori, "struct"); per utilizzare una xmlrpc struct invece di un array e tenerti i nomi dei campi. NB: utilizzando foreach($row) recuperi tutti i valori di $row. Di default mysql_fetch_array crea un array con il doppio degli elementi desiderati, una volta con indice posizionale e una volta con indice nominale. Per avere i valori listati una volta sola per nome, dovresti fare mysql_fetch_array($res, MYSQL_ASSOC). > } > return new xmlrpcresp(new > xmlrpcval("$row[nome_sezione]", "array")); > > } ma qui ritorni un xmlrpcresp a cui hai aggiunto solo una variabile (di tipo stringa?) codificata come array xmlrpc!!! forse quello che volevi fare era: return new xmlrpcresp(new xmlrpcval($sezioni, "array")); > > > $server=new xmlrpc_server( array("examples.conn" => > array("function" => "conn"))); > > Ciao, spero di essere stato d'aiuto Gaetano _______________________________________________ phpxmlrpc mailing list [EMAIL PROTECTED] http://lists.usefulinc.com/cgi-bin/mailman/listinfo/phpxmlrpc