Ir para conteúdo
JhoniWillian

Como comparar duas colunas em uma tabela usando function?

Recommended Posts

Bom dia Galera, estou fazendo um trabalho aqui e estou tendo dificuldades.

 

O que acontece é: eu tenho uma tabela que nessa tabela, irá retornar um select que estou fazendo em um banco de dados MySQL, nesse select eu puxo algumas colunas, dentre elas 4 colunas fundamentais..

 

Que seriam:

Inicio_prev(DATA de incio de produção previsto)  

fim_prev(Data de fim de produção previsto) 

inicio_prod(data de inicio de produção real)

fim_prod(Data de fim de produção real) 

 

Minha ideia é o seguinte: nessa tabela que trará o select com essas informações, gostaria de comparar as colunas: inicio_prev com a inicio_prod, onde, se a coluna da data do inicio_prev for > (maior) que a coluna inicio_prod, ele deve mudar a cor daquela linha para vermelho, informando que aquela ordem de produção não está sendo produzida no seu tempo que era previsto para produzir. porém se a coluna inicio_prev de Produção previsto for > que a inicio_prod de Produção NC MES ele ta pintando a coluna toda e não ta aceitando a validação na function. Hoje a tabela está saindo assim

 

 

OP  Inicio Produção Previsto  Fim Produção Previsto  Inicio Produção NC MES  Fim Produção NC MES

12548749   18/06 10:35   18/06 10:35   18/06 09:35   18/06 09:35

12548749   18/06 10:35   18/06 10:35   18/06 09:35   18/06 09:35

12548749   18/06 10:35   18/06 10:35   18/06 09:35   18/06 09:39

 

Meu código está assim:

 

if($conexao)
    {
        $sql = "SELECT ordem, cod_item, DATE_FORMAT(inicio_prev,'%d/%m %H:%i') as inicio_prev, DATE_FORMAT(fim_orev,'%d/%m %H:%i') as fim_prev, DATE_FORMAT(inicio_prod,'%d/%m %H:%i') as inicio_prod , DATE_FORMAT(fim_prod,'%d/%m %H:%i') as fim_prod FROM pixie_andon_nc where operacao = '00015'"; //Exibir últimos 10 registros, DESC
        $consulta = mysql_query($sql);
        
        
        $inicio = ["inicio_prev"];
        $inicioprod = ["inicio_prod"];


        // Armazena os dados da consulta em um array associativo
        while($registro = mysql_fetch_assoc($consulta))
        {
            echo '<td>'.$registro["ordem"].'</td>';
            echo '<td>'.$registro["inicio_prev"].'</td>';
            echo '<td>'.$registro["fim_prev"].'</td>';
            $color = data_maior_prevista($registro["inicio_prod"]);
            echo "<td style='background: {$color}; color: #444555;'>".$registro["inicio_prod"]."</td>";
            echo '<td>'.$registro["fim_prod"].'</td>';
            echo '</tr>';
        }
        echo '</table>';
    }
        
        function data_maior_prevista()
        {
            if($inicio > $inicioprod)
            {
                $color = "#e60000";
            }
            else
            {
                $color = "#FFF";
            }
            return $color;
        }

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, JhoniWillian disse:

Minha ideia é o seguinte: nessa tabela que trará o select com essas informações, gostaria de comparar as colunas: inicio_prev com a inicio_prod, onde, se a coluna da data do inicio_prev for > (maior) que a coluna inicio_prod, ele deve mudar a cor daquela linha para vermelho, informando que aquela ordem de produção não está sendo produzida no seu tempo que era previsto para produzir. porém se a coluna inicio_prev de Produção previsto for > que a inicio_prod de Produção NC MES ele ta pintando a coluna toda e não ta aceitando a validação na function. Hoje a tabela está saindo assim

 

 

 

Até onde entendi seu calculo é independente dos demais registros, então podemos quebrar o problema maior em menores...

 

Veja se o exemplo abaixo te ajuda:

 

<?php


//No banco os registros normalmente vem em 'Y-m-d'
$registrosTestes = [
	[
		'id'			=> 1,
		'inicio_prev' 	=> '2017-08-25',
		'fim_prev'		=> '2017-08-24',
		'inicio_prod'	=> '2017-08-10',
		'fim_prod'		=> '2017-08-15'	
	],
	[
		'id'			=> 2,
		'inicio_prev' 	=> '2017-08-20',
		'fim_prev'		=> '2017-08-20',
		'inicio_prod'	=> '2017-08-10',
		'fim_prod'		=> '2017-08-15'	
	]
];

//echo '<pre>';print_r($registrosTestes);
//echo date('Y-m-d');

