Webs al punt: Premis 2017

Dos projectes de l’Institut Baix Camp de Reus han resultat guanyadors de les diverses categories del concurs Websalpunt.cat, que es basa en l’elaboració de llocs web per alumnes d’ESO, Batxillerat i Cicles Formatius. El nostre centre a aconseguit: el Premi de Batxillerat ha estat per l’Enric Masdeu i el Pau Miró, com a col·laborador, per la web delsbitsalsatoms.cat. En aquesta pàgina web és desenvolupa el treball de recerca de Batxillerat amb la fabricació d’una mà passiva i un braç robotitzat a partir de la impressió en 3D i Arduino.

L’altre premi, en la categoria Cicles Formatius de Grau Superior, ha estat pel projectehelix.cat, realitzat pel Sergio Aragón, amb col·laboració de l’Andrés Viñas i el Josep Lluís Figueras. Projecte Helix és un mini-joc de plataformes 3D amb HTML5, i ha estat programat amb Unity3D i C#. He tingut la sort de tutoritzar aquests projectes i tots els alumnes de CFGS, i el lliurament de premis serà el proper 26 de maig a Barcelona.

He tingut la sort de tutoritzar els 15 grups i 47 alumnes de Cicles Formatius de Grau Superior que s’han presentat projectes interesants.

Com treballar amb PHP i PDO

PHP i PDO

L’ús de PDO és la millor forma de treballar amb les nostres bases de dades PHP, és a dir, fer consultes per recuperar dades, inserir dades, esborrar-les…

PDO significa exactament “PHP Data Objects”, com veurem més endavant, es fa ús de la programació orientada a objectes per a PHP. El requeriment que tenim és que necesitem una versió superior o igual a la 5.1, però com crec lògic nosaltres utilitzarem una versió 7.0 o superior.

Historicament PHP ha tingut tres llibreries per connectar-se a MySQL: Mysql, Mysqli i PDO. Afortunadament a la nova versió 7.0 desapareix el connector mysql, un canvi que ens farà millorar la qualitat del nostre codi, ja que fa més de 10 anys que existeix el connector PDO. Si voleu veure les modificacions de PHP de la versió 5.6 a 7.0 http://php.net/manual/en/migration70.php

Per què PDO?

Aquesta és una pregunta comuna i crec que de senzilla resposta: TOT. M’explico, a través d’PDO pots gestionar 12 tipus diferents de bases de dades (Oracle, MySQL, SQLite, etc …), pots utilitzar consultes preparades amb etiquetes (ja veurem el final de l’article) i pots usar “Prepared statements”. Però el més important és la SEGURETAT que guanyes fent servir aquest “mètode”, en usar aquestes sentències preparades, que no són molt diferents al que s’aconsegueix a través de MySQL, usant mysql_real_escape_string ();.

No obstant això, com se sol dir, no tot són flors i violes, el rendiment és un 2,5% inferior a l’aconseguit a través d’MySQL, una cosa realment insignificant, però provem de ser objectiu i tot ha de ser dit.

 

Connectar-se a la base de dades

Per això, el primer serà crear la base de dades MySQL al servidor, jo he creat una base de dades anomenada “tutorialPDO” i he creat una taula que es digui “Usuaris”  amb dues columnes, un “Id” de tipus Int, 10 de longitud, clau primària i auto-va incrementar; la segona columna “Nom”, un VARCHAR de longitud 10:
Insertarem dos registres, amb els noms de Juan i Jordi.

Ara passem al que de veritat és objecte d’aquest tutorial, programar amb PHP:
Anem a veure com es fa una connexió a una base de dades amb MySQL normal (pre-historia):

Això és molt senzill de recordar, però amb PDO es fa d’una altra manera, que potser sembli una mica més complicat al principi però al cap ia la fi igual d’intuïtiva i igual que ho fem amb JAVA i JDBC:

Encara que sembli estrany realment és molt senzill: hem creat amb el “new” una instància de classe PDO (el que ens permetrà utilitzar diverses alhora), definim el tipus de base de dades amb “mysql:”, el servidor “localhost” ( en aquest cas), el nom de la base de dades “dbname = tutorialPDO”, i després usant variables (es pot fer sense), l’usuari i la contrasenya del servidor de base de dades.

Com pot haver-hi errors i hem de controlar-mitjançant l’ús de try … catch (…) {} de la següent manera:

D’aquesta manera es connecta a la base de dades i en cas que no pugui treu l’error amb una excepció., també podem fer la funció OR DIE de la sintaxi habitual de PHP i MySQL.

 

Consultes

D’aquesta és la forma en la qual no tindrem interacció amb la base de dades, només s’executarà la query i els possibles valors de retorn seran CERT o FALS, per identificar l’estat de l’execució de la query:

 

Ara realitzarem una consulta sobre la base de dades per retornar el Id de l’usuari Juan.

Aquest codi és un compendi de la majoria de funcionalitats de PDO.

Tenim un Prepared Statment amb etiquetes, que millora la llegivilitat respecte als interrogants.

El procés de bindParam el podem fer a traves d’un array indicant les parelles clau valor amb etiquetes i variables. També el podem fer etiqueta per etiqueta o amb ?.

Bolquem tot el resultat de la consulta en una variable amb el fetchAll(). També podem recuperar fila a fila amb l’instrucció fetch()