Tutorial - PhpCodeWizard.it

annuncio pubblicitario
PhpCodeWizard ver. 2.0
Manuale di PhpCodeWizard
di
Antonio LAMORGESE
www.phpcodewizard.it
[email protected]
pubblicato il 08-11-2015
PhpCodeWizard è un open source framework usato per creare applicazioni web di gestione dati.
Basato su ADODB ed è rilasciato sotto Apache License.
1/14
PhpCodeWizard ver. 2.0
Installazione:
PhpCodeWizard in Bundle:
Alla pagina “Download” della home page cliccate sul link ”InstantRails (Server Web) +
PhpCodeWizard in Bundle”. Decomprimere in c:\InstantRails. Eseguire in c:\InstantRails il
file InstantRails.exe ed apri il browser al seguente indirizzo:
http://localhost:8001/phpcodewizard.
Procedura manuale di installazione:
Alla pagina “Download” della home page troverete 4 file:
1. phpcodewizard.zip
2. gestione_del_personale.zip
3. admin.zip
4. manuale_phpcodewizard.pdf
Una volta scaricati tutti e quattro, installate easyphp come spiegato alla pagina ”provalo in
locale”, a tale pagina troverete inoltre il link per scaricare easyphp, per configurarlo e per
lanciarlo, tutto questo richiederà solo alcuni minuti.
A questo punto, con l’installazione di easyphp, abbiamo tutto il necessario per poter eseguire
phpcodewizard e vederlo in funzione, ma prima occorre estrarre i 4 file in questo modo:
1. Se avete già lanciato easyphp occorre fermarlo, quindi cliccando con il tasto destro del
mouse sulla “E” lampeggiante in basso a destra nella barra delle applicazioni, fermare e
chiudere easyphp (vedi sotto).
2. Estrarre phpcodewizard nella cartella easyphp1-8\www\. Dopo l’estrazione del file in
easyphp1-8\www sarà presente la cartella \phpcodewizard con i relativi file di sistema.
(Spiegati alla pagina “architettura della home page).
2/14
PhpCodeWizard ver. 2.0
3. Sotto la cartella easyphp1-8, troverete la cartella …\mysql\Data, dentro la cartella \data
estraete: gestione_del_personale.zip e admin.zip, come rappresentato sotto.
4. Attraverso il menu di avvio trovare e lanciare nuovamente easyphp.
5. Aprite il vostro browser e digitate il seguente indirizzo:
http://localhost/phpcodewizard/index.php il browser visualizzerà questa pagina.
3/14
PhpCodeWizard ver. 2.0
Come vedete la pagina che visualizzerete sarà divisa sempre in due parti, quella di sinistra che
oltre a fornire informazioni sui livelli di accesso e utenti connessi, mostra i progetti creati. Nella
parte destra viene visualizzato il risultato delle richieste effettuate precedentemente cliccando
sui link situati nella parte sinistra.
GESTIONE LIVELLI DI ACCESSO E SICUREZZA
Loggatevi inserendo Username : admin e password : admin. E’ importante sapere che gli
utenti possono essere gestiti solo dagli amministratori di sistema, cioè da coloro che hanno un
livello di accesso uguale a 10. Cliccando sul link “admin”, situato nella parte sinistra della
pagina principale di phpcodewizard, visualizzerete altri 2 link “log_users” e “users”.
Cliccando sul primo visualizzerete nella parte destra, tutte le azioni compiute fino a quel
momento sui dati. Cliccando sul link “users” potrete gestire gli utenti, inserendone di nuovi o
modificando le credenziali di quelli già inseriti.
A tutti gli utenti che hanno dei livelli di accesso < di 10 occorre specificare database e tabella
da gestire e per indicare correttamente il livello di accesso occorre tenere in considerazione
quanto segue:
Livello di Accesso
Se < di 3
Se >= 3
Se >= 6
Se >= 10
Azione Permessa
Solo visualizzazione dati
Inserimento dati
Modifica Dati
Amministratore di Sistema
4/14
PhpCodeWizard ver. 2.0
GESTIONE DELLA VISIBILITA’ DEI DATI:
Una nota importante va fatta sul criterio di gestione della visibilità. I campi “Da1”; “A1”;
“Da2”; “A2”; “Da3”; “A3”; “Da4”; “A4”, servono ad impostare la visibilità dell’utente sui dati,
ad esempio un utente dell’ufficio vendite non deve poter vedere, se non diversamente
impostato, i dati di un ipotetico ufficio contratti.
Per attuare tale gestione la tabella interessata deve contenere obbligatoriamente un campo
denominato: “visibility VARCHAR(8)”. Basta dare un’occhiata alla tabella user del database
admin per capire che l’utente lamorgesec può accedere solo ai dati dell’ufficio progettazione,
mentre l’utente lamorgesea può accedere solo ai dati della segreteria. Una volta creata una
tabella con i dati relativi alla visibilità (vedi tabella Uffici del database gestione_del_personale)
occorre legare il campo visibilità della tabella gestione_del_personale.anagrafica con il campo
di lookup (visibility) della tabella uffici.
Cliccando sul link “servizi” della pagina principale di phpcodewizard, e poi nuovamente sul link
“phpcodewizard” verrà mostrata la pagina sottostante e capirete bene il funzionamento del
progetto “gestione_del_personale” proseguendo cliccando sul tasto “Next/avanti”.
Subito dopo aver pigiato sul tasto avanti si passa a selezionare il database desiderato e si clicca
nuovamente sul tasto avanti per proseguire nella generazione del progetto.
5/14
PhpCodeWizard ver. 2.0
La pagina mostrata è quella relativa alla selezione della tabella da gestire all’interno del
database “gestione_del_personale” precedentemente selezionato. Ciò che il sistema mostrerà
è la pagina seguente:
Questa pagina è quella più importante, qui vengono definite tutte le caratteristiche di gestione sulla
tabella selezionata, in questo caso stiamo parlando della tabella “anagrafica” dove si può vedere il
legame con il campo visibilità della tabella uffici.
6/14
PhpCodeWizard ver. 2.0
Tutte le proprietà sottostanti non hanno bisogno di essere spiegate in quanto molto semplici ed
intuitive anche per chi ha poca dimestichezza con i database.
Subito dopo la pagina delle proprietà, cliccando sul tasto avanti, si passa alla generazione vera e
propria degli script relativi alla gestione della tabella.
Dopo la generazione degli script, riaggiornando la pagina ciò che viene mostrato è visualizzato
sotto. Troveremo il link “gestione_del_personale” con i relativi link delle tabelle generate. A partire
da sinistra potrete notare 3 icone. La 1^ icona serve a modificare il record, la 2^ a cancellare il
7/14
PhpCodeWizard ver. 2.0
record, mentre la terza a mostrare i relativi dettagli, in questo caso i corsi. E’ possibile, cliccando
sulle intestazioni delle colonne, ordinare i dati in base alla colonna scelta in modo decrescente.
Ogni tabella da gestire in phpcodewizard deve passare attraverso quel processo di generazione degli
script spiegato precedentemente, inoltre date anche un’occhiata alla pagina “architettura” della
home page di phpcodewizard per capire bene la funzione di ogni file. E’ da considerare che per
quanto riguarda la visibilità e la gestione master dettaglio il sistema si aspetta di trovare nelle tabelle
da gestire i seguenti campi:
Tipo Gestione
Visibilità
Master/Dettaglio
Campo
Visibilità VARCHAR(8) (nella tabella interessata)
Id_child BIGINT (nella tabella dei dettagli)
In ogni caso scorrendo il progetto “gestione_del_personale” è facile capire il funzionamento di tutto
quanto fin qui esposto.
CONSIGLI UTILI PER GLI SVILUPPATORI
Il risultato ottenuto con PhpCodeWizard è tutt’altro che banale, tenuto conto che l’applicazione
generata è da considerare già finita. A questo punto vi trovate con un programma in esecuzione,
8/14
PhpCodeWizard ver. 2.0
senza aver visto una sola riga di codice, per un programmatore, questa situazione può generare un
po’ di insoddisfazione, cerchiamo quindi di porre rimedio e di capire che cosa ha prodotto il
generatore di codice dietro le quinte.
Supponiamo di voler creare il progetto per la gestione della tabella anagrafica contenuta nel
database Gestione_del_Personale visto precedentemente:
Il sistema dopo aver specificato i dati, come abbiamo visto nelle figure precedenti, creerà 6 files:
1. …._config.php
(Contiene le proprietà di gestione di ogni campo)
2. …._dbConnection.php (Contiene le proprietà di connessione al database)
3. ….__grid_index.php (E’ il file principale che viene richiamato per lanciare l’esecuzione
della gestione della tabella e che richiama il file table_engine.php
che è il cuore di tutto il sistema).
4. …._report.php
(Report predefinito da sistema).
5. …._template.php
(pagina che assegna e richiama il relativo …template.tpl).
6. …._template.tpl
(qui è possibile definire il layout di presentazione “vedi smarty”).
Al posto dei (…) occorre sostituire una stringa formata da database e tabella da gestire per cui i
file avranno il seguente nome:
1. gestione_del_personaleanagrafica _config.php
2. gestione_del_personaleanagrafica _dbconnection.php
3. gestione_del_personaleanagrafica _grid_index.php
4. gestione_del_personaleanagrafica _report.php
5. gestione_del_personaleanagrafica _template.php
6. gestione_del_personaleanagrafica _template.tpl
Questi 6 files vengono dati in pasto a table_engine.php che è il cuore di PhpCodeWizard, per cui i 6
files di cui sopra, relativi ad ogni gestione, verranno richiamati tutti da tale file. Per una
personalizzazione più accurata di ogni gestione è possibile copiare e rinominare il file
table_engine.php nella stessa cartella in cui risiede l’originale apportandovi a mano il codice
necessario alla personalizzazione. In tale modo occorre rinominare nel file …_grid_index.php ogni
chiamata a table_engine.php con il nome del table_engine.php rinominato e personalizzato.
GENERAZIONE DINAMICA REPORT
Il file nomedatabasenometabella_report.php, contiene tutte le informazioni necessarie per
visualizzare un report attraverso Microsoft-Word, e viene generato dal sistema solo se non esiste,
ogni volta che viene rieseguita una rigenerazione del progetto tale file non viene mai toccato, questo
per evitare di perdere eventuali personalizzazioni. Per rigenerare tale file occorre eliminarlo prima
di eseguire una nuova generazione degli script relativi al progetto interessato.
Questo file viene richiamato cliccando sull’icona di “word”, è situata a fianco ad ogni record nella
griglia dati. A tale azione corrisponde l’apertura di Microsoft-Word che visualizza un report
predefinito che occorre necessariamente modificare.
Per fare questo bisogna tener presente che, a tale file vengono passate alcune variabili, tra cui:
$field_name_autoinc e $field_value_autoinc, che conservano rispettivamente il nome del file ad
autoincremento (ed il suo valore) del record evidenziato nella griglia dati.
Aprendo tale file ci si rende subito conto della semplicità con cui possiamo personalizzare il nostro
report. In modalità predefinita il report visualizza i valori delle variabili sopra menzionate e, se la
tabella è relazionata ad una tabella dettagli, mostrerà i dettagli relativi al record attivo.
E’ importante evidenziare che, se la tabella non possiede alcun campo ad autoincremento, la
funzione di stampa è inibita, ed al posto dell’icona della “stampante”troveremo quella raffigurante
un segnale di divieto.
9/14
PhpCodeWizard ver. 2.0
Proverò velocemente a commentare le righe di codice più importanti contenute nel file
…._report.php:
(le seguenti righe di codice si riferiscono ad adminusers_report.php)
include_once('config.inc.php');
include_once('adminusers_dbconnection.php');
include_once('adminusers_config.php');
$database_login = "admin";
$dbtable_login = "users";
header("Content-type: application/msword");
header("Content-Disposition: attachment; filename=users.doc");
$conn = ADONewConnection($dbtype);
if (!($conn->connect($dbhost,$dbusername,$dbpassword,$dbname)))
{
die('<B>Errore di Connessione al Database...</B>');
}
Queste istruzioni includono tutte le impostazioni e le scelte effettuate in fase di generazione degli
script.
$rs_master = $conn->execute("SELECT * FROM users WHERE
$field_name_autoinc=$field_value_autoinc");
echo "MASTER DATA FIELD AUTOINC: $field_name_autoinc=$field_value_autoinc"."<BR/>";
echo "MASTER DATA ON FIELD #1: ".$rs_master->fields[1]."<BR/>";
echo "<BR/>";
echo "<BR/>";
La variabile $rs_master conterrà tutto il contenuto del record attivo. Notate le due variabili delle
clausola WHERE.
echo $rs_master->fields[1];
qui si stampa il contenuto del campo numero 1 del record precedentemente acquisito in $rs_master.
if ($table_master_details == true)
{
$sql = "SELECT * FROM WHERE id_child = $field_value_autoinc ORDER BY 1";
$rs_details = $conn->execute($sql);
if ($rs_details)
{
echo "SCAN DETAILS TABLE $dbtable_login: "."<BR/>";
$rs_details->movefirst();
while (!$rs_details->EOF)
{
# ---------------------------# Insert Code Here for details
echo $rs_details->fields[1]."<BR/>";
# ---------------------------$rs_details->movenext();
10/14
PhpCodeWizard ver. 2.0
}
}
}
else
{
echo "NOT EXISTS DETAILS TABLE<BR/>";
}
?>
<script language="javascript">window.location.href="adminusers_grid_index.php"</script>
Con queste righe di codice, solo se la tabella contiene dei dettagli, vengono stampate le
informazioni contenute nel campo numero 1 (della tabella dettagli) effettuandone una scansione
completa come da query $sql = "SELECT * FROM …. WHERE id_child = $field_value_autoinc
ORDER BY 1";
GESTIONE EVENTI
Il file table_engine.php, include la libreria prototype in JavaScript scritta da Sam Stephenson.
Tale libreria contiene oggetti e funzioni di grande utilità per aumentare lo sviluppo e la produttività.
L’operazione di inclusione della libreria ProtoType è effettuata dalla seguente riga di codice:
<script src="include\lib\prototype.js"></script>. E’ importante sottolineare che, i tag <script> e
</script> insieme al loro contenuto vanno inseriti sempre fra i tag <head> e </head>.
Ho pensato di collegare l’evento di fine caricamento della pagina table_engine.php, lasciando poi al
programmatore la gestione di tale evento:
<script>
Event.observe(window, 'load', MessageLoad, false);
function MessageLoad()
{
/* Evento Invocato quando la pagina ‘table_engine.php’ è stata caricata */
}
</script>
Oltre alla libreria ProtoType è inclusa tutta la libreria di gestione degli effetti ScriptAculous . Vista
la dimensione di queste librerie, non basterebbe un intero libro per analizzarle entrambe in dettaglio,
pertanto, per comprendere al meglio tutti i segreti di queste due librerie potete fare riferimento alle
API Docs che troverete sul sito ufficiale, intanto per divertirsi un po’ con tali strumenti potete
cliccare sul link situato in basso al frame sinistro. E’ possibile, quindi, inserire del codice negli
script di phpcodewizard per migliorare gli effetti visivi di alcune azioni come ad esempio la
cancellazione di un record.
GESTIONE TEMPLATE
Il framework incorpora, per la gestione dei template, smarty; uno dei più diffusi motori di template
per PHP, il quale fornisce un modo semplice per separare la logica dell’applicazione dal contenuto
della sua presentazione, in tal modo gli script generati saranno indipendenti dal layout.
I files …_template.php e smarty\phpcodewizard\templates\…_template.tpl generate
automaticamente dal framework implementano tale automatismo.
Il primo file crea e passa le variabili al template, (tale file non è quasi mai da modificare). Il file con
estensione .tpl , contiene tutta l’architettura del template. E’ consigliabile consultare il manuale di
smarty per gestire e personalizzare il layout.
11/14
PhpCodeWizard ver. 2.0
Esempio di …_template.php:
<?php
$Stato = "";
$rs_master = array();
$rs_details = array();
$rs_master = array();
$rs_details = array();
$sql = "";
ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.'../smarty/libs');
define('SMARTY_DIR','smarty/libs/');
require(SMARTY_DIR.'Smarty.class.php');
include_once('config.inc.php');
include_once('gestione_del_personaleuffici_dbconnection.php');
include_once('gestione_del_personaleuffici_config.php');
$database_login = "gestione_del_personale";
$dbtable_login = "uffici";
$conn = ADONewConnection($dbtype);
if (!($conn->connect($dbhost,$dbusername,$dbpassword,$dbname)))
{
$Stato = "Errore di Connessione al Database.";
}
$rs_master = $conn->execute("SELECT * FROM uffici WHERE
$field_name_autoinc=$field_value_autoinc");
if ($table_master_details == true)
{
$Stato = "";
$sql = "SELECT * FROM WHERE id_child = $field_value_autoinc ORDER BY 1";
$rs_details = $conn->execute($sql);
}
$smarty = new Smarty;
$smarty->template_dir = "smarty/phpcodewizard/templates/";
$smarty->compile_dir = "smarty/phpcodewizard/templates_c/";
$smarty->config_dir = "smarty/phpcodewizard/configs/";
$smarty->cache_dir = "smarty/phpcodewizard/cache/";
$smarty->caching = false;
$smarty->clear_all_assign();
$smarty->assign("Stato",$Stato);
$smarty->assign("RecNoMaster",$rs_master->recordcount());
$smarty->assign("DataSetMaster",$rs_master->fields);
$smarty->assign("field_value_autoinc",$field_value_autoinc);
$t = fopen("1246870840.var","w");
fwrite($t,$field_value_autoinc);
fclose($t);
if ($table_master_details == true)
{
$smarty->assign("HasDetails",true);
$smarty->assign("RecNoDetails",$rs_details->recordcount());
$smarty->assign("DataSetDetails",$rs_details->fields);
}
12/14
PhpCodeWizard ver. 2.0
else
{
$smarty->assign("HasDetails",false);
}
$smarty->assign("sql",$sql);
$smarty->display("gestione_del_personaleuffici_template.tpl");
?>
Esempio di smarty\phpcodewizard\templates\…_template.tpl:
{* Smarty *}
{$smarty.now|date_format:"%A, %B %e, %Y"}<br/>
{$smarty.now|date_format:"%H:%M:%S"}<br/>
<font color="red">{$Stato}</font><br/>
{php}
include_once('config.inc.php');
include_once('gestione_del_personaleuffici_dbconnection.php');
include_once('gestione_del_personaleuffici_config.php');
$conn = ADONewConnection("mysql");
$conn->connect("127.0.0.1","root","","gestione_del_personale");
{/php}
<br/><b>Record Master.</b><br/>
{foreach key=MasterKey item=MasterItem from=$DataSetMaster}
{if $MasterKey >= 1}
{$MasterKey} : {$MasterItem}<br/>
{/if}
{/foreach}
{if $HasDetails}
<br/><b>Records Details.</b><br/>
{php}
$t = fopen("1246870840.var","r");
$id = fread($t,1000);
fclose($t);
$sql = "SELECT * FROM WHERE id_child = $id ORDER BY 1";
$rs_details = $conn->execute($sql);
if ($rs_details)
{
$rs_details->movefirst();
while (!$rs_details->EOF)
{
# ---------------------------# Insert Code Here for details
# ---------------------------echo $rs_details->fields[1]."<br/>";
echo $rs_details->fields[2]."<br/>";
echo $rs_details->fields[3]."<br/>";
$rs_details->movenext();
13/14
PhpCodeWizard ver. 2.0
}
}
unlink("1246870840.var");
{/php}
{/if}
WEB TOOLS
Alla fine del file Navigator.php ci sono delle righe di codice commentate. Questo codice fornito da
www.paginainizio.com permette di inserire dei web tools gratuiti (max 4) tra cui:
Orologio Digitale, Box lettura Quotidiani, Web Chat, BOX Radio per ascolto radio On Line.
All’indirizzo www.paginainizio.com è possibile sceglierne di altri, come ad esempio Cartoline
Multimediali, Banner ecc…
CONCLUSIONI
E’ da qualche anno ormai che abbondano in rete sigle come ORM ed MVC (Model - View Controller), molti framework per lo sviluppo RAD come Codeigniter e RAILS ne fanno largo uso.
Tali tecnologie agevolano notevolmente il lavoro dei programmatori semplificando lo sviluppo e la
creazione di applicazioni Web. Per utilizzare tali framework occorre un requisito fondamentale; la
conoscenza di un linguaggio di programmazione. PhpCodeWizard è l’unico framework esistente,
che permette a programmatori e non, di impiantare un’applicazione web da zero in soli 5 passaggi,
facendoci risparmiare così tempo e denaro.
Con PhpCodeWizard ogni progetto creato può essere modificato e gestito direttamente via web
senza dover ogni volta scaricare gli script aggiornati. In sostanza PhpCodeWizard gestisce i dati
come i CMS gestiscono i contenuti, cioè via web e senza mettere mano al codice.
PhpcodeWizard è un framework in continua evoluzione, pertanto, consultate spesso il sito
all’indirizzo www.phpcodewizard.it per scaricare l’ultimo aggiornamento disponibile.
Sperando di aver realizzato cosa gradita vi saluto in attesa di un vostro parere su tale prodotto, e
ringrazio anticipatamente chiunque voglia diffondere e migliorare tale progetto.
RISORSE
 OverLIB – Libreria di gestione e configurazione dei popup gestibili tramite smarty. La
home page di OverLIB è : www.bosrup.com/web/overlib.
 AdoDB – Libreria che gestisce l’astrazione ai database. La home page di AdoDB è:
http://php.weblogs.com/adodb.
 Prototipe e script.aculous – Libreria di gestione effetti tramite javascript e AJAX. La home
page è: http://wiki.script.aculo.us/scriptaculous/show/unittesting ,
http://www.prototypejs.org.
 Rico – Libreria di gestione effetti e suoni tramite AJAX. La sua home page è
http://openrico.org.
CONTATTI
Home Page: www.phpcodewizard.it
e-mail:
[email protected]
14/14
Scarica