twpesquisa 1 Denunciar post Postado Março 28, 2016 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
ESerra 744 Denunciar post Postado Março 29, 2016 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
twpesquisa 1 Denunciar post Postado Março 29, 2016 Ola ESerra, obrigado. Funcionou. =) Compartilhar este post Link para o post Compartilhar em outros sites
twpesquisa 1 Denunciar post Postado Abril 5, 2016 @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