$timeZone = new DateTimeZone('UTC');
foreach($registrosTestes as $entrega) {
	$inicio_prev = DateTime::createFromFormat ('Y-m-d H:i ', $entrega['inicio_prev'], $timeZone);	
	$fim_prev = DateTime::createFromFormat ('Y-m-d H:i', $entrega['fim_prev'], $timeZone);
	
	if ($inicio_prev >= $fim_prev) {
		echo 'Data de inicio_prev é maior ou igual que data de saida!';
	} else {
		echo 'Data de inicio_prev é menor que data de saida!';
	}
	
}

 

 

A ideia da função é boa mesmo, assim você isola melhor a responsabilidade.

 

function ehInicioPrevMaiorOuIgual(DateTime $inicio_prev, DateTime $fim_prev){
	
	if ($inicio_prev >= $fim_prev) {
		return true
	} 

	return false;	
}

 

 

 

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito bem galera, obrigado pela ajuda, fiz isso e deu certo, ele ta validando agora a data maior e só está pintando a coluna que estiver com a data de inicio previsto maior que a data de inicio produzido.

 

pra quem tiver interesse em como ficou:


Obrigado Gabriel e também ao Osmar

while($registro = mysql_fetch_assoc($consulta))
		{
			echo '<td>'.$registro["ordem"].'</td>';
			echo '<td>'.$registro["inicio_prev"].'</td>';
			echo '<td>'.$registro["fim_prev"].'</td>';
			$inicio_prev = $registro['inicio_prev'];
			$inicio_prod = $registro['inicio_prod'];
			
			if ($inicio_prev > $inicio_prod)
			{
				echo '<td>'.$registro["inicio_prod"].'</td>';
			}
			else
			{
				$color = data_maior_prevista($registro["inicio_prod"]);
				echo "<td style='background: {$color}; color: #444555;'>".$registro["inicio_prod"]."</td>";
				
			}				
			echo '<td>'.$registro["fim_prod"].'</td>';
			echo '</tr>';
		}
		echo '</table>';
	}
		
		function data_maior_prevista()
		{
			if($inicio > $inicioprod)
			{
				//$color = "#e60000";
				$color = "#e60000";
			}
			else
			{
				$color = "#e60000";
			}
			return $color;
		}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Brother sua função não faz sentido, ela não vai funcionar...

 

No seu caso o motivo é a ausência de parâmetros/argumentos.

 

Da uma lida:

https://secure.php.net/manual/pt_BR/language.functions.php

 

<?php

function data_maior_prevista()
{
    //$inicio > $inicioprod não foi definido em nenhum momento.
    if($inicio > $inicioprod)
    {        
        $color = "#e60000";
    }
    else
    {
        $color = "#e60000";
    }
    return $color;
}

 

 

Da uma lida sobre escopo 

