|
L'objectiu d'aquesta pràctica és donar a conèixer
algunes de les opcions disponibles en la llibreria ADODB relacionades
amb menús dinàmics i automatizació de presentació
de dades per pantalla.
|
|
|
|
També tractarem l'exportació de dades a altres
formats estàndards. |
|
|
|
Utilitats vàries |
|
|
|
Menús i bases de dades
|
|
|
|
Hi ha un funció de l'objecte ADORecordSet que és
capaç de crear un menú a partir de les dades extretes d'una
consulta de dos camps, ja que presenta en el menú el contingut de
la primera columna, i ens retorna el valor de la segona columna dels valors
escollits. En el cas que les dades extretes només continguin una
columna, aquesta és la que es visualitza i s'envia. |
|
|
|
GetMenu($nom_menu,$opc_selec,$blanc,$selec_mult,$quants,$atributs); |
|
|
|
Aquesta funció genera un menú HTML del tipus
( <Select><Option>..</Select> ), i podem passar-li força
paràmetres a fi de personalitzar-la, i són els seguents: |
|
|
|
- Nom del menú. Indiquem el nom que assignem
a la finestra de menú. A més també serà el nom de l'array on ens retorna les dades seleccionades per l'usuari.
- Opcions de selecció. Definim si volem opcions
marcades per defecte activades, en el cas que la selecció múltiple
estigui activada, podem passar un array amb els valors activats
per defecte.
- Blanc . Valor lògic per activar una opció
en blanc dins del menú, o només deixar seleccionar els
valors de la consulta.
- Selecció múltiple. Valor lògic
que permet o inhabilita la selecció múltiple. En cas d'estar
activada, podem seleccionar diferents opcions utilitzant les tecles
de CTRL i SHIFT, igual que les seleccions en l'entorn
Windows.
- Quants. Establim quina amplada té la finestra
de selecció, en el cas de valer 0, el que ens crea és
una finestra desplegable.
- Atributs. Podem afegir altres atributs al menú,
com poden ser funcions del JavaScript, estils, comportaments...
|
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 5 Pràctica: 4 Fitxer: m5p41.php
* Autor: D116 Data:
* Descripció: Exemple de creació d'un menú GETMENU
d'ADOB
* Pre condi.: ADODB,BD tutoria, fitxer de connexió tutoria_con.php
* Post cond.: Es crida a si mateix
-----------------------------------------------------------------*/
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html><head>
<title>Mòdul 5 Pràctica 41</title>
</head><body>
<!-- Creem un formulari que quan prememem Enviar
es crida a si mateix (m5p41.php) -->
<form name="Menu_1" method="post" action="m5p41.php">
<?php
include("../adodb/adodb.inc.php");
include("./connexio/tutoria_con.php");
$sql="select codi,cognom1 from professor";
$recordSet =$ConTut->Execute($sql)or DIE($ConTut->ErrorMsg());
if (!$recordSet->EOF){
$nom_menu='Menu_1'; // Nom del menú.
$opc_selec=array('CS-DBG','CN-RAM'); // Opcions marcades per defecte
$blanc=True; // La primera opció en blanc?
$selec_mult=True; // Permet selecció multiple amb CTRL/SHIFT
$quants=8; // Opcions visualitzades. Tamany finestra visual
$atributs=''; // afegeix atributs a la comanda SELECT del menú
// es poden afegir events, jscript...
if (isset($_POST['Menu_1'])) {
print '<h3> Valors retornats per la variable Menu_1 :</h3> ';
print_r($_POST['Menu_1']); //Visualitza l'array retornat
print '<BR><BR>';
// Retorna a la variable nom_menu, un array amb el contingut del
// contingut del segon camp. En aquest cas ens retorna 'cognom1'
// de les opcions escollides.
}
print $recordSet->GetMenu($nom_menu,$opc_selec,$blanc,$selec_mult,
$quants,$atributs);
}
$recordSet->Close();
$ConTut->Close();
?>
<input type="submit" name="enviar" value="Enviar">
</form>
</body>
</html>
|
|
Llistat 5.4.1. Codi fitxer m5p41.php |
|
|
|
Si executeu el codi següent, podreu visualitzar les
dades que retorna. És interessant observar que en el cas de selecció
múltiple retorna un array amb tantes posicions com seleccions
s'han activat. Aquesta funció és una virtut més dels
arrays associatius. |
|
|
|
Funcions automatizades de visualització |
|
|
|
Hi ha una funcio inclosa en el paquet de l'ADODB, desenvolupada
en el fitxer 'tohtml.inc.php', anomenada 'rs2html( )', que converteix les
dades contingudes en un objecte RecordSet en una taula Html. |
|
|
|
rs2html($RecodSet,$Atrib_Taula,$Nom_Col,$Car_Especials) |
|
|
|
Els paràmetres que hi podem passar són els
següents: |
|
|
|
- RecodSet. Objecte que conté les dades que
s'han de presentar.
- Atributs de taula. Propietats gràfiques
de la taula.
- Nom de les columnes. Ens permet definir un array
amb el contingut del títol de les columnes. En cas de no
passar-l'hi, utilitza el nom del camp que consta a la BD.
- Caràcters especials. Habilita la funció
'htmlspecialchars' del PHP per incloure caràcters d'escapament
i de conversió de signes per visualitzar-los en HTML.
|
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 5 Pràctica: 4 Fitxer: m5p42.php
* Autor: D116 Data:
* Descripció: Exemple de visualització. RS2HTML() d'ADOB
* Pre condi.: ADODB,BD tutoria, fitxer de connexió tutoria_con.php
* Post cond.:
-----------------------------------------------------------------*/
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html><head>
<title>Mòdul 5 Pràctica 42</title>
</head><body>
<?php
include("../adodb/adodb.inc.php");
include("../adodb/tohtml.inc.php");
include("./connexio/tutoria_con.php");
$sql="select codi,nom,cognom1,email, anybaixa from professor";
$RS =$ConTut->Execute($sql)or DIE($ConTut->ErrorMsg());
if (!$RS->EOF){
$Atrib_Taula=" width= '100%' border ='3' cellpadding='3'
cellspacing='5' bgcolor='#FFCC66' bordercolor='#0000FF'";
$Nom_Colum=array('Codi','Nom','Cognom','Adreça electrònica',
'Any de baixa');
$Carac_html=False;
// Automatizació de visualització
rs2html($RS,$Atrib_Taula,$Nom_Colum,$Carac_html);
}
$RS->Close();
$ConTut->Close();
?>
</body>
</html> |
|
Llistat 5.4.2. Codi fitxer m5p42.php |
|
|
|
Tots el paràmetes d'aquesta funció són
opcionals, excepte el primer, que identifica el conjunt de registres que
s'ha de representar. |
|
|
|

