Sviluppo4d.it
Sito indipendente di informazioni tecniche per sviluppatori 4th Dimension italiani  

Sviluppatori 4D

Utility 4D

Risorse 4D



4d logo
Naviga: Prev Next

Titolo: 4D e PHP

Categoria: Codice Ultimo Aggiornamento: 31/10/04


Per poter servire pagine dinamiche con Php generalmente si utilizza questa configurazione: web server + php +  backend verso un database Mysql o altro.
Php si integra facilmente con molti database SQL attraverso i vari moduli ODBC, ma non si integra direttamente con 4D Web Server (su Mac non c'è il driver ODBC per 4d) e non esiste un "4D open for php", quindi una soluzione può essere quella di usare i WebServices.

In una realtà in cui esiste già un server Apache + Php è stato sviluppato un database 4D.  
I dati di 4D accessibili via client vengono quindi anche mostrati in alcune pagine dinamiche offerte da Apache, non utilizzando 4D come Web Server, ma pubblicando alcune procedure come Web Services (SOAP).  

Ecco i passi indispensabili eseguiti in 4D:
1 - Il Server 4D installato ha le licenze web (nella versione 2004 è possibile acquistare solo il modulo per i webservices che costa meno) e il Web Server è attivo (Ambiente User: Menu Web Server : Start Web Server).
2 - Sempre lato server, impostare le Preferenze per i Web Services. In questo caso 4D fa da Server per le SOAP quindi verificare solamente le opzioni per Server Side. Sicuramente impostare "Allow Web Services Requests". Gli altri due parametri sono stati lasciati come di default.
3 - Creazione di un metodo usufruibile via Web Services: Menu Designer:New Method: wbSerTest. Per questo metodo dal menu Method:Method Properties: selezionare due opzioni da Attributes : Offered as a web Service, e Published in WSDL. Questo permette di richiamare il metodo come una funzione che dall'esterno accetta parametri e restituisce valori.
      
  ` metodo wbSerTest  offerto via SOAP  
C_INTEGER(in_RowQty; RowQty)
C_TEXT(AskDescr;in_AskDescr)
C_BLOB(Articles_Bl;Blob_tmp)
SET BLOB SIZE(Articles_Bl;0)
RowQty:=0
SOAP DECLARATION(AskDescr;Is Text ;SOAP Input ;"in_AskDescr")
SOAP DECLARATION(RowQty;Is Integer ;SOAP Input ;"in_RowQty")
SOAP DECLARATION(Articles_Bl;Is BLOB ;SOAP Output )
If (Length(AskDescr)>5)
    READ ONLY(*)
    If (RowQty<=0)
      RowQty:=10
    End if  
    QUERY([Articles];[Articles]Description= AskDescr)
    If (Records in selection([Articles])>0)
      ORDER BY([Articles];[Articles]Description;>)
      REDUCE SELECTION([Articles];RowQty)
      $tmp:=""
      While (Not(End selection([Articles])))
        $tmp:=[Articles]Description+Char(9)+[Articles]Code+Char(13)
        TEXT TO BLOB($tmp;Articles_Bl;3;*)
        NEXT RECORD([Articles])
      End while  
    Else  
      TEXT TO BLOB("empty query";Articles_Bl;3;*)
    End if  
End if  

  Lato Php:

require_once('nusoap.php');
//nusoap.php scaricabile a quest'indirizzo:

//http://dietrich.ganx4.com/nusoap/

//mi connetto al server sul quale "gira" 4d
// e' importante notare 4DSOAP come parte del percorso
$soapclient = new soapclient('http:///4DSOAP/');  
//Qui definisco i parametri da passare alla funzione
$parameters = array('in_AskDescr'=>valore1,'in_RowQty'=>valore2);
$ret =  $soapclient->call('wbserTest',$parameters);
if(!$ret)
  {
    print "Error:" . $soapclient->getError() . '\n<br><br>';
    exit;
  }
    else
    echo "Risultato : " . var_dump($ret) . '\n<br>';
  }
//Attenzione: se la funzione restituisce un parametro come risultato allora $ret sara' una
//variabile semplice altrimenti sara' un array associativo che avra' come chiavi i nomi delle
//variabili che restituisce la funzione .
//"Spengo il client"
unset($soapclient);
?>


Funziona.

Si ringrazia per il contributo Mauro Donadello

Inviato da: Serena Zanfini Visite: 27081

Se accedi con utente e password, puoi aggiungere dei commenti.


Accesso

User:
Pass: Accedi

Cerca

Se non trovi le informazioni che cerchi scrivi a aiuto@sviluppo4d.it

4D Principali

4D Discussioni

Faq random


Crediti

Dominio registrato da ZetaNet
Sito realizzato da Nexus srl
4D SQL 11.9.0 offerto da 4D & Italsoftware
Icone di FAMFAMFAM
Moderato da Umberto Migliore
329 utenti registrati

Pagina servita il 23/11/24 alle 05:43:18 Valid HTML 4.01! Valid CSS!

Mutuo Facile, iDigitalScout, iDigitalTags e altre app di Nexid srl per iPhone e iPad

Cidroid, distributore italiano lettori barcode per IOS Apple iPhone, iPod, iPad