Hugão
-
Total de itens
25 -
Registro em
-
Última visita
Posts postados por Hugão
-
-
Estou há duas semanas tentando criar uma função PL/SQL para verificar se um boleto foi pago em dia ou não e caso o vencimento caia num feriado ou final de semana o vencimento passa para o próximo dia útil, caso tenha sido pago após a data de vencimento.
O problema é basicamente o descrito
Criei duas tabelas BOLETO e CALENDARIO (foi utilizado o mês de novembro em razão dos feriados) Já povoei as duas entidades.
Minha dificuldade é, no oracle não existe o tipo boolean, portanto não tive como eu definir os feriados e os finais de semana como TRUE, eles estão como number com valor 1 para sim e 0 para não, ou seja, 1 é feriado ou final de semana e 0 não é feriado nem final de semana.
Aqui está a função:
create or replacefunction
CALCULAR_VL_PAGAMENTO(V_CD_BARRAS in varchar2)
return varchar2 is
--Definição de variáveis.
data_vencimento date;
data_vencimento_antiga date;
data_pagamento date;
data_calendario date;
dia_util date;
feriado number;
final_semana number;
atraso number := 0;
valor_documento number(10,2);
valor_pago number(10,2);
verifica_valor_pago number(10,2);
valor_multa number(10,2);
valor_juros number(10,2);
acrescimo number(10,2);
mensagem varchar2(1000);
begin
--Select para recuperar as colunas das duas tabelas que serão utilizadas no corpo da função.
select dt_vencimento, dt_pagamento, vl_documento, vl_acrescimo, vl_pagamento, dt_calendario, bo_feriado, bo_final_semana
into data_vencimento, data_pagamento, valor_documento, acrescimo, valor_pago, data_calendario, feriado, final_semana
from boleto B inner join calendario C on B.dt_vencimento = C.dt_calendario
where cd_barras = v_cd_barras;
valor_multa := 0.10 * valor_documento;
valor_juros := 0.0033 * valor_documento;
--Se o pagamento for menor ou igual à data de vencimento entra aqui
if data_pagamento <= data_vencimento then
mensagem := 'pagamento dentro do prazo!'
||' data de vencimento: '||to_char(data_vencimento, 'dd-mm-yyyy')
||'. data de pagamento: '||to_char(data_pagamento, 'dd-mm-yyyy')
||' valor pago: R$ '||to_char(valor_pago)||'.';
/*
senão (o pagamento ocorreu após o vencimento) entra aqui e verifica se o vencimento caiu num dia não útil para jogar o vencimento para o próximo dia útil.
*/
else
data_vencimento_antiga := data_vencimento; /*Guardando a data de vencimento original*/
/*Aqui se eu usar somente final_semana = 1 or feriado = 1 não entra no while por isso a rendundância data_pagamento > data_vencimento que já foi a condição para entrar no else. O problema está nessa condição porque ele não está avaliando o feriado nem o final de semana porque no final data de vencimento será igual à data de pagamento.
Eu utilizei um boleto que foi pago em 14-11-2012 e venceu num sábado 10-11-2012.
*/
while data_pagamento > data_vencimento and final_semana = 1 or feriado = 1 loop
data_vencimento := data_vencimento + 1;
atraso := 0;
end loop;
/*Aqui é só um teste para testar o while e já tentei o que sei e sempre as datas de pagamento e vencimento saem iguas.*/
mensagem := to_char(data_pagamento, 'dd-mm-yyyy')||' '||to_char(data_vencimento, 'dd-mm-yyyy');
end if;
return mensagem;
end;
-
<select name="idmual">
<select name="idmual">
<select name="idmual">
<select name="idmual">
<select name="idmual">
<select name="idmual">
<select name="idmual">
:angry:
rs
Cara eu vi esse absurdo! Desculpe, alterei e deu certo! :blush:
-
Tudo na paz?
Amigo,
Eu alterei o código para deixar mais limpo e identifiquei que ele não estava excluindo do banco porque estava pegando o idmural 0 e não o idmural selecionado no form select.
A mensagem é: "Mural id 0 deletado com sucesso!". Agora o problema é saber por que ele não pega a opção selecionada no option do select.
Veja como ficou o código (vou postar só as partes pertinenetes):
<?php $combo = (isset($_POST['idmural']) ? $_POST['idmural'] : 0); $deleta = mysql_query("DELETE FROM mural WHERE idmural = $combo"); if ($deleta) { echo "Mural id $combo deletado com sucesso!"; } else { echo "Erro ao deletar!" . mysql_error(); } ?> <div id="painel"> <?php $sql = "SELECT idmural, titulo FROM mural ORDER BY data DESC, idmural DESC"; $resultado = mysql_query($sql) or die(mysql_error()); if (@mysql_num_rows($resultado) == 0) { echo "Nenhum registro encontrado!"; } ?> <form id="form2" name="form2" method="post" action="" enctype="mulpart/form-data"> <table align="center"> <tr> <td><select name="idmual"> <option>Selecione o mural para exclusão.</option> <?php while ($linha = mysql_fetch_array($resultado)) { $idmural = $linha[0]; $titulo = $linha[1]; echo "<option value='$idmural'>$titulo</option>"; } ?> </select></td> <td> <!--<input type="hidden" name="apagar" value="excluir" />--> <input id="excluir" type="submit" name="excluir" value="Excluir" /> </td> </tr> </table> </form> </div><!--Painel-->
-
Boa tarde pessoal!
Estou criando um site para testar meus conhecimentos e fiz um formulário de exclusão como vou citar no código abaixo.
O problema é que quando clico no botão Excluir não exclui o valor do banco e aparece uma mensagem de variável (idmural) não definida na linda 96, mas a mensagem de "Deletado com sucesso" aparece.
Testei uma coisa, quando eu removo o $_POST[idmural] pelo número do id no banco, dá certo. O que eu estou fazendo de errado?
Vejam o código:
<!DOCTYPE html> <html> <head> <title>Painel de controle</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="estilo.css"> <?php include("../connections/connection.php"); $sql = mysql_select_db($database_Connection) or die("Erro ao conectar ao banco de dados, contate o administrador!"); ?> </head> <body id="bodypainel"> <div id="sair"> <a href="<?php echo $logoutAction ?>">Sair</a> </div> <div id="logopainel" > <img src="painel2.png" /> </div> <div id="painel"> <?php if (isset($_POST['apagar']) && $_POST['apagar'] == "excluir"){ $deleta = mysql_query("DELETE FROM mural WHERE idmural = '$_POST[idmural]'"); <----------Linda 96 if ($deleta == 1) { echo "Deletado com sucesso!"; } else { echo "Erro ao deletar!"; } } ?> <form id="form1" name="form1" mathod="post" action="" enctype="mulpart/form-data"> <table border="0" align="center"> <tr> <td id="titulo" colspan="2">Cadastrar Novo Mural</td> </tr> <tr> <td>Título</td> <td><input id="campo" type="text" name="titulo" size="62" placeholder="Título do novo mural"></td> </tr> <tr> <td>Texto</td> <td><textarea id="campo" name="texto" rows="10" cols="60"></textarea></td> </tr> </table> </form> </div> <!--Painel--> <div id="painel"> <?php $sql = "SELECT idmural, titulo FROM mural ORDER BY data DESC, idmural DESC"; $resultado = mysql_query($sql) or die(mysql_error()); if (@mysql_num_rows($resultado) == 0) { echo "Nenhum registro encontrado!"; } ?> <form id="form2" name="form2" method="post" action="" enctype=""> <table align="center"> <tr> <td><select> <option id="hoverSelect" value="apaga mural">Selecione o mural para exclusão.</option> <?php while ($linha = mysql_fetch_array($resultado)) { $idmural = $linha[0]; $titulo = $linha[1]; ?> <option id="hoverSelect" value="<?php echo $idmural; ?>"><?php echo $titulo; ?></option> <?php } ?> </select></td> <td> <input type="hidden" name="apagar" value="excluir" /> <input id="excluir" type="submit" name="excluir" value="Apagar Mural" /> </td> </tr> </table> </form> </div><!--Painel--> </body> </html>
Obrigado pela atenção.
-
Fala galera beleza?
Estou estudando PHP OO, alguém pode me ajudar com a dúvida abaixo?
Criei uma classe Conta.class.php, ela tem os métodos: construtor, destrutor, Retirar, Depositar e ObterSaldo.
Agora, por que no método construtor o exemplo fez chamada somente aos métodos Depositar e ao atributo $Cancelada?
Segue o código:
<?PHP class Conta{ var $Agencia; var $Codigo; var $DataCriacao; var $Titular; var $Senha; var $Saldo; var $Cancelada; //Método construtor. function __construct($Agencia, $Codigo, $DataCriacao, $Titular, $Senha){ $this->Agencia = $Agencia; $this->Codigo = $Codigo; $this->DataCriacao = $DataCriacao; $this->Titular = $Titular; $this->Senha = $Senha; //Chamada a outro método da classe Conta. $this->Depositar(); $this->Cancelada = FALSE; } //Método destrutor. function __destruct(){ echo "Objeto Conta {$Conta->Codigo = $Codigo} de {$conta_hugo->Titular->Nome} finalizada. \n"; } //Metodos Retirar dinheiro //diminui saldo em $quantia. function Retirar($quantia(){ if($quantia > 0){ $this->Saldo -= $quantia; } } //Método obter Depositar //aumenta saldo em $quantia. function Depositar($quantia){ if($quantia > 0){ $this->Saldo += $quantia; } } //Método ObterSaldo. function Obtersaldo(){ $this->Saldo; } } ?>
-
Amigo, tive uma idéia aqui e estou tentando modificar o código. Assim que terminar postarei aqui ainda hoje.
Quanto ao construtor, ainda não estudei isso.
-
A fila deve funcionar assim:
1 - Quando iniciada deve ser zerada automaticamente, mas no meu caso ela apresenta lixo em todas posições.
2 - Quando a fila for impressa, se estiver vazia, deve apresentar a mensagem de fila vazia, não está acontecendo comigo também.
3 - Quando excluídos todos os elementos na próxima exclusão, se estiver vazia, deve informar que está vazia, também não está funcionando.
4 - Na inpressão deve ser mostrada o endereço de memória em hexadecimal, também não consigo fazer mesmo com o %x.
5 - Não consegui fazer o programa como solocitado pelo professor (é um trabalho de faculdade).
O que você me indica? Vamos começar o raciocínio do zero para absorver 100% o conhecimento de fila? Preciso entender isso. Você me ajuda?
Acho melhor começar do zero.
Suas explicações são claras para mim. Acho que pode ajudar.
-
Estou com um pequeno probleminha referente a essa fila.
Na parte da impressão não estou conseguindo fazer ma condição para quando a fila estiver vazia apresentar a mensagem: FIla vazia!
Jà tentei assim:
void imprimeFila(){ if(f[fimFila]==0&&f[fimFila]==0){ printf("\n\nA fima está vazia!!\n"); } else{ printf("\n-----------------------------------------\n"); printf("| Posicao | Elementos | Endereco |\n"); printf("-----------------------------------------\n"); for(int i=0; i<TAMANHO; i++){ printf(" [%u] %u\n",i,f[i]); } } }
Mas não acontece nada e quando tento assim: if(f[fimFila]==-1&&f[fimFila]==1) dá certo só quando zero a fila, pois o f[inicioFila] e f[fimFila] recebem o valor inicial de inicioFila e fimFila que é -1 atribuído no método inicializaFila.
Alguma dica?
-
Eu estava errando porque estava lendo a variável op fora do while. Corriji e deu certo.
Cara muito obrigado! Sou iniciante e autoditaca e está sendo ótimo poder ter a ajuda de pessoas como você. Muito obrigado.
Abraço;
Att,
Hugo Sousa.
-
Não mudou nada.
Na hora que mostro a fila há um loop infinito.
Quando insiro o programa sai após eu digitar o elemento. O mesmo ocorre quando retiro.
Você está ajudando muito!
Muito obrigado pela sua atenção.
-
Ok, o imprime está ok!
Agora ainda não consigo inserir, nem retirar, em ambos dá erro segmentação (apontando para um local de memória vazio).
O método inicioFila funciona em parte, porque ele zera apenas as posições 0,1,5,6 e a última posição sempre vale 4.
-
Olá galera.
Fiz a fila abaixo, mas ela não insere, não retira e não imprime. Compila normalmente.
Na execução ocorre uma mensagem de falha de segmentação:
Segmentation fault
O fonte da fila:
#include <stdio.h> #include <stdlib.h> #include <iostream> #define TAMANHO 10 class minhaFila{ private: int inicioFila, fimFila, f[TAMANHO]; public: void inicializaFila(){ for(int i=0; i<TAMANHO; i++){ f[i]=0; } inicioFila=fimFila=-1; } void insere(int elemento){ if(fimFila!=TAMANHO){ fimFila++; f[fimFila]=elemento; } } void retira(){ if(inicioFila!=fimFila){ int elementoRetirado; inicioFila++; elementoRetirado=f[inicioFila]; f[inicioFila]=0; //return elementoRetirado; //printf("O elemento retirado foi %d: ",&elementoRetirado); } else {printf("A fila está vazia!");} } void imprimeFila(){ for(int i=TAMANHO; i<=f[fimFila]; i--){ printf("%d\n",f[i]); } } }; int main(){ minhaFila f1; int insereElemento,op; //f1.inicioFila(); printf("\n1- Inicializar fila \n2- Para inserir \n3- Para retirar \n4- Mostrar fila \n5- Sair\n\n"); scanf("%d",&op); switch(op){ case 1: f1.inicializaFila(); break; case 2: printf("Digite um número inteiro: "); scanf("%u",&insereElemento); f1.insere(insereElemento); //return main(); break; case 3: f1.retira(); //return main(); break; case 4: f1.imprimeFila(); //return 0; break; } system("PAUSE"); return 0; }
-
Caro,
O problema está na leitura e não no seu switch(). A execução do seu programa está mais ou menos assim:
// mostra o menu com as opções printf("Escolha a operação\n 1-Soma\n 2-Subtração\n 3-Multimplicação\n 4-Divisão\n 5-Sair\n\n "); // faz a leitura da opção do usuário scanf("%u",&op); // o problema está aqui! // o código abaixo solicita os dois fatores // se o usuário escolheu a opção 5 (sair), também vai solicitar os dois fatores. printf("\nDigite os fatores:\n"); scanf("%f",&n1); scanf("%f",&n2);
Sacou?! ;)
Abraços,
William Rodrigues.
Entendi! Perfeito!
Agora está funcionando corretamente.
Eu peguei as linhas referente aos fatores e joguei em cada opção do switch.
Obrigado.
-
Na verdade você faz a leitura de qual opção o usuário (menu) e em seguida faz a leitura dos dois fatores independente de ser a opção de sair.
Entendi +/-.
Então o return 0 não serve de nada se escolhida a opção 5?
Como faço para parar a execução e sair se escolhida a opção 5?
-
Olá galera, fiz a calculadora abaixo e quando se escolhe a opção 5, o programa deveria sair, não? Para mim sim.
Mas ele volta ao início e pede os dois fatores e depois sai.
Como faço para o programa sair quando escolhida a opção 5?
#include <stdio.h> #include <stdlib.h> int main(){ float n1, n2, resultado; int op; printf("Escolha a operação\n 1-Soma\n 2-Subtração\n 3-Multimplicação\n 4-Divisão\n 5-Sair\n\n "); scanf("%u",&op); printf("\nDigite os fatores:\n"); scanf("%f",&n1); scanf("%f",&n2); switch(op){ case 1: resultado = n1+n2; printf("\nOperação: %.0f+%.0f é igual a \n%.0f",n1, n2, resultado); return main(); break; case 2: resultado = n1-n2; printf("\nOperação: %.0f-%.0f é igual a %.0f", n1, n2, resultado); return main(); break; case 3: resultado = n1*n2; printf("\nOperação: %.0fx%.0f é igual a %.0f", n1, n2, resultado); return main(); break; case 4: resultado = n1/n2; printf("\nOperação: %.0f/%.0f é igual a %.0f", n1, n2, resultado); return main(); break; case 5: return 0; break; } system("PAUSE"); return 0; }
-
Galera, porque se a chamada da função vier antes da impressão (echo) o resultado mostrado na tela é diferente?
<?php
$num = 2000;
function testaEscopo()
{
echo $GLOBALS["num"]."\n";
$GLOBALS["num"]++;
}
//echo $num;
testaEscopo ();
echo $num;
?>
Se o echo vem antes o resultado é 2000 20001. Se eu coloco depois o resultado é somente 20002000. Se variáveis em PHP são dinâmicas então $num incrementada deveria aparece, independe da ordem. Não?
-
Olá galera.
Estou programando (começando) em C e tanto no GNU/Linux Ubuntu 10.04 quanto no Windows 7 Ultimate não consigo compilar o código finte.
No Ubuntu eu faço assim:
#include <stdio.h>
int main()
{
printf("Alô mundo!");
return(0);
}
Para compilar: $ gcc alo.c -o alo
Para executar: $ sudo alo ou ./alo
(tudo com a devida permissão)
No windows repito o código e faço: gcc -o alo alo.c -Wall
Isso depois depois de instalado o compilador Mingw em Windows e o GCC no Linux.
No linux, até cria o executável mas não consigo executar mesmo com todas as permissões.
No Wondows dá a mensagem, na hora da compilação:
'gcc' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.
O que eu faço?
-
Boa tarde galera,
Eu e minha equipe estamos fazendo um trabalho de PHP, cadastro alteração e busca, tudo isso sem usar banco. Tudo feito em um arquivo de texto.
Um de meus colegas fez o código abaixo que o sistema de busca pelo nome e viajou e eu fiquei responsável por fazer o sistema de busca pela matrícula. O que está um pouco difícil, pois eu não entendi muito bem o que ele fez e não sei como criar um e unir com o dele.
Acho que o que complicou foi o método dele que muito diferente...
O código dele é:
<?php
session_start();
if($_SESSION['login'] == "" or !isset($_SESSION['login']))
{
header("Location: ../erro1.php");
}
$busca_matricula=$_POST['buscam'];
$busca_nome=$_POST['buscan'];
$v_busca=file("lista_alunos.txt");
$i=0;
foreach($v_busca as $vlr)
{
if(trim($vlr) == trim($busca_nome))
{
$dados=file('alunos/'.$busca_nome.'.txt');
$aux=$dados[3];
if(trim($aux) == trim($busca_matricula))
{
$result=$busca_nome;
$v_aux[$i]=$busca_nome;
break;
}
$v_aux[$i]=$vlr;
$i++;
}
else
{
$result=false;
}
}
$t_busca=count($v_aux);
?>
Alguém pode me dar uma dica/exemplo simples e rápida e pequena de um sistema de busca de usuário pela matrícula, sendo que estão cadastrados em arquivo de texto?
Agraço a atenção.
-
É só entender e adaptar para o que você precisa. ;)
Valeu!
Grande abraço!
-
Ok, ESerra!
Porém, fui infeliz em minha explicação. Na verdade eu não encontrei foi uma função que leia um arquivo, por exemplo, .txt, .rar, .php, .doc etc, e retorne a quantidade da ocorrência de um caractere determinado.
No linux, temos o comando "cat" que lê o conteúdo de arquivo. Eu queria saber se há um semelhante no PHP, mas além de ler, retorne a quantidade de vezes que a letra "A" foi digitada.
Att.
-
Olá galera,
Dentre as diveras funções de manipulação de string não consegui encontrar a que procuro.
Desejo uma função que verifique um determinado texto e imprima a quantidade em que a letra "A" u "a" ocorreu, por exemplo.
Isso é possível?
Obrigado pela atenção.
-
Alguém, pode ajudar???
-
Olá, galera!
Uso Linux (Kubuntu-Ubuntu), instalei o Xampp e funcionou, mas quando tento acessar o phpmyadmin, surge a mensagem:
Erro
Mensagens do MySQL : Documentação
#2002 - O servidor não está respondendo (ou o soquete do servidor MySQL local não está configurado corretamente)
Conexão para controle do usuário como definido nas configurações falhou.
Eu gostaria de saber o que faço exatamente, há como explicar detalhadamente?
Agradeço.
-
Olá, galera!
Eu estou com o mesmo problema e gostaria da ajuda de você, pois não configurar as portas. Na verdade não sei se o meu caso é mesmo as portas...
Deixa eu explicar!
Uso Linux (Kubuntu-Ubuntu), instalei o Xampp e funcionou, mas quando tento acessar o phpmyadmin, surge a mensagem:
Erro
Mensagens do MySQL : Documentação
#2002 - O servidor não está respondendo (ou o soquete do servidor MySQL local não está configurado corretamente)
Conexão para controle do usuário como definido nas configurações falhou.
Eu gostaria de saber o que faço exatamente, há como explicar detalhamente?
Agradeço.
Dúvida PL/SQL
em Demais Bancos
Postado
Bom dia,
Eu só gostaria de saber porque o while abaixo só itera a data_vencimento uma vez, eu usei a data 10-11-2012, sendo assim, enquanto a data do pagamento for maior que o vencimento final de semana ou feriado ele deveria iterar a até a condição ser falsa, mas ele não está verificando os valores do final de semana e do feriado.
Alguém poderia me dar uma força?
Eu nunca programei em PL/SQL o professor não explica nada apenas deu ordem para estudarmos (ou seja, ou você se vira ou não passa na matéria), aprendi muito em 3 semanas, mas não foi suficiente para fazer a função funcionar.