Extract name and last name mysql

2

Good morning Guys, how do I extract the name and last name of a record. However, it should return the first and last name when it has only one last name. My table is like this.

  

table = 'users';
field1 = 'name';
  field2 = 'sobronome';

Name: Eduardo da Silva Fernandes

I would like to extract like this: 'Eduardo Fernandes';

I did this here, but only works for records that contain 2 surnames.

$separar = explode(' ', $reg['nome'] . '. .' . $reg['sobrenome']);
            $primeiroNome = array_shift($separar);
            $ultimoNome = array_pop($separar);
    
asked by anonymous 02.06.2016 / 15:43

1 answer

6

If you want to directly extract directly from the database with SQL :

SELECT SUBSTRING_INDEX(coluna_nome, ' ', 1) as nome, SUBSTRING_INDEX(coluna_nome, ' ', -1) as sobrenome from tabela_pessoas;

But for what has shown SQL neither enters there, to do with php :

$nome_todo = 'Eduardo da Silva Fernandes';
$nomes = explode(' ', $nome_todo); // separamos por espaços e fica: Array ( [0] => Eduardo [1] => da [2] => Silva [3] => Fernandes )
$nome = $nomes[0]; // primeiro nome
$sobrenome = $nomes[count($nomes) - 1]; // ultimo nome, total de nomes - 1 que é o ultimo elemento de $nomes

echo $nome; // Eduardo
echo $sobrenome; // Fernandes

However, if you want to do this for multiple users you can (and should) build a function to not be repeating code:

function nome_sobrenome($nome_todo) {
    $nomes = explode(' ', $nome_todo);
    if(count($nomes) === 1) { // caso alguém tenha um só nome
        return $nomes[0];
    }
    return $nomes[0]. ' ' .$nomes[count($nomes) - 1];
}

$eduardo = nome_sobrenome('Eduardo da Silva Fernandes'); // Eduardo Fernandes
$maria = nome_sobrenome('Maria dos Santos Anacleto Constantina'); // Maria Constantina
$adriana = nome_sobrenome('Adriana Lima'); // Adriana Lima
$miguel = nome_sobrenome('Miguel'); // Miguel
    
02.06.2016 / 15:49