Figura 5.4.1. Resultat execució fitxer m5p42.php
|
|
|
|
Seria molt interessant que visualitzessiu el codi d'aquesta
funció, que es troba a la carpeta 'adodb' amb el nom de 'tohtml.php'. |
|
|
|
Altres automatizacions de visualització de dades |
|
|
|
A la carpeta ADODB hi ha un fitxer anomenat 'adodb-pager.inc.php',
on es defineix la classe 'PAGER'. Aquesta classe utilitza la funció
'rs2html', però és capaç de paginar les dades visualitzades,
i ofereix una parametrització més acurada.(Per informació
de classes i objectes podeu consultar: Document
d' introducció a les classes i objectes en php )  |
|
|
|
El format del constructor és: |
|
|
|
ADODB_Pager($Adodb_Connexio,$sql,$id = 'adodb') |
|
|
|
Hi hem de passar, en primer lloc, un objecte de connexió,
la sentència SQL que volem executar, i un identificatiu de l'objecte
'Pager' creat; aquest últim paràmetre no és necessari,
ja que n'agafa un per defecte. Només seria necessari en el cas que
en la mateixa pàgina web tinguéssim diferents objectes 'Pager'. |
|
|
|
A la taula següent podem observar les propietats que
podem parametritzar: |
|
|
|
|
|
id |
Identificador únic de l'objecte ADODB_Pager |
db |
Objecte connexió que utilitzarà l'ADODB_Pager |
sql |
Sentència SQL per filtrar les dades que s'han de visualitzar |
rs |
Objecte Recordset generat per l'ADODB_Pager |
curr_page |
Valor de la pàgina visualitzada |
rows |
Nombre de files que s'han de visualitzar per pàgina |
linksPerPage |
Nombre màxim d'enllaços a altres pàgines |
showPageLinks |
Habilita la visualització dels enllaços |
gridAttributes |
Atributs HTML de disseny de la taula que s'ha de visualitzar |
first |
Símbol, text o gràfic a visualitzar per la incona
Anar al primer... |
prev |
Símbol, text o gràfic a visualitzar per la incona
Anar a l'anterior... |
next |
Símbol, text o gràfic a visualitzar per la incona
Anar al pròxim... |
last |
Símbol, text o gràfic a visualitzar per la incona
Anar a l'últim... |
moreLinks |
Símbol, text o gràfic a visualitzar per la incona
Més enllaços superiors |
startLinks |
Símbol, text o gràfic a visualitzar per la incona
Més enllaços inferiors |
htmlSpecialChars |
Habilita la funció del PHP per convertir símbols a
codi HTML |
page |
Text a visualitzar quan informa de les pàgines (ex.: 'Plana.-') |
linkSelectColor |
Color d'enllaços seleccionats |
cache |
Temps en segons que utilitzarà per al CachePageExecute |
|
|
Figura 5.4.2. Propietats classe
ADODB_Pager |
|
|
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 5 Pràctica: 4 Fitxer: m5p43.php
* Autor: D116 Data:
* Descripció: Exemple de visualització. RS2HTML() d'ADOB
* Pre condi.: ADODB,BD tutoria, fitxer de connexió tutoria_con.php
* Post cond.:
-----------------------------------------------------------------*/
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html><head>
<title>Mòdul 5 Pràctica 43</title>
</head><body>
<?php
include("../adodb/adodb.inc.php");
include_once('../adodb/adodb-pager.inc.php'); // ADODB_PAGER
require("./connexio/tutoria_con.php");
$sql="select codi,nom,cognom1,email, anybaixa from professor";
// ---- Creem l'objecte del tipus ADODB_Pager.
$pager1 = new ADODB_Pager($ConTut,$sql);
// ---- icones, texte o signes del les icones de moviment
$pager1->first= '<img src="./First.gif" width="18" height="13">';
$pager1->prev = '<img src="./Previous.gif" width="18" height="13">';
$pager1->next = '<code>>></code>';;
$pager1->last = '<code>>|</code>';
$pager1->moreLinks = '....Més planes.';
$pager1->startLinks = 'Més pàgines....';
$pager1->page ='plana .- ';// Descripció peu tabla pàgina
x de n.
// ----Habilita la funció de visualització de les planes
(True,False)
$pager1->showPageLinks = True;
$pager1->linkSelectedColor = "red"; // Color link seleccionat.
$pager1->htmlSpecialChars = True;
// ------- màxim nombre d'enllaços de planes visibles
$pager1->linksPerPage = 5;
//------ Característiques HTML de la taula
$pager1->gridAttributes = " width= '100%' border ='3' cellpadding='3'
cellspacing='5'bgcolor='#FFCC66' bordercolor='#0000FF'";
$pager1->gridHeader=array('Codi Prof.','Nom', 'Cognom',
'Correu electrònic','Any de Baixa');
$pager->cache = 60;
//------ Crea la pantalla a visualitzar
$pager1->Render($rows=4); // Nombre de files a visualitzar per plana
$ConTut->Close();
?>
</body>
</html> |
|
Llistat 5.4.3. Codi del fitxer m5p43.php |
|
|
|

Figura 5.4.3. Resultat execució m5p43.php
|
|
|
|
Exportació de dades |
|
|
|
Hi ha una funció inclosa en el paquet de l'ADODB,
desenvolupada en el fitxer 'toexport.inc.php', que automatitza l'exportació
de dades en format CSV o amb un fitxer delimitat per tabuladors. A la capçalera
d'aquest fitxer trobareu els paràmetres de funcionament. També
permet fer l'exportació directa a un fitxer. |
|
|
|
<?php
/*-----------------------------------------------------------------
* Mòdul: 5 Pràctica: 4 Fitxer: m5p44.php
* Autor: D116 Data:
* Descripció: Exemple de serialització de dades.ADODB.
* Pre condi.: ADODB,BD tutoria, fitxer de connexió tutoria_con.php
* Post cond.:
-----------------------------------------------------------------*/
?>
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html><head>
<title>Mòdul 5 Pràctica 44</title>
</head><body>
<?php
include("../adodb/adodb.inc.php");
include("../adodb/toexport.inc.php");
include("./connexio/tutoria_con.php");
$sql="select codi,nom,cognom1,email, anybaixa from professor";
$RS =$ConTut->Execute($sql)or DIE($ConTut->ErrorMsg()) ;
if (!$RS->EOF){
print "<pre> <hr> <h2> Format de sortida CSV </h2> <BR>";
print rs2csv($RS); // Retorna una cadena
print '<hr> <h2> Format de sortida amb Tabuladors </h2> <BR>';
$RS->MoveFirst(); // Ens posicionem al primer registre de nou
print rs2tab($RS); // Retorna una cadena
print '<hr><h2> Format sortida Tabuladors a sortida estàndard
</h2> <BR>';
$RS->MoveFirst();
rs2tabout($RS); // direcciona el resultat cap a la sortida estandard
// pantalla, fitxer, impressora, .....
print "</pre>";
}
$RS->Close();
$ConTut->Close();
?>
</body>
</html> |
|
Llistat 5.4.4. Codi fitxer m5p44.php |
|
|
|
Com hem comentat a l'inici del capítol, podríem
anar exemplificant utilitats d'aquesta llibreria, i ens faltaria curs per
desenvolupar-les tots. Creiem que en aquestes alçades del mòdul
ja teniu una idea bastant formada de la utilitat d'aquesta capa d'abstracció. |
|
|
|
Us encoratgem a anar descobrint més utilitats, però si decidiu
incorporar aquesta llibreria als vostres projectes, consulteu els fitxers
'readme.htm'
i 'tute.htm' de la distribució. |
|
|
|
Respecte a les classes , objectes, mètodes i propietats
d' ADODB podeu consultar la següent adreça. |
|
|
|
|
|
|
|
Respecte a la exportació a XML, hi ha
molta documentació, en el mateix ADODB trobareu contribucions i
fitxers realionats amb aquest tema. També podeu trobar una funció compatible
amb
l'ADODB, anomenada rs2xml(). |
|
|