Jump to content
Fórum Script Brasil
  • 0

Listar campos "inutilizados"...


EasyRider

Question

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 to comment
Share on other sites

9 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652.1k
×
×
  • Create New...