Funcions: diferència entre les revisions

De Wiki personal d'en Guillem Serrat
Es crea la pàgina amb «== Funció campBuit == __FORÇATAULA__».
 
Cap resum de modificació
 
(Hi ha una revisió intermèdia que no es mostren del mateix usuari)
Línia 1: Línia 1:
== Funció campBuit ==
== Funció campBuit ==
La funció campBuit verifica que un camp tingui un valor introduit.
La funció rep dos paràmetres, el nom del camp que es vol comprovar i l’array on s’emmagatzema tots els errors que es mostren a l’usuari. Com volem que els valors de l'array es comparteixin entre la funció i el codi principal, fem un pas per referència.<pre>
// Validar si un camp està buit
function campBuit($nomCamp, &$errors) { // Esperem el camp i l'array de valors. Com volem que els valors de l'array es comparteixin, fem un pas per referència.
    if (empty($_POST[$nomCamp])) { // Si el camp indicat està buit
        $errors[] = "El camp $nomCamp és buit."; // Afegim a l'array d'errros el següent missatge 
        return true;
    }
    return false;
}
</pre>
== Funció validarDNI ==
La funció validarDNI verifica que el DNI introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el qual és el DNI.<pre>
// Validar DNI
function validarDNI($dni): bool { // Espera un DNI d'entrada
    $dni = strtoupper(trim($dni)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
    if (preg_match('/^[0-9]{8}[A-Z]$/', $dni)) { // Comprova que hi ha 8 números seguit d'una lletra
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el DNI
        $num = substr($dni, 0, 8); // Extreu els primers 8 caràcters de $DNI (números)
        $lletra = substr($dni, -1); // Extreu l'últim caràcter del DNI (lletra)
        return $lletra === $lletres[$num % 23]; //
    }
    return false;
    /* Expresió regular '/^[0-9]{8}[A-Z]$/'
    ^ = inici de la cadena
    [0-9]{8} → exactament 8 digits (del 0 al nou)
    [A-Z] = una lletra majúscula
    $ = fin de la cadena
    */
}
</pre>
== Funció validarNIE ==
La funció validarNIE verifica que el NIE introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el NIE.<pre>
// Validar NIE
function validarNIE($nie): bool { // Espera un NIE d'entrada
    $nie = strtoupper(trim($nie)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
    if (preg_match('/^[XYZ][0-9]{7}[A-Z]$/', $nie)) { // Comprova que el DNI tingui una lletra X,Y o Z + 7 números + una lletra
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el NIE
        $numeroInicial = str_replace(['X','Y','Z'], ['0','1','2'], $nie[0]); // Converteix cada lletra en un nombre: X = 0, Y = 1, Z = 2
        $numero = $numeroInicial . substr($nie, 1, 7); // Concatena el número de la primera lletra amb la resta del NIE
        $lletra = substr($nie, -1); // Agafa la lletra (la que queda, la del final)
        return $lletra === $lletres[$numero % 23];
    }
    return false;
}
</pre>
== Funció validarPassaport ==
La funció validarPassaport verifica que el passaport introduït tingui un valor vàlid.
La funció rep un sol paràmetre, el passaport.<pre>
// Validar Passaport
function validarPassaport($passaport): bool { // Espera un passaport
    $passaport = strtoupper(trim($passaport)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
    if (preg_match('/^[A-Z]{3}[0-9]{6}[A-Z]$/', $passaport)) { // Ha d'haber-hi 3 lletres, seguit de 6 números i acabar amb una lletra
        return true;
    }
    return false;
}
</pre>
== Funció esMajorEdat ==
La funció esMajorEdat verifica que la data de naixement impliqui que l’usuari sigui major d’edat.
La funció rep un sol paràmetre, la data de naixement.<pre>
// Validar si és major d'edat
function esMajorEdat($dataNaix): bool { // Espera una data
    $dataNaix = new DateTime($dataNaix); // Creem un objecte DateTime a partir de la data oferta
    $avui = new DateTime(); // Creem un objecte DateTime a partir de la data d'avui
    return $avui->diff($dataNaix)->y >= 18; // Es calcula la diferencia entre les dues dates i es retornen tres valors: y = anys, m = messos i d = dies. Es fa la comparació amb el valor y (que son els anys de diferència)
    // Retorna true o false. Si l'operació es veritat (major o igual a 18), retorna true, si no, retorna false
}
</pre>
== Funció validarTelefon ==
La funció validarTelefon verifica que el telèfon tingui un valor vàlid
La funció rep un sol paràmetre, el número de telèfon.<pre>
// Validar telèfon
function validarTelefon($tel): bool {
    return preg_match('/^[0-9]{9}$/', $tel); // El telèfon ha de tenir 9 números
    // Si preg_match coincideix amb el patró, retorna true, si no, false
}
</pre>
== Funció codiPostalValid ==
La funció codiPostalValid verifica que el codi postal sigui vàlid.
La funció rep un sol paràmetre, el codi postal.<pre>
// Validar codi Postal
function codiPostalValid($codi_postal) {
    // El codi ha de ser exactament 5 dígits
    if (preg_match('/^[0-9]{5}$/', $codi_postal) == false) { // Si el codi postal no té 5 dígits
        return false;
    }
    // Valors possibles de codis postals a Espanya: 01000 - 52999
    $num = intval($codi_postal); // Converteix el codi postal (que és una string) a número per poder treballar amb intervals
    if ($num >= 01000 && $num <= 52999){ // Si el nombre està entre el 01000 i el 52999
        return true;
    } else { // Si el nombre no està en aquest interval
        return false;
    }
}
</pre>
== Funció tractarCadena ==
La funció tractarCadena té l’objectiu de sustituir tots els caràcters especials (accents, dièresi, etc), treure tots els possibles espais (tant al principi, final o entremig) i convertir-ho tot a minúscules.
La funció rep un sol paràmetre, la cadena a tractar.<pre>
// Passar una cadena a minúscules sense espais i sense caràcters especials
function tractarCadena($cadena){
    $cadena = str_replace(
    ['á','à','ä','â','ã','Á','À','Â','Ä','Ã',
    'é','è','ë','ê','É','È','Ê','Ë',
    'í','ì','ï','î','Í','Ì','Ï','Î',
    'ó','ò','ö','ô','õ','Ó','Ò','Ö','Ô','Õ',
    'ú','ù','ü','û','Ú','Ù','Ü','Û',
    'ñ','Ñ'],
    ['a','a','a','a','a','A','A','A','A','A',
    'e','e','e','e','E','E','E','E',
    'i','i','i','i','I','I','I','I',
    'o','o','o','o','o','O','O','O','O','O',
    'u','u','u','u','U','U','U','U',
    'n','N'],
    $cadena
    );
    $cadena = str_replace(' ', '', strtolower(trim($cadena)));
    return $cadena;
}
</pre>
__FORÇATAULA__
__FORÇATAULA__

Revisió de 00:49, 9 des 2025

Funció campBuit

La funció campBuit verifica que un camp tingui un valor introduit.

La funció rep dos paràmetres, el nom del camp que es vol comprovar i l’array on s’emmagatzema tots els errors que es mostren a l’usuari. Com volem que els valors de l'array es comparteixin entre la funció i el codi principal, fem un pas per referència.

// Validar si un camp està buit
function campBuit($nomCamp, &$errors) { // Esperem el camp i l'array de valors. Com volem que els valors de l'array es comparteixin, fem un pas per referència.
    if (empty($_POST[$nomCamp])) { // Si el camp indicat està buit
        $errors[] = "El camp $nomCamp és buit."; // Afegim a l'array d'errros el següent missatge  
        return true;
    }
    return false;
}

Funció validarDNI

La funció validarDNI verifica que el DNI introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el qual és el DNI.

// Validar DNI
function validarDNI($dni): bool { // Espera un DNI d'entrada
    $dni = strtoupper(trim($dni)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)
    if (preg_match('/^[0-9]{8}[A-Z]$/', $dni)) { // Comprova que hi ha 8 números seguit d'una lletra 
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el DNI
        $num = substr($dni, 0, 8); // Extreu els primers 8 caràcters de $DNI (números)
        $lletra = substr($dni, -1); // Extreu l'últim caràcter del DNI (lletra)
        return $lletra === $lletres[$num % 23]; // 
    }
    return false;

    /* Expresió regular '/^[0-9]{8}[A-Z]$/'
    ^ = inici de la cadena
    [0-9]{8} → exactament 8 digits (del 0 al nou)
    [A-Z] = una lletra majúscula
    $ = fin de la cadena

    */
}

Funció validarNIE

La funció validarNIE verifica que el NIE introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el NIE.

// Validar NIE
function validarNIE($nie): bool { // Espera un NIE d'entrada
    $nie = strtoupper(trim($nie)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)

    if (preg_match('/^[XYZ][0-9]{7}[A-Z]$/', $nie)) { // Comprova que el DNI tingui una lletra X,Y o Z + 7 números + una lletra 
        $lletres = "TRWAGMYFPDXBNJZSQVHLCKE"; // Cadena amb totes les lletres possibles en el NIE
        $numeroInicial = str_replace(['X','Y','Z'], ['0','1','2'], $nie[0]); // Converteix cada lletra en un nombre: X = 0, Y = 1, Z = 2
        $numero = $numeroInicial . substr($nie, 1, 7); // Concatena el número de la primera lletra amb la resta del NIE
        $lletra = substr($nie, -1); // Agafa la lletra (la que queda, la del final)
        return $lletra === $lletres[$numero % 23];
    }
    return false;
}

Funció validarPassaport

La funció validarPassaport verifica que el passaport introduït tingui un valor vàlid.

La funció rep un sol paràmetre, el passaport.

// Validar Passaport
function validarPassaport($passaport): bool { // Espera un passaport
    $passaport = strtoupper(trim($passaport)); //strtoupper converteix totes les lletres en majúscules. trim elimina els espais del principi i final (si n'hi han)

    if (preg_match('/^[A-Z]{3}[0-9]{6}[A-Z]$/', $passaport)) { // Ha d'haber-hi 3 lletres, seguit de 6 números i acabar amb una lletra
        return true;
    }

    return false;
}

Funció esMajorEdat

La funció esMajorEdat verifica que la data de naixement impliqui que l’usuari sigui major d’edat.

La funció rep un sol paràmetre, la data de naixement.

// Validar si és major d'edat
function esMajorEdat($dataNaix): bool { // Espera una data
    $dataNaix = new DateTime($dataNaix); // Creem un objecte DateTime a partir de la data oferta
    $avui = new DateTime(); // Creem un objecte DateTime a partir de la data d'avui
    return $avui->diff($dataNaix)->y >= 18; // Es calcula la diferencia entre les dues dates i es retornen tres valors: y = anys, m = messos i d = dies. Es fa la comparació amb el valor y (que son els anys de diferència)

    // Retorna true o false. Si l'operació es veritat (major o igual a 18), retorna true, si no, retorna false
}

Funció validarTelefon

La funció validarTelefon verifica que el telèfon tingui un valor vàlid

La funció rep un sol paràmetre, el número de telèfon.

// Validar telèfon
function validarTelefon($tel): bool {
    return preg_match('/^[0-9]{9}$/', $tel); // El telèfon ha de tenir 9 números
    // Si preg_match coincideix amb el patró, retorna true, si no, false
}

Funció codiPostalValid

La funció codiPostalValid verifica que el codi postal sigui vàlid.

La funció rep un sol paràmetre, el codi postal.

// Validar codi Postal
function codiPostalValid($codi_postal) {
    // El codi ha de ser exactament 5 dígits
    if (preg_match('/^[0-9]{5}$/', $codi_postal) == false) { // Si el codi postal no té 5 dígits
        return false;
    }

    // Valors possibles de codis postals a Espanya: 01000 - 52999
    $num = intval($codi_postal); // Converteix el codi postal (que és una string) a número per poder treballar amb intervals
    if ($num >= 01000 && $num <= 52999){ // Si el nombre està entre el 01000 i el 52999
        return true;
    } else { // Si el nombre no està en aquest interval
        return false;
    } 
}

Funció tractarCadena

La funció tractarCadena té l’objectiu de sustituir tots els caràcters especials (accents, dièresi, etc), treure tots els possibles espais (tant al principi, final o entremig) i convertir-ho tot a minúscules.

La funció rep un sol paràmetre, la cadena a tractar.

// Passar una cadena a minúscules sense espais i sense caràcters especials
function tractarCadena($cadena){
    $cadena = str_replace(
    ['á','à','ä','â','ã','Á','À','Â','Ä','Ã',
     'é','è','ë','ê','É','È','Ê','Ë',
     'í','ì','ï','î','Í','Ì','Ï','Î',
     'ó','ò','ö','ô','õ','Ó','Ò','Ö','Ô','Õ',
     'ú','ù','ü','û','Ú','Ù','Ü','Û',
     'ñ','Ñ'],
    ['a','a','a','a','a','A','A','A','A','A',
     'e','e','e','e','E','E','E','E',
     'i','i','i','i','I','I','I','I',
     'o','o','o','o','o','O','O','O','O','O',
     'u','u','u','u','U','U','U','U',
     'n','N'],
    $cadena

    );

    $cadena = str_replace(' ', '', strtolower(trim($cadena)));

    return $cadena;
}