Jump to content


Photo

Comparando Dados De Um For Com Outro


  • Faça o login para participar
11 replies to this topic

#1 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 12/11/2009, 09:36

Bom dia pessoal!
sou leigo em php, estou precisando fazer uma consulta e um banco de dados e verificar o resultado e comprar com outro gerado por um for
organizar por ordem cresente e marcar os dados com um (X) os que estao na tabela e com um (V) os que estao livres exemplo
no banco contem o ip 192.168.0.1 192.168.0.2 192.168.0.8 192.168.0.10 cadastrado no banco de dados
no codigo que vai gerar um for vai ter 192.168.0.1 ate 192.168.0.254
no resultado teria que aparecer
192.168.0.1(X)
192.168.0.2(X)
192.168.0.3(V)
192.168.0.4(V)
192.168.0.5(V)
192.168.0.6(V)
192.168.0.7(V)
192.168.0.8(X)
192.168.0.9(V)
192.168.0.10(X)
192.168.0.11(V) ate o
192.168.0.254(V)

e este cogigo para gerar o ip para fazer a comparação
vai gerar de 4 em 4 e vai pegar o final ex 2 vai comparar na consulta no db e da o resultado se tiver no db marca com um (X)
se nao tiver insere no meio da consulta como live (V)
for ($ip4=2;$ip4<255;$ip4=$ip4+4) {
echo "192.168.0.$ip4<br />";
}

estou usando este codigo para consulta no banco de dados
if ($classe > "0"){
$select = "SELECT * FROM log WHERE ip REGEXP '" . $classe . "' GROUP BY ip ORDER BY (ip) ASC";
$query = mysql_query($select,$con) or die(mysql_error());
if (mysql_num_rows($query) == 0){ echo "<b>A busca da clesse <font color=\"#FF0000\">($classe)</font> Não Foi localizada no sistema..</b>";}

echo "<table width=\"225\" border=\"1\" align=\"center\" cellspacing=\"0\">";
echo "<tr>";
echo "<td><strong>IP's USADOS NA CLASSE</strong></td>";
echo "</tr>";

for ($n=0; $n<mysql_num_rows($query);$n++) {

$r = mysql_fetch_row($query);
$id = $r[0];
$ip = $r[1];
$user = $r[2];

echo "<td style=\"border-right: 2px solid #FFFFFF\">$ip</td>";
echo "<td style=\"border-right: 2px solid #FFFFFF\">$user</td>";
echo "</tr>";
}

echo "</table>";
}//fim do if da classe
?>

o problema e pegar o que gera o final do ip de 4 em 4 verificar se tem no banco e marcarlo se esta ou nao sendo usado
desculpe pela enrolação na esplicação mais sou meio leigo....
quem puder coperar agradecerei muito!!!
fiquem com DEUS

#2 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 12/11/2009, 09:44

man.. ta muito confuso.... o que vc quer fazer

explica ai .. pra que possa te ajudar...

pelo que entendi .. vc resolve isso com uma consulta so


SELECT tb1.ip,tb2.ip,if(tb2.ip= '','V','X') as tipo FROM tb1 LEFT JOIN tb2 ON (tb1.ip = tb2.ip);


mais u]ou menos isso
<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>

#3 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 12/11/2009, 09:51

Bom dia Squall Robert,
o que quero e o seguinte
quero fazer uma consulta em somente uma tabela
e pegar um loop feito pelo for onde e gerado numeros de 4 em 4

e pegar esses numeros de 4 e 4 e compara com o resultado da tabela
se na tabela tiver um ip 192.168.0.2 ele nao adiciona este ip mais marca ele com um (X) me mostrando que ja esta em uso
e na tabela nao tem o 192.168.0.6 ai ele marca com (V) mostrando que esta livre

sou meio confuso em explicaçoes desculpe a enrolação...
obrigado

#4 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 12/11/2009, 09:58

olha so ... ele vai fazer essa comparação em outra tabela..?


tipo são 2 tabelas?

pego de umame comparo na outra... se o ip é unico

por que vo separar os IPS;;;;


vc vai Pegar 4 ips

ou vc vai explodir o ip GERANDO

4 indices....


ainda esta confuso
<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>

#5 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 12/11/2009, 11:15

podemos modificar e acresentar uma tabela com os ips para verificação
mais com o final pois tem ips com
192.168.0.1, 192.168.0.2 e etc
no caso
na tabela 1 teria 192.168.0.2, 192.168.0.6, 192.168.0.10
na tabela 2 teria os finais dos ips como 2, 6, 10, 14, 18, 22 etc

e comparariamos os resultados se na tabela 1 tem 192.168.0.2 iria verificar na outra tabela e me mostrar se numa estiver e na outra nao ele me daria o status dele (X) para usado e (V) para livre...


se tiver em uma e nao tiver na outra ele me da como vago
e se tiver em uma e na outra ele me da como usado
so que respeitando a ordem crecente 2, 6, 10, 14, 18 etc

n sei explicar bem nao
mais a idea e essa

obrigado ;-)

#6 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 12/11/2009, 12:29

cara se entendi o que vc quer é mais ou menos isso

<?php
/**
 * @author Squall
 * @copyright 2009
 */
 
 $sql =mysql_query("SELECT ip FROM tabela") or die (mysql_error());
 while($linha = mysql_fetch_assoc($sql))
 {
	$vetor[] = $linha['ip'];
 }

