classe bd_tabella implementa Selezione,ListaCampi
{
Alias(); &
Azzera();
Aggiorna($valori, $bUsaNomiHTML=FALSO, $bStampa=FALSO);
AggiornaTimbro($indice, $bStampa=FALSO);
AggiungiChiavi();
AggiungiCond($nCampo, $cond);
AggiungiSolo($sQuali, $vCond);
AggiungiTutto(&$vCond);
AumentaSessione($nMinDurata, $nColFV=1);
CalcolaIndiciSelezione(); &
CambiaTipo($iCampo, $nuovoTipo);
CampiNascSel(&$tab, $vParam, $classe); &
CampiChiave(); &
Campo($i); &
Chiave($nCampo);
Chiavi();
CreaSessione($nMinDurata, $vValori, $nColID=0, $nColFV=1);
DaRaggruppare();
Duplicati($bPermetti=NULL);
Elimina(&$condizione, $stampa);
Esporta(); &
Espressione($id, &$nome, &$cond, ...);
FormatoCondizione();
GestisciEventi(&$valoriAggiuntivi, $bStampa=FALSO);
ImpChiave(&$v);
Importa(&$bd, &$stringone);
IndiceCampo($nCampo);
ImpVisibile($nCampo, $bool=VERO);
Inserisci(&$vValori, $bUsaNomiHtml=VERO, $bStampa=FALSO);
InserisciPerIndice(&$vValori, $bStampa=FALSO);
Max($iCampo, &$vCond, $bStampa);
NomeTab(); &
NomiCampi($bCorto=VERO); &
NumCampi();
NumCampiVisibili($formato);
NumChiavi();
NumMaxRighe($numero);
Ordine($nCampo=NULL, $bDec=FALSO); &
PrendiDescrizione($chiave, $tipologia, $lingua='it'); &
PrendiFiltri(); &
PrendiRiga($vValChiavi, $bStampa); &
PrendiValore($vValChiavi, $nCampo); &
RinnovaSessione($nMinDurata, $vValori, $nColValido=2, $nColID=0, $nColFV=1);
Seleziona($indice=0, $azzera=VERO, $stampa=FALSO);
SelezionaValore($indice=0, $azzera=VERO, $stampa=FALSO);
SessioneValida($nColValido=2, $nColFV=1);
Sql(); &
StampaStruttura();
TogliCond();
Validita($data);
VettCampi(); &
}

define('TAB_NOME_MODIFICA', 1);
define('TAB_NOME_INSERISCI', 2);
define('TAB_NOME_ELIMINA', 3);
define('INDICE_CONDIZIONE', 'condizione');
define('INDICE_CFG_DESCR_INT', 0);
define('INDICE_CFG_CHIAVE_INT', 1);
define('INDICE_CFG_TIPO_INT', 2);
define('INDICE_CFG_LINGUA_INT', 3);
define('SEP_CHIAVI_RIGA', '^');
define('SEP_CHIAVI_TABELLA', '§');
define('SEP_CHIAVI_VALORE', '#');
define('NUOVA_CHIAVE', 'autoincremento'); //indice valorizzato dal metodo @#Inserisci con la chiave generata
define('TIMBRO_CREA', 'crea');
define('TIMBRO_AGG', 'aggiorna');
define('__STRATEGIA', 'strategia'); //indice del vettore autoincremento per specificare la strategia di calcolo della nuova chiave
define('STRAT_MAX', 'max');
define('STRAT_SERIE', 'serie');

privato costruttore(&$basedati, &$sNomeTab, &$alias)

Azzera()

Duplicati($bPermetti=NULL)

AggiungiTutto($vCond=array())
le condizioni contenute in $vCond vengono aggiunte all'insieme delle condizioni correnti.

AggiungiChiavi()
Aggiunge all'elenco dei campi da selezionare i campi chiave della tabella.

AggiungiSolo($sQuali, $vCond=NULL)
$sQuali può essere un intero che indica l'indice del campo da includere nella selezione, un vettore di interi con gli indici dei campi campi da includere oppure una stringa composta da S, N o spazi: gli spazi vengono ignorati, una S vuol dire che il campo verrà incluso nella selezione.
Se $sQuali è un intero allora $vCond è un singolo oggetto operr , se invece è una stringa allora $vCond deve essere un vettore che associa all'indice del campo l'oggetto operr da applicare.
Se l'intero passato è negativo, non verrà aggiunto nessun campo e nessun errore verrà mostrato all'utente. Utile se si sta usando il metodo vista::Aggiungi

privata TrasformaStringaSNInVettore(&$stringa) &
Trasforma la $stringa composta da 'S', 'N', ' ', passata ad aggiungiSolo in un vettore di indici di campo.
lancia un'eccezione se non sono stati specificati tutti i campi

