bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


php_mysql

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
Ultima revisió Ambdós costats nova versio
php_mysql [2022/11/17 13:15]
enric_mieza_sanchez [Utilitzant PHP amb MySQL]
php_mysql [2022/11/28 15:25]
enric_mieza_sanchez [Exercici 1]
Línia 14: Línia 14:
 ===== Recursos ===== ===== Recursos =====
  
-  * [[https://github.com/ctrl-alt-d/FpUf/blob/main/DAW/DAW-MP07/DAW-MP07-UF3/php-acces-a-dades/readme.md|PHP i MySQL a Ctrl-alt-D de Daniel Herrera]] +Amb funcions particulars mysqli_ : 
-  * [[https://github.com/ctrl-alt-d/FpUf/blob/main/DAW/DAW-MP07/DAW-MP07-UF3/php-acces-a-dades-amb-pdo/readme.md|PDO a Ctrl-alt-D de Daniel Herrera]]+  * [[https://github.com/ctrl-alt-d/FpUf/blob/main/DAW/DAW-MP07/DAW-MP07-UF3/php-acces-a-dades/readme.md|PHP i MySQL a Ctrl-alt-D de Daniel Herrera]].
   * [[https://cacauet.org/wiki/index.php/PHP_MySQL_select|PHP i MySQL amb mysql_ a cacauet.org]].   * [[https://cacauet.org/wiki/index.php/PHP_MySQL_select|PHP i MySQL amb mysql_ a cacauet.org]].
 +
 +Amb PDO:
 +  * [[https://github.com/ctrl-alt-d/FpUf/blob/main/DAW/DAW-MP07/DAW-MP07-UF3/php-acces-a-dades-amb-pdo/readme.md|PDO (lectura) a Ctrl-alt-D de Daniel Herrera]].
 +  * [[https://github.com/ctrl-alt-d/FpUf/blob/main/DAW/DAW-MP07/DAW-MP07-UF3/php-insercio-de-dades-amb-pdo/readme.md|PDO (inserció) a Ctrl-alt-D de Daniel Herrera]].
 +
 +PDO amb seguretat:
 +  * https://diego.com.es/tutorial-de-pdo
 +  * [[https://www.php.net/manual/es/pdostatement.bindparam.php#refsect1-pdostatement.bindparam-examples|Exemples de PDO amb seguretat (bindParams) a la pàgina oficial de PHP]]
 +
 +\\
 +
 +
 +===== 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:
 +
 +<file php 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>
 +</file>
 +
 +\\
 +
 +===== Exercicis mysqli_ =====
 +
 +Exercicis de filtratge amb la BD "world".
 +
 +==== Exercici 1 ====
 +<WRAP todo>
 +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.
 +
 +</WRAP>
 +
 +<WRAP important>
 +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''
 +</WRAP>
 +
 +
 +==== Exercici 2 ====
 +<WRAP todo>
 +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.
 +</WRAP>
 +
 +==== Exercici 3 ====
 +
 +<WRAP todo>
 +Tercera part:
 +  - 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.
 +  - Si la ciutat s'inserta bé, donar un missatge en un ''div'' amb ''class="missatge"'' que digui **"Ciutat afegida correctament"**.
 +  - Posar un link amb el text **"Tornar a l'inici"**.
 +  - 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"**.
 +
 +</WRAP>
 +
 +\\
  
  
php_mysql.txt · Darrera modificació: 2022/11/28 18:45 per enric_mieza_sanchez