$ip_base = "192.168.1.";

for($x = 1; $x <= 254; $x++)
{
	if(array_search($ip_base. $x,$vetor))
	{
		echo $ip_base . $x . " = Ocupado";
	}
	else
	{
		echo $ip_base . $x . " = Livre";
	}
}
?>

Edição feita por: Squall Robert, 12/11/2009, 12:38.

<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>

#7 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 13/11/2009, 07:52

Oopa estamos quase la!
e isso ai mesmo
so preciso de uma alteração....
onde ele gera o for queria adiconar esse codigo ($x = 2; $x < 255; $x = $x+4) para gerar os ips de 4 em 4 para verificação

<?php
/**
 * @author Squall
 * @copyright 2009
 */
 include("conexao.php");
 
 $classe = "10.7.7.";
 
 //$sql =mysql_query("SELECT ip FROM log") or die (mysql_error());
 /* alteirei a linha de baixo para me mostrar a classe de ips que quero buscar no banco de dados */
 $sql =mysql_query("SELECT * FROM log  WHERE ip REGEXP '" . $classe . "' GROUP BY ip ORDER BY (ip) ASC") or die (mysql_error()); 
 while($linha = mysql_fetch_assoc($sql))
 {
	$vetor[] = $linha['ip'];
 }

$ip_base = $classe;

/*gostaria de inserir este comando para que ele procure de 4 em 4 */
//($x = 2; $x < 255; $x = $x+4)

for($x = 1; $x <= 255; $x++)
{
	if(array_search($ip_base. $x,$vetor))
	{
		echo $ip_base . $x . " = Ocupado<br>";
	}
	else
	{
		echo $ip_base . $x . " = Livre<br>";
	}
}
?>

voce e D+
estou muito grato pela sua ajuda!

Edição feita por: cleimar, 13/11/2009, 07:53.


#8 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 13/11/2009, 08:21

e ai man

seguinte isso deve resolver


<?php
/**
 * @author Squall
 * @copyright 2009
 */
 include("conexao.php");
 
 $classe = "10.7.7.";
 
 //$sql =mysql_query("SELECT ip FROM log") or die (mysql_error());
 /* alteirei a linha de baixo para me mostrar a classe de ips que quero buscar no banco de dados */
 $sql =mysql_query("SELECT * FROM log  WHERE ip REGEXP '" . $classe . "' GROUP BY ip ORDER BY (ip) ASC") or die (mysql_error()); 
 while($linha = mysql_fetch_assoc($sql))
 {
	$vetor[] = $linha['ip'];
 }

$ip_base = $classe;

/*gostaria de inserir este comando para que ele procure de 4 em 4 */
//($x = 2; $x < 255; $x = $x+4)
$y = 1;
$res = "";
for($x = 1; $x <= 255; $x++)
{
	if(array_search($ip_base. $x,$vetor))
	{
		$res .= $ip_base . $x . " = Ocupado<br>";
		//echo $ip_base . $x . " = Ocupado<br>";
	}
	else
	{
		$res .= $ip_base . $x . " = Livre<br>";
		//echo $ip_base . $x . " = Livre<br>";
	}
	if($y == 4)
	{
		echo $res;
		$y = 1;
		$res = "";
	}
	$y++;
}
?>

<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>

#9 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 13/11/2009, 10:09

Ola Squall Robert,
tamo qasela ;-)
ele gera o seguinte

10.7.7.1 = Livre
10.7.7.2 = Ocupado
10.7.7.3 = Livre
10.7.7.4 = Livre
10.7.7.5 = Livre
10.7.7.6 = Livre
10.7.7.7 = Livre
10.7.7.8 = Livre
10.7.7.9 = Livre

no caso ele teria que gerar assim


10.7.7.2Ocupado
10.7.7.6 = Livre
10.7.7.10 = Ocupado
10.7.7.14 = Livre
10.7.7.18 = Livre
10.7.7.22 = Livre
10.7.7.26 = Ocupado
10.7.7.30 = Livre
10.7.7.34 = Livre
10.7.7.38 = Ocupado
so falta ficar assim e fica prontinho ;)
cara nem sei como te agradecer ;)
valeu mesmo!!!

#10 Squall Robert

Squall Robert

    Mr. Squall - Mais Carne do que Osso (hihi)

  • Usuários
  • 507 posts
  • Sexo:Masculino
  • Localidade:Curitiba
  • Interesses:Php ... Php...Php

Posted 13/11/2009, 11:36

vc quer que pule de 4 em 4 ?

vc não quer mostrar os 4 e sim a cada 4?

ai é so mudar $x+4

que vai funfar
<?php

$squall = new Squall();

$squall->Ajudando("você");

$resultado = $squall->solucao();  ?>

#11 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 13/11/2009, 14:23

Troque o seu for por:

[codebox]
for($x = 2; $x <= 255; $x += 4)
[/codebox]

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#12 cleimar

cleimar

    Novato no fórum

  • Usuários
  • 6 posts
  • Sexo:Não informado

Posted 13/11/2009, 16:38

Boa tarde pessoal gostaria muito de agradecer o Squall Robert e o Dudu pelas suas colaboraçoes!
que deus abençoe as mentes brilhantes que voces tem e que continuem assim ajudando o proximo
muito obrigado mesmo ;-)
Fiquem com Deus e qualquer coisa estarei ai para ajudar sou leigo mais um dia fico bom
forte abraço aos colaboradores!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq