Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

twpesquisa

Verificar se já existe um nickname

Recommended Posts

Ola pessoal, tudo bem ?

 

Não me lembro se já postei algo relacionado, mas segue minha dúvida:

 

A ideia do código abaixo, é verificar como base no nome informado (nome completo) se já existe na base um cadastro com nickname, apelido e existindo, gerar o nome acrescentando um número no final.

 

Por exemplo:

Existe cadastrado

Nome :JORGE DA SILVA

Nickname: jorgesilva

 

Nome :JORGE DA SILVA

Nickname: jorgesilva1

 

Ao informar o próximo nome que também é JORGE DA SILVA, o sistema deverá gerar o nickname jorgesilva2.

 

Meu código abaixo não está gerando e fica em loop.

 

Alguém consegue me auxiliar ?

 

 

Abraços,

<?php
function removecaracteres($string) {
    // matriz de entrada
    $what = array( 'ä','ã','à','á','â','ê','ë','è','é','ï','ì','í','ö','õ','ò','ó','ô','ü','ù','ú','û','À','Á','Ã','É','Í','Ó','Ú','ñ','Ñ','ç','Ç','-','(',')',',',';',':','|','!','"','#','$','%','&','/','=','?','~','^','>','<','ª','º' );
    // matriz de saída
    $by   = array( 'a','a','a','a','a','e','e','e','e','i','i','i','o','o','o','o','o','u','u','u','u','A','A','A','E','I','O','U','n','n','c','C','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_' );
    // devolver a string
    return str_replace($what, $by, $string);
} 

//Analise pelo nome completo
/////////////////////////////
$nome = $_POST['nome'];
echo "NOME: ".$nome . "</br>";
$string = removecaracteres($nome);
$words = explode(" ", $string);
// Primeira palavra:
$primeiraPalavra = $words[0];

// Última palavra
$ultimaPalavra = $words[count($words)-1];

//Converte para minusculo
$nick1= strtolower($primeiraPalavra.''.$ultimaPalavra);

$qry1    = mysql_query("select nickname from candidato where nickname = '$nick1' ");
$res1    = mysql_fetch_assoc($qry1);
$nickname1 = $res1['nickname'];
echo "Nickname gerado com base no nome: " . $nick1 ."<br>";
echo "Ja existe este nickname: " .$nickname1."<br><br>";

if ($nick1 == $nickname1){
    $n1 = 1;
    $nickname1 = $nick1;
    while ($nick1 == $nickname1) {
        $nickname1 = $nick1.$n1;
        $qry    = mysql_query("select nickname from candidato where nickname = '$nickname1' ");
        $res    = mysql_fetch_assoc($qry1);
        $nickname1 = $res1['nickname'];   
        $n++;
        echo $n1."º Teste: " . $nickname1."<br>";
    }
    $nick1 = $nickname1;
    echo "<br>Nickname sugerido: ". $nickname1."<br>";
}else{
    $nick1 = $nickname1;
    echo "Seu nickname sera: " . $nickname1;
}


?> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você de fato não precisava criar duas variáveis para o nickname... mas deixei isto mesmo assim... não testei o script, mas acredito que a lógica esteja correta.

<?php
function removecaracteres($string) {
    // matriz de entrada
    $what = array( 'ä','ã','à','á','â','ê','ë','è','é','ï','ì','í','ö','õ','ò','ó','ô','ü','ù','ú','û','À','Á','Ã','É','Í','Ó','Ú','ñ','Ñ','ç','Ç','-','(',')',',',';',':','|','!','"','#','$','%','&','/','=','?','~','^','>','<','ª','º' );
    // matriz de saída
    $by   = array( 'a','a','a','a','a','e','e','e','e','i','i','i','o','o','o','o','o','u','u','u','u','A','A','A','E','I','O','U','n','n','c','C','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_','_' );
    // devolver a string
    return str_replace($what, $by, $string);
} 


//Analise pelo nome completo
/////////////////////////////
$nome = $_POST['nome'];
echo "NOME: ".$nome . "</br>";
$string = removecaracteres($nome);
$words = explode(" ", $string);
// Primeira palavra:
$primeiraPalavra = $words[0];


// Última palavra
$ultimaPalavra = $words[count($words)-1];


//Converte para minusculo
$nick1= strtolower($primeiraPalavra.''.$ultimaPalavra);


$qry1    = mysql_query("select nickname from candidato where nickname = '$nick1' ");


echo "Nickname gerado com base no nome: " . $nick1 ."<br>";




if (mysql_num_rows($qry1) != '0'){
    $res1    = mysql_fetch_assoc($qry1);
    $nickname1 = $res1['nickname'];
    echo "Ja existe este nickname: " .$nickname1."<br><br>";
    
    $n1 = 1;
    $nickname1 = $nick1;
    while (1) {
        $nickname1 = $nick1.$n1;
        $qry = mysql_query("select nickname from candidato where nickname = '$nickname1' ");
        //$res = mysql_fetch_assoc($qry1);
        echo $n1."º Teste: " . $nickname1."<br>";
        if(mysql_num_rows($qry) == '0'){
            break;
        }
        $n1++;
    }
    $nick1 = $nickname1;
    echo "<br>Nickname sugerido: ". $nickname1."<br>";
}else{
    $nick1 = $nickname1;
    echo "Seu nickname sera: " . $nickname1;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

@ESerra,

 

estou reabrindo este tópico, pois tenho notado um poblema, por exemplo:

A ideia é com base em um nome completo, Jorge da Silva Magalhaes, pegar o primeiro e ultimo nome, concatenar e verificar se já existe, caso exista, incrementar um numero ao final.

 

joaomagalhaes

joaomagalhaes1

joaomagalhaes12

 

Porem tem casos que só esta pegando o primeiro nome.

O estranho que não é sempre :(.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.