Ir para conteúdo
Fórum Script Brasil
  • 0

Registros Duplicados


Rudimar

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

você sabe trabalhar com MySQL? É só dar um select e contar o número de retornos. Por exemplo, vamos supor que no seu banco de dados exista um campo login, e que você queira verificar quantos registros "Rudimar" existem nesse campo.

$pesquisa = "Rudimar";

$query = "SELECT login FROM usuarios WHERE login='$pesquisa'";

$conexao = mysql_connect("localhost", "usuario", "senha");

$resultado = mysql_query($query, $conexao);

$total = mysql_num_rows($resultado);

E pronto... a variável $total contém o número de logins que estão como "Rudimar"...

Falou!

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado, mas não é bem isso o que procuro...

Preciso fazer uma verificacao em minha tabela se existem registros duplicados. Não possuo nenhuma informação sobre qual registro poderá estar duplicado. O sistema é que devera fazer isto, mais ou menos assim:

Pega-se o primeiro registro da tabela e obtem-se os dados da tabela.

Depois o sistema deverá percorrer toda base de dados e verificar se existe algum outro registro igual.... Se existir deleta, se não vai para o segundo registro da tabela e faz o procedimento novamente... e assim fará até o final da tabela...

Lembrando que não possuo nenhuma informacao de qual registro pderá estar duplicado... O sistema é que deverá fazer isto sozinho... E o único meio que vejo é como mencionei acima...

Só que me parece muito improdutivo....

Link para o comentário
Compartilhar em outros sites

  • 0

Entendi... tive uma idéia, aqui.

você quer que verifique TODOS os campos se tem dados duplicados? Ou um só? Acho que um só, né? Bom, olha o que eu pensei:

Supondo que o campo que não pode ser duplicado seja o "login" (se houver outros campos, a gente incrementa depois):

1. você dá um SELECT login FROM usuarios...

2. Aí você coloca num array todos os logins: (se não souber como, depois eu ajudo)

$todos_logins = array("carlos", "jose", "fernando", "carlos", "jose", "roberto");

// conta quantas vezes cada elemento aparece no array

$contar_registros = array_count_values($todos_logins);

// coloca num array chamado $duplicados os registros que aparecem mais de 1 vez

$sem_duplicados = array_unique($todos_logins);

$i = 0;

foreach ($sem_duplicados as $login) {

    if ($contar_registros[$login] > 1) { $duplicados[$i] = $login; $i++; }

}

E tá quase pronto... depois seria só você pegar cada elemento do array $duplicados e mandar apagar APENAS UM registro da tabela. Eu destaquei isso porque, se você mandar apagar com "DELETE FROM usuarios WHERE login='$duplicados[0]'", apagaria os dois registros duplicados!

Não sei se teria como usar o LIMIT 1 aí pra resolver isso... talvez sim. Vamos esperar pra ver se alguém mais ajuda.

Falou!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...