Ir para conteúdo

POWERED BY:

Arquivado

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

Thiago Dell Agnesi

Alguem pode me explicar sobre if (!empty()) ? Estou com problemas.

Recommended Posts

$conn = mysql_connect("localhost", "teste", "123456") or die ('Não foi possivel conectar ao banco de dados! Erro: ' . mysql_error());
		
if ($conn) {mysql_select_db("teste", $conn);}
		
$sql2 = mysql_query("select i.userid, i.status, i.created as data, i.total as valor, a.name as nome, a.company as unidade 	from invoices i inner join accounts a on (i.userid = a.id)	where i.userid = $nossonumero and i.status = 'Unpaid' group by `duedate`
						  ");
				
													  
				if (!empty($sql2)) {

				$unidade = mysql_fetch_array($sql2);
				
				$unidade1 =$unidade["unidade"];
				$datavenci =$unidade["data"];
				$valor_final =$unidade["valor"];
				$nome_inquilino = $unidade['nome'];
				
				$new_date = date('Y-m-d', strtotime($datapagamento));
				
				
	// Atualizando a tabela Invoice
$sqlupdate = mysql_query("UPDATE invoices SET status = 'Paid', total = '$valorpago', duedate = '$new_date' WHERE userid = '$nossonumero'");


 <table class="table table-striped mbzero tbl-mail">        
                  <thead>
          
                 <tr>
                   <th width="50%" class="modal-footer">Registro:
                   <?php echo $nossonumero;   ?>
                   </th>
                   
                   <th width="50%">
                     Unidade: <?php if ($unidade1 != ''){echo $unidade1;} else {echo '<span class="alert-danger">Não Cadastrado</span>';}?>
                    </th>
                 
                   <tr>
               		 <th class="modal-footer">Data do pagamento:
                     <?php echo $new_date;   ?>
                     </th>
               		 <th>Data da Emissão:  
                     <?php echo $datavenci;   ?>
                     </th>
             	   </tr>
                   
                <tr>
                  <th class="modal-footer">Valor Pago:
                  <?php echo $valorpago2;   ?>
                  </th>
                     <th>Valor Original: 
                  <?php echo $valor_final;   ?></th>
                </tr>
              
          
        </thead>
    
      </table>
                  
          
                    </ul>
                  </div>
                </div>
              </div>
            </div>

            <?php } else{echo " Nenhum arquivo encontrado na tabela";}?>

Neste codigo acima, ele lê um arquivo texto e pesquisa na tabela se o numero "$nossonumero" existe. caso existir ele grava, caso não existir ele manda a mensagem " Nenhum arquivo encontrado na tabela"

 

Mas da forma que está ai, o sistema quando não acha o arquivo ele dá a mensagem, mas mesmo assim grava na tabela...

 

Estou usando o if (!empty($sql2)) que foi uma forma que um usuario aqui do Imasters me passou, porém não estou conseguindo usar... alguém me dá um help?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente com if(!empty($unidades)) por que vc tá fazendo if(!empty($sql2)) isso sempre vai retornar verdadeiro, mesmo que a query falhar, a variavel $sql2 sempre vai ter algum valor setado nela pq tem string que vc setou manualmente

 

vc tbm não esqueceu de fechar o primeiro bloco de códigos com ?> não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

É óbvio que $sql2 não está "vazia".

O mais correto é ao invés do if !empty:

 

 


if( mysql_num_rows( $rsd ) > 0){
        while ( $unidade = mysql_fetch_array($sql2)){
   
             $unidade1 =$unidade["unidade"]; 
             $datavenci =$unidade["data"]; 
             $valor_final =$unidade["valor"];
             $nome_inquilino = $unidade['nome'];
             $new_date = date('Y-m-d', strtotime($datapagamento));
        }          
               
    }else{  
        echo "Nenhum resultado";  
    }

    

Só não entendi o update. Onde está setada a váriavel $valorpago?

 

Quanto ao empty dá uma olhada nesse exemplo http://codepad.org/RtuJ3JEx

Veja a documentação http://www.php.net/manual/pt_BR/function.empty.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas uma nota: Em pleno 2014 e continuar usando mysql? existe mysqli e PDO já, além de que o PHP6 já está em desenvolvimento e já existem partes da documentação adaptadas ao PHP6(!) vão se passar alguns anos, o sistema do seu cliente vai parar de funcionar e aí o que? você vai refazer tudo de novo?....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Apenas uma nota: Em pleno 2014 e continuar usando mysql? existe mysqli e PDO já, além de que o PHP6 já está em desenvolvimento e já existem partes da documentação adaptadas ao PHP6(!) vão se passar alguns anos, o sistema do seu cliente vai parar de funcionar e aí o que? você vai refazer tudo de novo?....

Vdd... não sei se é o caso dele mais aparentemente boa parte das pessoas que conhecem o php hoje não conhecem ou sla o que acontece que não aprendem o php 5 em diante, muitos usam disso para trás.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, o pessoal pesquisa no google e muitas vezes caem em sites com posts antigos. Poderiam filtrar a pesquisa. Outros pegam códigos prontos e voilá.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, o pessoal pesquisa no google e muitas vezes caem em sites com posts antigos. Poderiam filtrar a pesquisa. Outros pegam códigos prontos e voilá.

:yes:

Compartilhar este post


Link para o post
Compartilhar em outros sites

:innocent: pt stackoverflow está ganhando os geeks do fórum kkkk. Mas as diretrizes de lá, não permitem que o nível do fórum caia.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, empty que eu saiba não funciona com query, pois query retorna true ou false. Tente usar o isset:

 

if (isset($sql2)) 

Ou, se tu quiser usar o empty

if (!empty(mysql_num_rows($sql2))) 

Ou ainda

if (mysql_num_rows($sql2) > 0) 

 

Escolha e seja feliz!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pelas dicas, mas nada me ajudou... ou melhor, não consegui solucionar meu problema.

Vou tentar ser mais claro, logo abaixo da minha duvida, segue o código.

 

Seguinte, neste script abaixo, o sistema recebe várias linhas de um arquivo txt. Tenho que pegar estas linhas, dividir em variáveis (o que já está feito como podem ver no script) e gravar em 3 tabelas diferentes essas informações.

Como nao sei se existe a cláusula where no insert Into tenho que fazer uma rotina, ou um laço de repetição, que só insere as linhas que entram na condição estipulada.

 

Da maneira abaixo, ele somente vê se existe o id, que está na variável "$nossonumero" na tabela e insere, porém, na tabela "transactions " ele acaba inserindo todas as outras linhas que não fazem parte da condição.

Segue o código, Vou tentar comentar as principais variáveis e rotinas.

 

<?php

		

function linhaProcessada($self, $numLn, $vlinha) {
  if($vlinha) {
	  if($vlinha["registro"] == $self::DETALHE) {
		  
	$conn = mysql_connect("localhost", "****", "*****") or die ('Não foi possivel conectar ao banco de dados! Erro: ' . mysql_error());
	if ($conn) {mysql_select_db("****", $conn);}
	
		  
      $nossonumero = $vlinha['nosso_numero'];  // <<< AQUI NESTA VARIÁVEL FICA O ID DO CLIENTE NO MEU DB

      $datapagamento = $vlinha["data_ocorrencia"];  // <<< AS DEMAIS SÃO AS OUTRAS VARIÁVEIS QUE LÊ O ARQUIVO TXT
      $valorpago = $vlinha["valor_recebido"];
      $numerodotitulo = $vlinha["num_titulo"];
	  
	  $valorpago2=number_format ($valorpago, 2, ',', '.');
	  $valorpago3=number_format ($valorpago, 2, '.', ',');
	  $new_date = date('Y-m-d', strtotime($datapagamento));
	  $iid = $nossonumero; 
	  
	  $sql2 = mysql_query("select i.userid, i.status, i.created as data, i.total as valor, a.name as nome, a.company as unidade 
							from invoices i
							inner join accounts a on (i.userid = a.id)
							where i.userid = $nossonumero and i.status = 'Unpaid'
							group by `duedate` ");
						  
$unidade = mysql_fetch_array($sql2);
$totalboletos = mysql_num_rows($sql2);			
$unidade1 =$unidade["unidade"];
$datavenci =$unidade["data"];
$valor_final =$unidade["valor"];
$nome_inquilino = $unidade['nome'];
							
	  if (isset($sql2)){
		  
		 

				// Atualizando a tabela Invoice - AQUI FUNCIONA POR CAUSA DO WHERE
				$sqlupdate = mysql_query("UPDATE invoices 
										  SET status = 'Paid', 
										  total = '$valorpago', 
										  duedate = '$new_date' 
										  
										  WHERE userid = '$nossonumero'");

				
				// Inserindo a transaçao de pagamentos - << AQUI É O PROBLEMA >> ELE ADICIONA TODAS AS INFORMAÇÕES
				$sqlinsert = mysql_query("INSERT INTO transactions 
										 (ttype, tfrom, tto, amount, date, memo, status) 
										 VALUES ('Income', '$nossonumero', '102', '$valorpago', '$new_date', 'Invoice Payment', 'Completed') ");
  							
							
							
				// Adicionando o valor no caixa
				$caixa = mysql_query("select balance from accounts WHERE acctype = 'Bank' ");
						  
				$account = mysql_fetch_array($caixa);
				$balancooriginal =$account["balance"];			
				$somabalanco = $balancooriginal + $valorpago ;
				
				$bancoupdate = mysql_query("UPDATE accounts
										  SET balance = '$somabalanco'
										  WHERE acctype = 'Bank'");
										 
			mysql_close($conn);
       
    
	  
	  echo " <tr>
	  		<td>$unidade1</td>
            <td>$numerodotitulo</td>
            <td>$new_date</td>
			
            <td> $valorpago2</td>
          </tr>";
	  
      
		  
    }
	  } //<< esta chave refere ao isset do banco de dados

  } else echo "Nenhum arquivo encontrado<br/>\n";
}



// DESCONSIDERE ESTA FUNCTION

function linhaProcessada1($self, $numLn, $vlinha) {
  printf("%08d) ", $numLn);
  if($vlinha) {
    foreach($vlinha as $nome_indice => $valor)
      echo get_class($self) . ": $nome_indice: <b>$valor</b><br/>\n ";
    echo "<br/>\n";
  } else echo "Tipo da linha não identificado<br/>\n";
}






//-AQUI ELE SÓ DÁ INICIO AO CHAMADO DA ROTINA QUE LÊ O ARQUIVO TXT DE RETORNO E DIVIDE NAS SUBSTRING DO INICIO DO CÓDIGO

$fileName = $pasta.$nome_atual;

$cnab400 = RetornoFactory::getRetorno($fileName, "linhaProcessada");
//$cnab400 = RetornoFactory::getRetorno($fileName, "linhaProcessada1");


$retorno = new RetornoBanco($cnab400);
$retorno->processar();

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.