http://php.net/manual/pt_BR/language.variables.scope.php

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Gustavo2503
      Eu estou criando uma classe que cria modais usando React, eu preciso criar um modal dentro de um modal, para isso, eu quero chamar a mesma função dentro dela mesma. O modal é criado, mas o problema é que ele não abre, abre o modal principal (#modal-1), mas não abre o sub modal (#modal-2), veja como ficou meu código:
      index.html
      <!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Modal</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"> <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script> <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script> <script src="js/modal.js" type="text/babel"></script> <link rel="stylesheet" href="css/modal.css"> </head> <body> <div align="center"> <h1>Modal</h1> </div> <button type="button" data-modal="modal-1">Open Modal</button> <div id="modal-content"></div> <script type="text/babel"> const contentSub = [ <h2>Title SubModal 1</h2>, <p>SubModal</p>, <small>Rodapé submodal 1</small> ]; const idSub = "modal-2"; const content = [ <h2>Title 1</h2>, <section> <button type="button" data-modal="modal-2">Open SubModal</button> <Modal id={idSub} content={contentSub}/> </section>, <small>Rodapé 1</small> ]; const id = "modal-1"; ReactDOM.render( <Modal id={id} content={content}/>, document.getElementById('modal-content') ); </script> </body> </html> js/modal.js
      class Modal extends React.Component{ constructor(props) { super(props); this.id = this.props.id; this.backgroudColorHeader = this.props.backgroudColorHeader === undefined ? 'rgba(103, 117, 240, 1)' : this.props.backgroudColorHeader; this.textColorHeader = this.props.textColorHeader === undefined ? '#fff' : this.props.textColorHeader; this.backgroudColorBody = this.props.backgroudColorBody === undefined ? 'rgba(255, 255, 255, 1)' : this.props.backgroudColorBody; this.textColorBody = this.props.textColorBody === undefined ? '#000' : this.props.textColorBody; this.backgroudColorFooter = this.props.backgroudColorFooter === undefined ? 'rgba(103, 117, 240, 1)' : this.props.backgroudColorFooter; this.textColorFooter = this.props.textColorFooter === undefined ? '#fff' : this.props.textColorFooter; this.borderRadius = this.props.borderRadius === undefined ? '8px' : this.props.borderRadius; this.content = this.props.content === undefined ? [<h2>header content</h2>, <p>body content</p>, <p>footer content</p>] : this.props.content; this.size = this.props.size === undefined ? 3 : this.props.size; } closeModal = () => { $('#'+this.id).removeClass("show"); $('body').removeClass("overflow-hidden"); }; render(){ $(`[data-modal]`).click( function () { var id = $(this).attr("data-modal"); var el = document.getElementById(id); $(el).addClass("show"); $('body').addClass("overflow-hidden"); }); var background, text; background = this.backgroudColorHeader; text = this.textColorHeader; const transparencyBackgroundHeader = background.substring(background.length-2,background.length-1) -.1; const backgroundColorHeader = `${background.substring(0,background.length-2)}${transparencyBackgroundHeader})`; const styleColorHeader = { backgroundColor: backgroundColorHeader, color: text, borderBottom: `1px solid ${background}` }; background = this.backgroudColorBody; text = this.textColorBody; const styleColorBody = { backgroundColor: background, color: text }; background = this.backgroudColorFooter; text = this.textColorFooter; const transparencyBackgroundFooter = background.substring(background.length-2,background.length-1) -.1; const backgroundColorFooter = `${background.substring(0,background.length-2)}${transparencyBackgroundFooter})`; const styleColorFooter = { backgroundColor: backgroundColorFooter, color: text, borderTop: `1px solid ${background}` }; const styleBorderRadius = {borderRadius: this.borderRadius}; const eDivision = ['h', 'b', 'f']; const eContent = this.content; var div = []; for (var i=0;i<eContent.length;i++){ const part = eDivision[i].replace('h', 'header').replace('b', 'body').replace('f', 'footer')+"-modal"; const closeModal = i === 0 ? <span onClick={this.closeModal} className="close-modal"><i className="material-icons">close</i></span> : "" ; var style; if (i===0) style = styleColorHeader; else if (i===1) style = styleColorBody; else style = styleColorFooter; div.push(<div key={i+1} className={part} style={style}> {closeModal} {eContent[i]} </div>); } const eSize = this.size; const s = ['s', 'm-s', 'm', 'm-l', 'l']; const size = s[eSize-1]; const classModal = (size !== "s" && size !== "m-s" && size !== "m" && size !== "m-l" && size !== "l") ? 'modal-modal modal-m' : "modal-modal modal-"+size; return <div id={this.id} className={classModal}> <div className="overflow-modal"> <div className="container-modal" style={styleBorderRadius}> {div} </div> </div> </div>; } }  
    • Por PeeWee
      Estou há horas com um problema no meu código, tenho a pagina Auth.php onde há algumas function que funcionam normalmente, porém a seguinte apresenta problemas.
      function getMemberNivel($nivel) {
              $db_handle = new DBController();
              $query = "Select * from members where nivel = ?";
              $result = $db_handle->runQuery($query, 's', array($nivel));
              return $result;
          }
       
      Na Index.php faço a chamada dela da seguinte forma:
       
      $teste = $auth->getMemberByUsername($nivel);
       
      Ocorre que preciso utilizar a variavel $teste, só que exibe erro como se a variavel nao existisse. As demais variaveis vindas da pagina funcionam normalmente. 
      Espero que algum dos colegas possa me ajudar. 
    • Por camargo.2018
      Tou com um erro no meu script e não sei identificar erra pra ele exibir a imagem do usuário mas isso não está acontecendo
       
      Error:

       
      funcao.php:
      function ver_avatar($nick){ include 'str_get_html.php'; $url = "http://pt.clubcooee.com/users/view/".$nick; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_TIMEOUT, 15); $return = curl_exec($ch); curl_close($ch); $html = str_get_html($return); $res = $html->find('.m33 img'); $imgLink = $res[0]->attr['src']; return $imgLink; } str_get_html.php:
      <?php function str_get_html($str, $lowercase=true, $forceTagsClosed=true, $target_charset = DEFAULT_TARGET_CHARSET, $stripRN=true, $defaultBRText=DEFAULT_BR_TEXT, $defaultSpanText=DEFAULT_SPAN_TEXT) { $dom = new simple_html_dom(null, $lowercase, $forceTagsClosed, $target_charset, $stripRN, $defaultBRText, $defaultSpanText); if (empty($str) || strlen($str) > MAX_FILE_SIZE) { $dom->clear(); return false; } $dom->load($str, $lowercase, $stripRN); return $dom; } ?> menu.php:
      <div class="usr-nav"> <img src="<?php $veavt = ver_avatar($usr); echo $veavt; ?>" class="img-usr"> <p class="name-usr">Nome do Usuário</p> </div>  
      Me Ajudem mas rápido possível pfvrrrr
    • Por camargo.2018
      Não faz upload de jeito nenhum esse e o código que tentei (Pfvr me ajuda :D):
       
      Html:
      <div class="conteudo">     <form enctype="multipart/form-data" action="?pag=upload-programetes" method="POST">     <input type="hidden" name="MAX_FILE_SIZE" value="999999999999999" />     Enviar novos Programetes: <input name="userfile" type="file" />     <input type="submit" value="Enviar arquivo" /> </form></div> Php:
      if($_GET['pag'] == "upload-programetes"){ $upload = upload_programetes($_FILES); echo $upload; } função:
      function upload_programetes($up){ $uploaddir = $_SERVER["DOCUMENT_ROOT"].'/programetes/'; $uploadfile = $uploaddir . basename($up['userfile']['name']); if (move_uploaded_file($up['userfile']['tmp_name'], $uploadfile)) {     return "Arquivo válido e enviado com sucesso.\n"; } else {     return "Possível ataque de upload de arquivo!\n"; } }  
    • Por guilherme.audi
      Olá, pessoal,
      Sou meio-leigo e logo mais serei vesgo... não entendi onde está o problema:
       
      Tenho uma situação de submenu bem simples, que deve mostrar (display="table") e esconder (display="none") algumas divs, conforme a seleção do usuário.
      No início da página antes do <head> criei a seguinte estrutura:
       
      <!-- CONTROLE DE ABAS :: MENU DETALHES -->
      <script>
          function SelecCarac() {
              var caracteristicas = document.getElementById('div_carac');
              var dimensoes = document.getElementById('div_dimensoes');
              var projeto3d = document.getElementById('div_3d');
              var videotutorial = document.getElementById('div_video');
              var esquemafios = document.getElementById('div_esquemafios');
              
              caracteristicas.style.display = "table";
              dimensoes.style.display = "none";
              projeto3d.style.display = "none";
              videotutorial.style.display = "none";
              esquemafios.style.display = "none";
          }
          function SelecDimensoes() {
              var caracteristicas = document.getElementById('div_carac');
              var dimensoes = document.getElementById('div_dimensoes');
              var projeto3d = document.getElementById('div_3d');
              var videotutorial = document.getElementById('div_video');
              var esquemafios = document.getElementById('div_esquemafios');
              
              caracteristicas.style.display = "none";
              dimensoes.style.display = "table";
              projeto3d.style.display = "none";
              videotutorial.style.display = "none";
              esquemafios.style.display = "none";
          }
          function Selec3D() {
              var caracteristicas = document.getElementById('div_carac');
              var dimensoes = document.getElementById('div_dimensoes');
              var projeto3d = document.getElementById('div_3d');
              var videotutorial = document.getElementById('div_video');
              var esquemafios = document.getElementById('div_esquemafios');
              
              caracteristicas.style.display = "none";
              dimensoes.style.display = "none";
              projeto3d.style.display = "table";
              videotutorial.style.display = "none";
              esquemafios.style.display = "none";
          }
          function SelecVideo() {
              var caracteristicas = document.getElementById('div_carac');
              var dimensoes = document.getElementById('div_dimensoes');
              var projeto3d = document.getElementById('div_3d');
              var videotutorial = document.getElementById('div_video');
              var esquemafios = document.getElementById('div_esquemafios');
              
              caracteristicas.style.display = "none";
              dimensoes.style.display = "none";
              projeto3d.style.display = "none";
              videotutorial.style.display = "table";
              esquemafios.style.display = "none";
          }
          function SelecEsquemaFios() {
              var caracteristicas = document.getElementById('div_carac');
              var dimensoes = document.getElementById('div_dimensoes');
              var projeto3d = document.getElementById('div_3d');
              var videotutorial = document.getElementById('div_video');
              var esquemafios = document.getElementById('div_esquemafios');
              
              caracteristicas.style.display = "none";
              dimensoes.style.display = "none";
              projeto3d.style.display = "none";
              videotutorial.style.display = "none";
              esquemafios.style.display = "table";
          }
      </script>
      (ridiculamente extenso, até suponho que haja um caminho menor..)
       
      As abas desse "submenu" estão no corpo da página (asp clássico) assim:

      <!-- ABAS :: MENU DE DETALHES DO PRODUTO -->
      <div class="container-principal" style="text-align: center;">
          <% if Len(VetProd(97,0)) > 5 Then %>
              <div class="detalhe-menu-abas" id="bt_carac" onclick="SelecCarac()" >Características</div>
          <%End if
          if Len(VetProd(11,0)) > 0 Then %>
              <div class="detalhe-menu-abas" id="bt_dimensoes" onclick="SelecDimensoes()">Dimensões</div>
          <%End if
          if Len(VetProd(92,0)) > 1 Then %>
              <div class="detalhe-menu-abas" id="bt_3d" onclick="Selec3D()">Desenho 3D</div>
          <%End if
          if Len(VetProd(135,0)) > 3 Then %>
              <div class="detalhe-menu-abas" id="bt_video" onclick="SelecVideo()">Video tutorial</div>
          <%End if
          if Len(VetProd(22,0)) > 0 Then %>
              <div class="detalhe-menu-abas" id="bt_esquemafios" onclick="SelecEsquemaFios()">Ligação dos fios</div>
          <%End if%>
      </div>
      <!-- -->
       
      ..E essas id chamadas "div_carac", "div_dimensoes", "div_3d", "div_video" e "div_esquemafios" estão assim:
       
      <!-- DIMENSÕES -->
      <div class="container-principal" style="text-align: center; display: none;" id="div_dimensoes">
          <h3 style="text-align: left;">Dimens&otilde;es<span class="letramed2">&nbsp;(mm)</span></h3>
          <a href="admin/imgs/icones/<%= VetProd(11,0) %>" target="_blank"><img src="admin/imgs/icones/<%= VetProd(11,0) %>" alt="Dimens&otilde;es de <%= VetProd(1,0) %> em mm" title="<%= VetProd(136,0) %>&nbsp;<%= VetProd(2,0) %>&nbsp;<%= VetProd(1,0) %>" class="detalhe-dimensoes"/></a>
      </div>
      <!-- -->
       
      <!-- CARACTERÍSTICAS ESPECIAIS -->
      <div class="container-principal" id="div_carac">
          <h3>Caracter&iacute;sticas especiais</h3>
          <%= VetProd(97,0)%>
      </div>
      <!-- -->
          
      <!-- VÍDEO INCORPORADO  -->
      <div style="background-color: #000000; width: 100%; display: none;" id="div_video">
          <div class="container-principal" style="background-color: black; text-align: center; padding: 1% 0;">
              <iframe class="detalhe-video" src="<%= VetProd(135,0) %>" frameborder="0" allowfullscreen></iframe><br />
              <a href="https://www.youtube.com/user/weightechbrasil/search?query=<%=VetProd(1,0)%>" style="color:#FFFFFF;" title="Veja mais em Youtube/WeightechBrasil" target="_blank" class="submenu"><img src="http://www.weightech.com.br/imgs/site/Logo_Youtube_color_horizontal.png" height="30" title="Canal WeightechBrasil no Youtube" alt="Youtube.com/WeightechBrasil" style="margin-bottom:5px;"/><br>Youtube.com/WeightechBrasil</a>
          </div>
      </div>
      <!-- -->
       
      <!-- PROJETO 3D -->
      <% if Len(VetProd(92,0)) > 1 Then %>
          <div class="container-principal" style="text-align: center; margin-top: 20px; display: none;" id="div_3d">
              <iframe style="width: 100%; height: 680px;" src="<%=VetProd(92,0)%>" allowfullscreen="true" webkitallowfullscreen="true" mozallowfullscreen="true" frameborder="0"></iframe>
          </div>
      <%End if%>
      <!-- -->
       
      <!-- ESQUEMA DE LIGAÇÃO -->
      <div class="container-principal" style="display: none;" id="div_esquemafios">
          <h3>Esquema de liga&ccedil;&atilde;o dos fios</h3>
          <img src="admin/imgs/icones/<%= VetProd(22,0) %>" alt="Esquema de liga&ccedil;&atilde;o" title="<%= VetProd(136,0) %>&nbsp;<%= VetProd(2,0) %>&nbsp;<%= VetProd(1,0) %>" style="width:90%; max-width:400px;"/>
      </div>
      <!-- -->
       
      Tudo funciona, exceto o VÍDEO INCORPORADO (id="div_video").
      Por quê?!
       
      Obrigado!
×

Informação importante

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