Funcionalitat: Obtenir l'idioma més usat
Obtenir l'idioma més usat
La mostra de l'idioma més usat forma part de les estadístiques de l'aplicació. Les estadístiques de l'aplicació es mostren sempre, sense necessitat de prémer cap botó.
Per mostrar l'idioma més usat es fa servir primerament una consulta SQL.
Aquesta consulta SQL compte tots els registres de la BD per després agrupar-los per idioma, per després ordenar-los de més a menys i limitar la cerca a 1 resultat, obtenint l'idioma que més vegades surt a la BD, indicant que és el més usat.
El flux de la consulta seria el següent:
- Compta tots els registres de la BD
- Suma tots els registres i agrupa'ls per idioma (només quedaran 4 totals per 4 idiomes)
- Ordena la suma de mes gran a mes petita (mes usat a menys usat)
- Retorna únicament el primer registre (el total més elevat, el que més vegades apareix a la BD i per tant el més usat)
// Obtenir l'idioma més usat
$stmt = $pdo->prepare("
SELECT idioma, COUNT(*) AS total
FROM canvis_idioma
GROUP BY idioma
ORDER BY total DESC
LIMIT 1
");
$stmt->execute();
$idiomaMesUsat = $stmt->fetch(PDO::FETCH_ASSOC);
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) 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 utilitzant les traduccions actuals
switch ($idiomaMesUsat['idioma']) { case "ca": // En cas que l'idioma retornat sigui "ca" $idioma_text_mes_usat = $cat; // Català | Catalán | Catalan | Catalan. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "es": $idioma_text_mes_usat = $esp; // Castellà | Castellano | Spanish | Espagnol. Retorna l'idioma "Castellà" escrit segons l'idioma de l'aplicació break; case "en": $idioma_text_mes_usat = $ang; // Anglès | Inglés | English | Anglais. Retorna l'idioma "Català" escrit segons l'idioma de l'aplicació break; case "fr": $idioma_text_mes_usat = $fra; // Francès | Francés | French | Français Retorna l'idioma "Francès" escrit segons l'idioma de l'aplicació break; default: $idioma_text_mes_usat = $idiomaMesUsat['idioma']; } ?>
Per últim, únicament cal imprimir-ho
<h2><?php echo $titolIdiomaMesUsat . htmlspecialchars($idioma_text_mes_usat) ?></h2>