Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
$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?
if (!empty($sql2)) SE NÃO (! - NOT) Estiver em branco/vazio (empty) então faça isso .......
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?
É ó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
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?....
Boa @webdevbr.
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.
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á.
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:
#9 concordo
Mas é o que movimenta o fórum rsssssssss :devil:
: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.
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!
Se quiser realmente usar a gambiarra citada no #1 use simplesmente:
if ($sql2){....
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();
if (!empty($sql2)) verifica se $sql2 esta vazia, é isso que vc quer? se for então tá certo