AggiungiCond($nCampo, $cond)
Aggiunge all'insieme delle condizioni correnti la condizione indicata, sul campo indicato. $nCampo è l'indice del campo nella tabella con base 0
Ad ogni campo può essere associato un solo filtro, quindi se sul campo passato c'è già un filtro applicato, questo viene sovrascritto.

Validita($data)
Aggiunge all'insieme delle condizioni correnti una condizione sulla validità delle righe selezionata.
Tale condizione assicura che la data passata sia compresa tra i campi configurati nella variabile globale $__validita che deve essere definita manualmente come un vettore associativo nomeTabella--(campoDataIn,campoDataFine)
La data può essere espressa come valore fisso in formato AAAA-MM-GG, come indice di campo della tabella o come oggetto Campo (appartenente anche ad altre tabelle presenti nella stessa vista) da cui pescare i valori da confrontare.

PrendiFiltri() &
Ritorna un vettore associativo indiceCampo=>Filtro applicato

TogliCond()
toglie tutte le condizioni impostate sulla tabella, anche quelle automatiche.

Espressione($id, &$nome, $cond)
Aggiunge all'insieme dei campi corrente un'espressione SQL
$id rappresenta una delle costanti ESPR_SQL_* e indica l'operazione da applicare.
Ad essa possono essere passati un numero variabile di argomenti che vanno inseriti dopo il parametro $cond.
I parametri possono essere:
- delle costanti, passate come valori o variabili php
- dei riferimenti a campi o espressioni della tabella costruiti con la funzione c(...);
- degli operatori per parametri booleani, si veda operr e questi vengono applicati al riferimento di campo immediatamente precedente.
$nome rappresenta l'alias dell'espressione. È importante notare che il metodo html/protoh::PrendiVisCampo torna un controllo il cui nome è quello del campo (od alias dell'espressione) preceduto da un _ (underscore). Questo per evitare sovrapposizioni non volute con i parametri interni di navigami. Se, invece, si volesse effettuare questa sovrapposizione utilizzare le costanti TAB_NOME_* per valorizzare il parametro $nome.
Se il nome non inizia con - dopo l'inserimento dell'espressione verrà creata una costante chiamata $nome che vale l'indice dell'espressione nella tabella.
Se $nome inizia per _ l'espressione non sarà inclusa nella selezione, ma potrà solo essere usata per costruire espressioni più complesse.
Se il parametro $cond è non nullo allora all'espressione indicata verrà applicato il filtro opportuno.

NumMaxRighe($numMaxRighe)

ImpVisibile($nCampo, $bool=VERO)

CambiaTipo($nCampo, $tipo)
Converte i valori contenuti nel campo indicato nel tipo indicato.
$tipo deve essere una costante di quelle elncate in bd/campo.

ImpChiave(&$vChiavi)
Forza navigami a considerare come campi chiave della tabella, quelli indicati.
Il parametro è un vettore di indici base 0.

deprecata CalcolaSchema(&$formato, &$vParam, $nRighe=1, $bIntestazione=VERO)

deprecata PrendiSchema($nRighe=1) &

deprecata PubblicaInHtml(&$phSchema, $posizione=0, $azzera=VERO)

Seleziona($posizione=0, $azzera=VERO, $stampa=FALSO)
$posizione indica il numero di riga su cui posizionarsi, utile per las paginazione
$azzera indica di riportare l'oggetto allo stesso stato in cui si trovava subito dopo essere stato creato, in particolare verranno persi i filtri, le espressioni e ogni altra impostazione
$stampa indica di stampare a video l'SQL generato, utile in fase di prova
torna un oggetto di tipo motore.vphp#dati;

Sql() &

locale Conta(&$condizione)
conta le righe che soddisfano la condizione indicata.
la condizione deve essere specificata con lo stesso formato del metodo Elimina

SelezionaValore($posizione=0, $azzera=VERO, $stampa=FALSO) &
Esegue un'interrogazione sulla tabella e ritorna il valore del primo campo presente nella prima riga.

PrendiValore($vValChiavi, $indiceCampo) &
Esegue un'interrogazione sulla tabella e ritorna il valore del campo indicato nella riga indicata dalla chiave primaria.
$vValChiavi è un vettore od un singolo valore della chiave primaria.

PrendiDescrizione($chiave, $tipologia, $lingua='it') &
Questo metodo suppone che la tabella su quale è invocato sia configurata come internazionale dal codice "chest".
Quindi deve essere stata definita una colonna descrittiva, una colonna tipologia, una chiave esterna ed una lingua.
Il metodo esegue un'interrogazione cercando nella tabella una descrizione che appartenga ad una riga che abbia le colonne configurate come chiave esterna e tipologia uguali a quelle passate come parametri. Per la lingua, invece, cerca prima quelle indicate dal navigatore e se non la trovasse cerca quella indicata dal parametro e se ancora non trova niente torna NULL.
NOTA: il metodo modifica lo stato dell'oggetto.

PrendiRiga($vValChiavi, $bStampa=FALSO) &
Esegue un'interrogazione sulla tabella e ritorna la riga da essa restituita.
$vValChiavi è un vettore od un singolo valore della chiave primaria.
Se la riga non esiste la funzione torna NULL.

Max($iCampo, &$vCond, $bStampa=FALSO)
ritorna il valore massimo presente nella tabella per l'indice di colonna, base 0, indicato.
Il parametro $vCond è un vettore di oggetti che rappresentano le condizioni di selezione.
NON cambia lo stato interno dell'oggetto.

AggiornaTimbro($indice, $bStampa=FALSO) /*---- Aggiorna all'istante attuale il campo timbro (timestamp) indicato dal parametro $indice.
Questo campo deve essere o di tipo intero (e contenere il numero di secondi trascorsi dal 1-1-1970) o di tipo timestamp. -

GestisciEventi(&$valoriAggiuntivi, $bStampa=FALSO) /*---- Gestisce gli eventi che si sono verificati.
Questo metodo verifica che in GET od in POST sia stata passata una variabile denominata elimina, inserisci o modifica; In questo caso intraprende l'azione opportuna fondendo il parametro $valoriAggiuntivi con le variabili generate dall'utente. In caso contrario non fa nulla.
Ritorna FALSO se nessuna azione viene intrapresa o se questa fallisce, VERO in caso di successo. -

Aggiorna(&$valori, $bUsaNomiHtml=FALSO, $bStampa=FALSO) /*---- Da un vettore nomecampo => valore aggiorna le righe indicate dalla cella $valori[INDICE_CONDIZIONE] e dai filtri impostati sull'oggetto.
questa è una stringa contenente i valori di tutte le chiavi di tutte le tabelle appartenenti alla tabella. Per separare i valori vengono usati i seguenti caratteri speciali:

Una stringa siffatta viene costruita usando vsprintf sul metodo FormatoCondizione e Chiavi e dallo script calcCondizione; in caso di necessità, ovviamente, è possibile costruirla manualmente, ma è indicato usare le costanti
SEP_CHIAVI_RIGA
SEP_CHIAVI_VALORE
Se il parametro $stampa è impostato a VERO, invece di eseguire il comando esso viene stampato. -

Inserisci(&$vValori, $bUsaNomiHtml=VERO, $bStampa=FALSO)
inserisce una riga con i valori indicati in $vValori. Questo deve essere un vettore associativo nomeControlloHtmlNavigami=>valore oppure nomeCampo=>valore. In quest'ultimo caso $bUsaNomeHtml deve essere impostato a FALSO.
Se una cella non esiste od è vuota nel campo corrispondente verrà inserito il valore per cui quel campo è stato filtrato nell'oggetto corrente, se non è filtrato verrà inserito il valore di default stabilito nella basedati.
$vValori può anche essere un oggetto di tipo tabella, in questo caso verranno inseriti i valori che sarebbero tornati dal metodo Seleziona, ma eseguendo un singolo comando INSERT INTO tabella(campi_visibili) SELECT.

privata InserisciSelezione(&$tabellaSorgente, $bStampa)

InserisciPerIndice(&$vValori, $bStampa=FALSO)
inserisce una riga con i valori indicati in $vValori. Questo deve essere un vettore indicizzato base 0 contenente i valori da inserire in tabella elencati nello stesso ordine cui i campi compaiono.
Se una cella non esiste od è vuota nel campo corrispondente verrà inserito il valore per cui quel campo è stato filtrato nell'oggetto corrente, se non è filtrato verrà inserito il valore di default stabilito nella basedati.
Gestisce i valori autoincrementanti.
Il chiamante trova il valore autoincrementato nella cella del vettore.
Torna VERO se l'inserimento è riuscito, FALSO altrimenti.

privata CalcolaAutoincremento(&$vValori, $bStampa)

privata CalcolaAutoIncrementoMax(&$vValori, $campo, $bStampa)

privata CalcolaAutoIncrementoSerie(&$vValori, $campo, $bStampa)

privata CompletaValoriInserimento(&$vValori)

Elimina(&$condizione, $stampa=FALSO)
Elimina le righe indicate da $condizione appartenenti all'utente navigami autenticato.
$condizione è una stringa contenente i valori di tutte le chiavi di tutte le tabelle appartenenti alla tabella. Per separare i valori vengono usati i seguenti caratteri speciali:

Una stringa siffatta viene costruita usando vsprintf sul metodo FormatoCondizione e Chiavi e dallo script calcCondizione; in caso di necessità, ovviamente, è possibile costruirla manualmente, ma è indicato usare le costanti
SEP_CHIAVI_RIGA
SEP_CHIAVI_VALORE
Se il parametro $stampa è impostato a VERO, invece di eseguire il comando esso viene stampato.

privata CalcolaCondizione(&$condizione) &

TrasformaCondizioneInSQL(&$condizione) &

StampaStruttura()
Stampa una tabella HTML indicante la struttura della tabella SQL

CalcolaIndiciSelezione() &
Torna un vettore che associa ad ogni indice del vettore risultato della singola riga selezionata l'indice del vettore campi da cui deriva serve per la classe html/espansione

NumCampi()
Lavora in tempo costante

NumCampiVisibili(&$formato)
Lavora in tempo lineare. $formato va passato pari a v()

NumChiavi()

Ordine($nCampo=NULL, $bDec=FALSO) &
Se $nCampo viene specificato esso viene aggiunto all'elenco dei campi utilizzati per l'ordinamento; altrimenti viene ritornata la clausola da mettere dopo la parola chiave ORDER BY in una interrogazione SQL.

FormatoCondizione($base=0) &
Ritorna il formato da passare a vsprintf per ottenere la condizione che consente di identificare la riga.
È responsabilità del programmatore accertarsi che tutti i campi chiave effettivamente utili siano stati inseriti nella lista di selezione.
Il parametro $base è per solo uso interno.

CampiNascSel(&$tab, $vParam) &

Campo($nCampo) &
Torna un oggetto di tipo campo che rappresenta il campo della tabella associato alla costante passata

IndiceCampo($nCampo)
torna $nCampo. vedere vista::IndiceCampo

VettCampi() &

CampiChiave() &
Ritorna il vettore degli oggetti campo che rappresentano la chiave

Chiave($nCampo)
Ritorna VERO se il campo indicato è chiave, FALSO altrimenti.

Chiavi($base=0)
Torna un vettore composto da tanti elementi quanti sono i campi chiave, ad ogni elemento è presente l'indice del relativo campo chiave nella tabella.
Il parametro $base è per solo uso interno.

NomiCampi($bCorto=VERO) &
Torna un vettore contente i nomi di tutti i campi della tabella. Se bCorto è vero, viene ipotizzato che il nome del campo abbia un prefisso del tipo xxx_ che viene tolto. Gli _ presenti vengono conertiti in spazi.

NomeTab() &
Ritorna un riferimento al nome della tabella.

Alias() &
Ritorna un riferimento all'alias specificato per la tabella.
Se non è stato speciicato alcun alias torna la stringa vuota.

Esporta() &
Ritorna un stringa che rappresenta lo stato interno dell'oggetto in modo che possa essere persistito tra due differenti sessioni.
Questa stringa può essere passata come parametro al metodo Importa

statica Importa(&$bd, &$stringone)
Ripristina lo stato dell'oggetto come descritto dal parametro.
Il parametro dovrebbe essere un valore tornato dal metodo Esporta.

statica, privata RipristinaNomi(&$bd, &$sezione)

privata RipristinaCampi(&$sezione)

privata RipristinaChiavi(&$sezione)

privata RipristinaOrdine(&$sezione)

privata RipristinaFiltri(&$sezioni)

locale UnificaVarGlob()

locale CampiVis()

locale NomiCampiVis() &

locale Gruppo($bForza=FALSO) &

locale DaRaggruppare()
Torna VERO se l'oggetto contiene un'espressione di gruppo.

locale Filtrata()

locale CondizioneSelezione($bUsaNomiLocali=FALSO) &

locale CondizioneGruppo($bUsaNomiLocali=FALSO) &

locale CondizioneSQL($bUsaNomiLocali, $bGruppo) &

locale PrendiNomeCampo($nCampo, $bUsaNomiHtml) &

locale PrendiNomeCampoLocale($nCampo, $bUsaNomiHtml) &

locale TutteCol()

privata InsOggettiCampo()

privata InsOggettoCampo(&$risCampi, $i)

privata AggiungiCondUtente(&$colonnaUtente, $valoreUtente)

privata AggiungiCampiNascosti(&$vParam, &$formato, $valoriDaEspandere)

locale PrendiBD() &

privata CalcolaOrdine() &

locale


costruttore($nCampo, $bDec)

Esporta() &

Importa(&$str)