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

Listar campos "inutilizados"...


EasyRider

Pergunta

Boa tarde, amigos(as)...

Estou diante de um "pequeno" problema em um banco de dados que estou trabalhando à nível laboratório. O esquema é o seguinte:

No meu banco de dados, tenho cadastrados 2 ranges de IP.

Os IPS vão de 1 até 254 (exemplo: 192.168.0.1 até 192.168.0.254), cada IP corresponde à um "cliente" imaginário, ou seja, por exemplo, se eu buscar no BD o cliente JOÃO DAS COUVES, o IP relacionado à ele é o 192.168.0.22.

Porém, estou estudando baseado na hipótese que os cadastros recebam IP´s aleatórios, dentro do mesmo range, logo, os ips não são inseridos de forma sequencial, até porque, hoje, o joão das couves usa o IP 192.168.0.22 mas, amanhã ele pode "cancelar" a assinatura e este IP irá ficar vago...

O que eu preciso:

Preciso listar todos os ips, de 1 até 254 verificando qual está vago pra eu poder exibir uma "sugestão" de IP no form de cadastro...

Estou pensando em fazer um loop começando em 1 e incrementando até 254 e a cada "volta" checar no BD se o IP já está sendo utilizado, mas, creio eu (mesmo sem tentar) que irá gerar processamento desnecessário... sem contar que, também, creio que seja uma POG das "brabas"...

Alguém tem uma boa sugestão de como fazer isso ?

PS: NÃO POSSO deixar os IP´s de 1 até 254 pré cadastrados... infelizmente.

Grato pela atenção e pelas ajudas

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Como trabalhar co o IP é algo unico você não tera problema em deixar pré-cadastrado....

Cadastre todas as faixas de Ip deixando elas como campo PRIMARY KEY ativo assim não há nescessidade de mais nada ... deixa o campo nome de cliente em branco onde for para por o cadastro do cliente...

a cada cliente que você tem deixe cadastrado

depois monte um select onde o campo nome for = a NULL

assim ele ira retorna somente os IPs que estão livres.

Link para o comentário
Compartilhar em outros sites

  • 0
Como trabalhar co o IP é algo unico você não tera problema em deixar pré-cadastrado....

Cadastre todas as faixas de Ip deixando elas como campo PRIMARY KEY ativo assim não há nescessidade de mais nada ... deixa o campo nome de cliente em branco onde for para por o cadastro do cliente...

a cada cliente que você tem deixe cadastrado

depois monte um select onde o campo nome for = a NULL

assim ele ira retorna somente os IPs que estão livres.

Simples e perfeito!

Link para o comentário
Compartilhar em outros sites

  • 0
Tarde,

faça uma pesquisa no banco antes de gravar.

SELECT ip from cadastro where ip = "$ip"

Ai se retornar como TRUE você não grava.

Assim, eu já faço, mas, são 254 ip´s por range. Eu posso até lembrar quais ip´s já são utilizados, mas, se você, por exemplo for cadastrar alguém, não vai saber quais são usados ou não... aí vai ficar na tentativa erro-acerto até achar um vago... e assim não é a melhor forma. Mesmo assim, grato pela atenção.

Como trabalhar co o IP é algo unico você não tera problema em deixar pré-cadastrado....

Cadastre todas as faixas de Ip deixando elas como campo PRIMARY KEY ativo assim não há nescessidade de mais nada ... deixa o campo nome de cliente em branco onde for para por o cadastro do cliente...

a cada cliente que você tem deixe cadastrado

depois monte um select onde o campo nome for = a NULL

assim ele ira retorna somente os IPs que estão livres.

Então, cara... como citei, não posso deixa-los pré-gravados.

O índice do banco é o ID do "cliente", porque, se o cliente "cancelar" o serviço, eu só vou na coluna 'cliente_ip' e zero o IP dele assim como o MAC relacionado ao PC dele no 'cliente_mac'.

Porque isso? Se hoje, por algum motivo o camarada não quiser ou puder mais usar meu serviço, eu o cancelo dessa forma, zerando IP, MAC e colocando o status dele como inativo. Caso amanhã ou depois ele queira voltar, eu já tenho os dados dele no meu cadastro e só vou pegar essa lista de IP´s vagos (que estou precisando fazer) e vou atribuir ao cadastro, entendeu ?

Link para o comentário
Compartilhar em outros sites

  • 0

E se você criar uma tabela para os IP's separada?

Tipo Tabela_IP, que possui três campos (ID,IP e IP_USUARIO).

Você cria um looping que crie e salve os ips (até o 254) na tabela IP e deixa o IP_USUARIO vazio.

Quando um usuário se cadastrar, você salva o ID dele no campo IP_USUARIO.

Para saber quais não estão sendo usados, você cria um select que mostre todos os campos WHERE IP_USUARIO null

Na teoria, deve dar certo! rs

Link para o comentário
Compartilhar em outros sites

  • 0
E se você criar uma tabela para os IP's separada?

Tipo Tabela_IP, que possui três campos (ID,IP e IP_USUARIO).

Você cria um looping que crie e salve os ips (até o 254) na tabela IP e deixa o IP_USUARIO vazio.

Quando um usuário se cadastrar, você salva o ID dele no campo IP_USUARIO.

Para saber quais não estão sendo usados, você cria um select que mostre todos os campos WHERE IP_USUARIO null

Na teoria, deve dar certo! rs

Bom, Paulinho...

É uma possibilidade, man...

Taí... vou tentar isso aí. O meu problema é evitar alterar páginas já criadas e funcionando "redondo". Sempre esquecemos alguma... rs.

Vou trabalhar nessa alternativa aqui...

Continuo na expectativa de sugestões...

Grande abraço à todos.

Link para o comentário
Compartilhar em outros sites

  • 0

Exato trabalhe com as tabelas de modo organizado ....

Clientes e IPs

Assim no cadastro de clientes você fica com tudo gravado inclusive o MAC

já no IP voc simplkesmente pré cadastra todos os IP e poem o ID do cliente para deixar vinculado a qual cliente se trata aquele IP...

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...