Funcionalitat: Obtenir l'idioma més usat

De Wiki personal d'en Guillem Serrat

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:

  1. Compta tots els registres de la BD
  2. Suma tots els registres i agrupa'ls per idioma (només quedaran 4 totals per 4 idiomes)
  3. Ordena la suma de mes gran a mes petita (mes usat a menys usat)
  4. 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>