Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

josandss

LER XML E CRIAR TABELA COM CORES.

Recommended Posts

Boa tarde a todos! Espero que os amigo possam me ajudar, estou querendo criar uma pagina PHP ou html com uma tabela que será alimentada por um arquivo xml a cada 15min. Como exemplo podemos fazer uma tabela 2x2 onde na linha 1(L1) vai estar a legenda fixa "Cidade1" e na coluna 1(C1) vai estar a legenda fixa "Chuva". Na linha 2(L2) vai estar a legenda fixa "Cidade2" e na coluna 2(C2) vai estar a legenda fixa "Raios". O que eu preciso que, quando no XML estiver com o campo <state description="CHUVA status" value="ON"/> a célula L1C1 da tabela fique verde, quando "OFF" fique vermelha...e assim sucessivamente para outras células que eu venha a adicionar. Os amigos entenderam? Poderiam me ajudar, estou com a cabeça fervilhando, pois não sou muito astuto em programação. Muito grato desde já!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá pra fazer de várias formas, vou dar um exemplo:

<table>
<?php
$servername = "localhost";
$username   = "";
$password   = "";
$dbname     = "";
$con = new mysqli($servername,$username,$password,$dbname);
if($con->error_connect){
	die("Conexão falhou".$con->error);
}
$con = "SELECT * FROM sua_tabela";
$result = $con->query($sql);
while($row = $result->fetch_assoc()){
  if($row['chuva'] == "ON"{
   	$cor_tr = "text-green"; // chama sua classe no css que vai deixer verde a linha. 
  }else{
   	$cor_tr = "qualquer outra cor"; 
  }
?>
  <tr class="<?php echo $cor_tr;?>">
    <td></td>
    <td></td>
  </tr>
<?php
  
}// fecha while
$con->close();
?>
</table>

eu fiz meio completo aí pra você ver a lógica toda do meu exemplo, pq não sei qual o seu nível de conhecimento no php, se for iniciante é bacana você ver o código inteiro.

 

O que manda ali é a verificação IF, é ela que vai direcionar se a sua table vai ficar vermelha ou verde de acordo com o que você definir.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Prezado BrunoMs, primeiramente, muito obrigado pela sua rápida resposta! Vou fazer uns teste com o código que o amigo me passou e te manterei informado...mas, já adianto que ficou bem detalhado...muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 22/09/2017 at 11:45, BrunoMs disse:

Dá pra fazer de várias formas, vou dar um exemplo:


<table>
<?php
$servername = "localhost";
$username   = "";
$password   = "";
$dbname     = "";
$con = new mysqli($servername,$username,$password,$dbname);
if($con->error_connect){
	die("Conexão falhou".$con->error);
}
$con = "SELECT * FROM sua_tabela";
$result = $con->query($sql);
while($row = $result->fetch_assoc()){
  if($row['chuva'] == "ON"{
   	$cor_tr = "text-green"; // chama sua classe no css que vai deixer verde a linha. 
  }else{
   	$cor_tr = "qualquer outra cor"; 
  }
?>
  <tr class="<?php echo $cor_tr;?>">
    <td></td>
    <td></td>
  </tr>
<?php
  
}// fecha while
$con->close();
?>
</table>

eu fiz meio completo aí pra você ver a lógica toda do meu exemplo, pq não sei qual o seu nível de conhecimento no php, se for iniciante é bacana você ver o código inteiro.

 

O que manda ali é a verificação IF, é ela que vai direcionar se a sua table vai ficar vermelha ou verde de acordo com o que você definir.

 

BrunoMS, não estou conseguindo ler o XML que vai preencher as células da tabela, abaixo mostro parte do meu XML:

 

<? xml version = "1.0" encoding = "UTF-8"?>
<sensor = "2000" datetime="20170920155654" type="2" id="MM1" name="MM1">
    <subsystem name = "basics">
       <state description="CHUVA status" value="ON" id="lamps"/>
       <state description="RAIOS high voltage status" value="OFF" id="radiation"/>

...

 

Será que o amigo pode me ajudar?

 

Mais uma vez, muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 horas atrás, BrunoMs disse:

Pior que eu não manjo muito de xml, mas sem duvida jaja aparece alguém que possa te ajudar.

 

BrunoMS, obrigado pela resposta, vou estar aqui estudando como ler XML. Mas, acredito que você possa me ajudar em outro ponto: se ao invés de escrever o texto com cores diferentes eu preenchesse a célula? Por exemplo, quando ON a célula ficaria preenchida de verde e quando OFF de vermelho, o amigo saberia?

 

Muito obrigado por toda a atenção, paciência e educação!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você vai ter que usar o IF, é ele que vai verificar se é pra deixar a célula preenchida de verde quando encontrar ON ou preencher de vermelha quando encontrar OFF.

 

Pra você entender a lógica principal é algo mais ou menos assim:

$verificar = "ON" // ON OU OFF

if($verificar == "ON"){
	$color = "#42f47d"; // verde
}
if($verificar == "OFF"){
	$color = "#f45041"; // vermelho
}

Agora vou te dar um exemplo completo pra você colocar no seu servidor pra você mexer e ir entendendo como funciona, pq basicamente você vai precisar usar IF e WHILE nessa sua tabela.

<table>
<?php
$servername = "localhost";
$username   = "seuuser";
$password   = "suasenha";
$dbname     = "seubanco";

$con = new mysqli($servername,$username,$password,$dbname);
if($con->connect_error){
	die("Conexão falhou: ".$con->error);
}

$sql = "SELECT * FROM sua_tabela";
$result = $con->query($sql);
while($row = $result->fetch_assoc()){
// aqui começa a verificando usando o IF
	if($row['coluna_onde_esta_on_ou_off'] == "ON"){
		$color_tr = "#41f467"; // verde
	}elseif($row['coluna_onde_esta_on_ou_off'] == "OFF"){
		$color_tr = "#f46a41"; // vermelho
	}
?>
	<tr bgcolor="<?php echo $color_tr;?>">
      <td>123</td>
      <td>456</td>
  	</tr>
<?php
}// while
$con->close();
?>
</table>

Poem aí no seu servidor, coloca seu usuário, sua senha, seu banco de dados, sua tabela e altera "coluna_onde_esta_on_ou_off" e vai testando pra você ir entendendo a lógica, é bacana você ir estudando conexão de banco de dados, while e if enquanto for mexendo nesse código pra você entender e depois você mesmo fazer suas modificações, acrescentar coisas e etc.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.