bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


Barra lateral

ASIX Administració de Sistemes Informàtics i Xarxes
Tots els mòduls del cicle
MP01 Implantació de sistemes operatius
Totes les UFs del modul
MP02 Gestió de bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Fonaments de maquinari
Totes les UFs del modul
MP06 Administració de sistemes operatius
Totes les UFs del modul
MP07 Planificació i administració de xarxes
Totes les UFs del modul
MP08 Serveis de xarxa i Internet
Totes les UFs del modul
MP09 Implantació d'aplicacions web
Totes les UFs del modul
MP10 Administració de sistemes gestors de bases de dades
Totes les UFs del modul
MP11 Seguretat i alta disponibilitat
Totes les UFs del modul
MP12 Formació i orientació laboral
Totes les UFs del modul
MP13 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP14 Projecte
Totes les UFs del modul
DAM Desenvolupament d’aplicacions multiplataforma
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació bàsica
Totes les UFs del modul
MP04 Llenguatges de marques i sistemes de gestió d'informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Accés a dades
Totes les UFs del modul
MP07 Desenvolupament d’interfícies
Totes les UFs del modul
MP08 Programació multimèdia i dispositius mòbils
Totes les UFs del modul
MP09 Programació de serveis i processos
Totes les UFs del modul
MP10 Sistemes de gestió empresarial
Totes les UFs del modul
MP11 Formació i orientació laboral
Totes les UFs del modul
MP12 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP13 Projecte de síntesi
Totes les UFs del modul
MPDual Mòdul Dual / Projecte
DAW Desenvolupament d’aplicacions web
Tots els mòduls del cicle
MP01 Sistemes informàtics
Totes les UFs del modul
MP02 Bases de dades
Totes les UFs del modul
MP03 Programació
Totes les UFs del modul
MP04 Llenguatge de marques i sistemes de gestió d’informació
Totes les UFs del modul
MP05 Entorns de desenvolupament
Totes les UFs del modul
MP06 Desenvolupament web en entorn client
Totes les UFs del modul
MP07 Desenvolupament web en entorn servidor
Totes les UFs del modul
MP08 Desplegament d'aplicacions web
Totes les UFs del modul
MP09 Disseny d'interfícies web
Totes les UFs del modul
MP10 Formació i Orientació Laboral
Totes les UFs del modul
MP11 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP12 Projecte de síntesi
Totes les UFs del modul
SMX Sistemes Microinformàtics i Xarxes
Tots els mòduls del cicle
MP01 Muntatge i manteniment d’equips
Totes les UFs del modul
MP02 Sistemes Operatius Monolloc
Totes les UFs del modul
MP03 Aplicacions ofimàtiques
Totes les UFs del modul
MP04 Sistemes operatius en xarxa
Totes les UFs del modul
MP05 Xarxes locals
Totes les UFs del modul
MP06 Seguretat informàtica
Totes les UFs del modul
MP07 Serveis de xarxa
Totes les UFs del modul
MP08 Aplicacions Web
Totes les UFs del modul
MP09 Formació i Orientació Laboral
Totes les UFs del modul
MP10 Empresa i iniciativa emprenedora
Totes les UFs del modul
MP11 Anglès
Totes les UFs del modul
MP12 Síntesi
Totes les UFs del modul
CETI Ciberseguretat en Entorns de les Tecnologies de la Informació
Tots els mòduls del cicle
CiberOT Ciberseguretat en Entorns d'Operació
Tots els mòduls del cicle
php_mysql

Utilitzant PHP amb MySQL

Per accedir a bases de dades des de PHP tenim bàsicament dos tipus de llibreries:

  • Llibreries particulars de cada BD: solen tenir funcions amb el nom de la BD com a prefix:
    • MySQL (lib mysqli_XXX) : mysqli_connect, etc.
    • Oracle (oci_XXX) : oci_connect, etc.
    • PostgreSQL (pg_XXX) : pgsql_connect, etc.
    • etc.
  • Llibreries PDO o PHP Database Objects (doc oficial): tenen el gran avantatge que ens permet canviar de tipus de BD a la que ens connectem sense alterar les funcions de connexió i llançament de queries. Les (petites) diferències entre unes i altres en el llenguatge SQL no ho solventa, però no és gaire problema ja que aquestes diferències solen ser poques.

Recursos:

  • Llibreries PDO en aquesta wiki.
  • Els exercicis tipus «fita» (a.k.a. «imperdonables») els teniu a Fites DAW MP07 UF3

Recursos

Amb funcions particulars mysqli_ :

Amb PDO:

PDO amb seguretat:


Utilitzant llibreria mysqli_

Per crear i importar la base de dades d'exemple pots consultar SQL creacio. Utilitzarem la BBDD d'exemple «World» que hi ha a la pàgina oficial de MySQL. La podeu descarregar d'aquí (n'hi ha d'altres):

https://dev.mysql.com/doc/index-other.html

Examineu a fons i proveu aquest codi:

access_mysql.php
<html>
 <head>
 	<title>Exemple de lectura de dades a MySQL</title>
 	<style>
 		body{
 		}
 		table,td {
 			border: 1px solid black;
 			border-spacing: 0px;
 		}
 	</style>
 </head>
 
 <body>
 	<h1>Exemple de lectura de dades a MySQL</h1>
 
 	<?php
 		# (1.1) Connectem a MySQL (host,usuari,contrassenya)
 		$conn = mysqli_connect('localhost','enric','enric123');
 
 		# (1.2) Triem la base de dades amb la que treballarem
 		mysqli_select_db($conn, 'world');
 
 		# (2.1) creem el string de la consulta (query)
 		$consulta = "SELECT * FROM city;";
 
 		# (2.2) enviem la query al SGBD per obtenir el resultat
 		$resultat = mysqli_query($conn, $consulta);
 
 		# (2.3) si no hi ha resultat (0 files o bé hi ha algun error a la sintaxi)
 		#     posem un missatge d'error i acabem (die) l'execució de la pàgina web
 		if (!$resultat) {
     			$message  = 'Consulta invàlida: ' . mysqli_error($conn) . "\n";
     			$message .= 'Consulta realitzada: ' . $consulta;
     			die($message);
 		}
 	?>
 
 	<!-- (3.1) aquí va la taula HTML que omplirem amb dades de la BBDD -->
 	<table>
 	<!-- la capçalera de la taula l'hem de fer nosaltres -->
 	<thead><td colspan="4" align="center" bgcolor="cyan">Llistat de ciutats</td></thead>
 	<?php
 		# (3.2) Bucle while
 		while( $registre = mysqli_fetch_assoc($resultat) )
 		{
 			# els \t (tabulador) i els \n (salt de línia) son perquè el codi font quedi llegible
  
 			# (3.3) obrim fila de la taula HTML amb <tr>
 			echo "\t<tr>\n";
 
 			# (3.4) cadascuna de les columnes ha d'anar precedida d'un <td>
 			#	després concatenar el contingut del camp del registre
 			#	i tancar amb un </td>
 			echo "\t\t<td>".$registre["Name"]."</td>\n";
 			echo "\t\t<td>".$registre['CountryCode']."</td>\n";
 			echo "\t\t<td>".$registre["District"]."</td>\n";
 			echo "\t\t<td>".$registre['Population']."</td>\n";
 
 			# (3.5) tanquem la fila
 			echo "\t</tr>\n";
 		}
 	?>
  	<!-- (3.6) tanquem la taula -->
 	</table>	
 </body>
</html>


Exercicis mysqli_

Exercicis de filtratge amb la BD «world».

Exercici 1

Amplia l'exemple de les ciutats amb la BBDD World de forma que puguem filtrar les ciutats mostrades amb un menú desplegable (SELECT).

Pàgina index.php:

  • Posa-li un títol H1 a la pàgina que digui literalment «Filtre de ciutats per país».
  • Comença per fer un llistat dels països utilitzant la taula COUNTRY.
  • Transforma-ho a un menú desplegable (dropdown menu) i que tingui el name=«codi_pais».
  • La FK que lliga la taula City i la taula Country és el CountryCode. El formulari SELECT (ja sigui desplegable o radio button) ha de mostrar el nom del país, però ha d'enviar el CountryCode com a value a través de GET o POST a la pagina 2.

Pàgina results.php:

  • Agafa el país enviat per l'usuari (GET o POST) i fes una query que filtri els resultats de la taula City i que només mostri les ciutats del país seleccionat.

Si fas servir Github Classroom amb Actions (autocorrecció), cal seguir les indicacions del professor perquè l'accés a la BD i als autotests sigui correcte.

  • Utilitza 127.0.0.1 enlloc de localhost.
  • Utilitza username admin i password admin123: si no tens creat l'usuari admin en local, crea'l i dona-li permisos per accedir a la DB world.
  • Utilitza el nom de la BD world

Exercici 2

Segona part:

  • Indica també el nom del país de la ciutat. No ens val el CountryCode, volem el nom del país literal (per exemple, no ens val «FRA» sinó que haria de sortir «France»). Per a fer això caldrà que facis un JOIN.

Exercici 3

Tercera part:

  1. Afegeix la pagina afegir_ciutat.php que disposi d'un formulari que permeti afegir noves ciutats.
    • El país s'ha de poder seleccionar d'un desplegable amb name=codi_pais.
    • El nom es posarà en un input amb name=nom_ciutat.
    • La població es posarà en input amb name=poblacio.
    • La resta de camps no calen.
  2. Si la ciutat s'inserta bé, donar un missatge en un div amb class=«missatge» que digui «Ciutat afegida correctament».
  3. Posar un link amb el text «Tornar a l'inici».
  4. Abans d'insertar la ciutat, comprovar que no existeixi una ja insertada amb el mateix nom i al mateix país (si son de països diferents, sí que poden tenir el mateix nom). En cas de que ja existeixi, donar error amb el missatge «Aquesta ciutat ja existeix en aquest país».


php_mysql.txt · Darrera modificació: 2024/11/15 14:28 per enric_mieza_sanchez