Funcionalitat: Gestió d'historial de canvis (Mostra i esborrament): diferència entre les revisions
Cap resum de modificació |
Cap resum de modificació |
||
| Línia 1: | Línia 1: | ||
__TOC__ | __TOC__ | ||
== Mostra de l'historial de canvis == | == Mostra de l'historial de canvis == | ||
L'historial de canvis únicament mostra els últims cinc canvis d'idioma realitzats, incloent-hi també la data en el qual es va fer, l'adreça IP del client que ho va fer i l'usuari que ho va fer (si en el seu moment es va especificar) | |||
Per això, realitzem una consulta SQL recuperant tots els camps de la taula, ordenant-los per ID de forma descendent (una ID més alta indica un canvi més recent) i limitant el resultat a únicament cinc registres<pre> | |||
<?php | |||
$stmt = $pdo->prepare("SELECT | |||
idioma, | |||
data_canvi, | |||
ip_client, | |||
nom_usuari | |||
FROM canvis_idioma ORDER BY id DESC LIMIT 5"); | |||
$stmt->execute(); | |||
$historial = $stmt->fetchAll(); | |||
</pre>El que retorna la consulta no és només l'idioma, sinó també la data, la direcció IP i l'usuari (si n'hi ha). Per tant, amb un bucle imprimirem tots els resultats<pre> | |||
foreach ($historial as $reg): ?> <!-- Per cada idioma dins de la consulta --> | |||
</pre>Tot i això, l'idioma que retorna és la versió "curta" (ca, en ... ) i hem de transformar-lo per tal de que surti l'idioma sencer i el nom segons l'idioma de l'aplicació<pre> | |||
// Convertim el codi d’idioma a text. Enlloc d'imprimir "ca" o "es", imprimim l'idioma sencer, en l'idioma corresponent | |||
switch ($reg['idioma']) { | |||
case "ca": | |||
$idioma_text = $cat; // Català | Catalán | Catalan | Catalan. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "es": | |||
$idioma_text = $esp; // Castellà | Castellano | Spanish | Espagnol. Retorna l'idioma "Castellà" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "en": | |||
$idioma_text = $ang; // Anglès | Inglés | English | Anglais. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "fr": | |||
$idioma_text = $fra; // Francès | Francés | French | Français Retorna l'idioma "Francès" escrit segons l'idioma de l'aplicació | |||
break; | |||
default: | |||
$idioma_text = $reg['idioma']; // ca, es, en, fr | |||
} | |||
</pre>Un cop hem transformat l'idioma, imprimirem el registre. Tot i això, a l'hora d'imprimir l'usuari primer mirarem si realment n'hi ha, en cas afirmatiu imprimirem un nou separador i el nom d'usuari, en cas contrari no s'imprimirà res. Es realitzarà tot aquest procés per cada registre.<pre> | |||
// Imprimim l'idioma | |||
echo htmlspecialchars($idioma_text) | |||
. " — " // Separador | |||
// Imprimim la data en la qual s'ha fet el canvi | |||
. htmlspecialchars($reg['data_canvi']) | |||
. " — " // Separador | |||
// Imprimim la IP del client | |||
. htmlspecialchars($reg['ip_client']); | |||
// Imprimim el nom d'usuari | |||
if ($reg['nom_usuari']){ | |||
echo " — " // Separador | |||
. htmlspecialchars($reg['nom_usuari']); | |||
} | |||
</pre>El codi sencer per mostrar l'historial de canvis és el següent:<pre> | |||
<!-- Mostrar historial de canvis --> | |||
<h2><?php echo $historial; ?></h2> | |||
<ul> | |||
<?php | |||
$stmt = $pdo->prepare("SELECT | |||
idioma, | |||
data_canvi, | |||
ip_client, | |||
nom_usuari | |||
FROM canvis_idioma ORDER BY id DESC LIMIT 5"); | |||
$stmt->execute(); | |||
$historial = $stmt->fetchAll(); | |||
// Imprimim tots els canvis d'idiomes trobats a la consulta | |||
foreach ($historial as $reg): ?> <!-- Per cada idioma dins de la consulta --> | |||
<li><center> | |||
<?php | |||
// Convertim el codi d’idioma a text. Enlloc d'imprimir "ca" o "es", imprimim l'idioma sencer, en l'idioma corresponent | |||
switch ($reg['idioma']) { | |||
case "ca": | |||
$idioma_text = $cat; // Català | Catalán | Catalan | Catalan. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "es": | |||
$idioma_text = $esp; // Castellà | Castellano | Spanish | Espagnol. Retorna l'idioma "Castellà" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "en": | |||
$idioma_text = $ang; // Anglès | Inglés | English | Anglais. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació | |||
break; | |||
case "fr": | |||
$idioma_text = $fra; // Francès | Francés | French | Français Retorna l'idioma "Francès" escrit segons l'idioma de l'aplicació | |||
break; | |||
default: | |||
$idioma_text = $reg['idioma']; // ca, es, en, fr | |||
} | |||
// Imprimim l'idioma | |||
echo htmlspecialchars($idioma_text) | |||
. " — " // Separador | |||
// Imprimim la data en la qual s'ha fet el canvi | |||
. htmlspecialchars($reg['data_canvi']) | |||
. " — " // Separador | |||
// Imprimim la IP del client | |||
. htmlspecialchars($reg['ip_client']); | |||
// Imprimim el nom d'usuari | |||
if ($reg['nom_usuari']){ | |||
echo " — " // Separador | |||
. htmlspecialchars($reg['nom_usuari']); | |||
} | |||
?> | |||
</li></center> | |||
<?php endforeach; ?> | |||
</ul> | |||
</pre>El resultat de l'historial amb alguns registres és el següent: | |||
[[Fitxer:Pràctica 4.2 Resultat Historial Canvis.png|center|miniatura|500x500px]] | |||
== Eliminació de l'historial de canvis == | |||
L'eliminacio de l'historial de canvis es produeix quan es prem el boto d'esborrar tots els registres. | |||
[[Fitxer:Pràctica 4.2 Boto Esborrar Registres.png|center|miniatura|500x500px]] | |||
Quan es prem, es realitza una consulta SQL que elimina tots els registres de la BD<pre> | |||
// Borrar tots els registres de la taula | |||
if (isset($_POST['borrar_tot'])) { | |||
try { | |||
$stmt = $pdo->prepare("DELETE FROM canvis_idioma"); | |||
$stmt->execute(); | |||
} catch (PDOException $e) { | |||
echo "<p>Error al eliminar els registres: " . htmlspecialchars($e->getMessage()) . "</p>"; | |||
} | |||
} | |||
</pre> | |||
Revisió de 01:32, 15 des 2025
Mostra de l'historial de canvis
L'historial de canvis únicament mostra els últims cinc canvis d'idioma realitzats, incloent-hi també la data en el qual es va fer, l'adreça IP del client que ho va fer i l'usuari que ho va fer (si en el seu moment es va especificar)
Per això, realitzem una consulta SQL recuperant tots els camps de la taula, ordenant-los per ID de forma descendent (una ID més alta indica un canvi més recent) i limitant el resultat a únicament cinc registres
<?php
$stmt = $pdo->prepare("SELECT
idioma,
data_canvi,
ip_client,
nom_usuari
FROM canvis_idioma ORDER BY id DESC LIMIT 5");
$stmt->execute();
$historial = $stmt->fetchAll();
El que retorna la consulta no és només l'idioma, sinó també la data, la direcció IP i l'usuari (si n'hi ha). Per tant, amb un bucle imprimirem tots els resultats
foreach ($historial as $reg): ?> <!-- Per cada idioma dins de la consulta -->
Tot i això, l'idioma que retorna és la versió "curta" (ca, en ... ) i hem de transformar-lo per tal de que surti l'idioma sencer i el nom segons l'idioma de l'aplicació
// Convertim el codi d’idioma a text. Enlloc d'imprimir "ca" o "es", imprimim l'idioma sencer, en l'idioma corresponent
switch ($reg['idioma']) { case "ca": $idioma_text = $cat; // Català | Catalán | Catalan | Catalan. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "es": $idioma_text = $esp; // Castellà | Castellano | Spanish | Espagnol. Retorna l'idioma "Castellà" escrit segons l'idioma de l'aplicació break; case "en": $idioma_text = $ang; // Anglès | Inglés | English | Anglais. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "fr": $idioma_text = $fra; // Francès | Francés | French | Français Retorna l'idioma "Francès" escrit segons l'idioma de l'aplicació break; default: $idioma_text = $reg['idioma']; // ca, es, en, fr }
Un cop hem transformat l'idioma, imprimirem el registre. Tot i això, a l'hora d'imprimir l'usuari primer mirarem si realment n'hi ha, en cas afirmatiu imprimirem un nou separador i el nom d'usuari, en cas contrari no s'imprimirà res. Es realitzarà tot aquest procés per cada registre.
// Imprimim l'idioma
echo htmlspecialchars($idioma_text)
. " — " // Separador
// Imprimim la data en la qual s'ha fet el canvi
. htmlspecialchars($reg['data_canvi'])
. " — " // Separador
// Imprimim la IP del client
. htmlspecialchars($reg['ip_client']);
// Imprimim el nom d'usuari
if ($reg['nom_usuari']){
echo " — " // Separador
. htmlspecialchars($reg['nom_usuari']);
}
El codi sencer per mostrar l'historial de canvis és el següent:
<!-- Mostrar historial de canvis -->
<h2><?php echo $historial; ?></h2><ul> <?php $stmt = $pdo->prepare("SELECT idioma, data_canvi, ip_client, nom_usuari FROM canvis_idioma ORDER BY id DESC LIMIT 5");$stmt->execute(); $historial = $stmt->fetchAll();// Imprimim tots els canvis d'idiomes trobats a la consulta foreach ($historial as $reg): ?> <!-- Per cada idioma dins de la consulta --> <li><center> <?php // Convertim el codi d’idioma a text. Enlloc d'imprimir "ca" o "es", imprimim l'idioma sencer, en l'idioma corresponent switch ($reg['idioma']) { case "ca": $idioma_text = $cat; // Català | Catalán | Catalan | Catalan. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "es": $idioma_text = $esp; // Castellà | Castellano | Spanish | Espagnol. Retorna l'idioma "Castellà" escrit segons l'idioma de l'aplicació break; case "en": $idioma_text = $ang; // Anglès | Inglés | English | Anglais. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "fr": $idioma_text = $fra; // Francès | Francés | French | Français Retorna l'idioma "Francès" escrit segons l'idioma de l'aplicació break; default: $idioma_text = $reg['idioma']; // ca, es, en, fr }// Imprimim l'idioma echo htmlspecialchars($idioma_text) . " — " // Separador // Imprimim la data en la qual s'ha fet el canvi . htmlspecialchars($reg['data_canvi']) . " — " // Separador // Imprimim la IP del client . htmlspecialchars($reg['ip_client']); // Imprimim el nom d'usuari if ($reg['nom_usuari']){ echo " — " // Separador . htmlspecialchars($reg['nom_usuari']); } ?> </li></center> <?php endforeach; ?></ul>
El resultat de l'historial amb alguns registres és el següent:

Eliminació de l'historial de canvis
L'eliminacio de l'historial de canvis es produeix quan es prem el boto d'esborrar tots els registres.

Quan es prem, es realitza una consulta SQL que elimina tots els registres de la BD
// Borrar tots els registres de la taula
if (isset($_POST['borrar_tot'])) {
try {
$stmt = $pdo->prepare("DELETE FROM canvis_idioma");
$stmt->execute();
} catch (PDOException $e) {
echo "<p>Error al eliminar els registres: " . htmlspecialchars($e->getMessage()) . "</p>";
}
}