Ir para conteúdo
Fórum Script Brasil

Hugão

Membros
  • Total de itens

    25
  • Registro em

  • Última visita

Posts postados por Hugão

  1. 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.

    while data_pagamento > data_vencimento and final_semana = 1 or feriado = 1 loop

    data_vencimento := data_vencimento + 1;

    atraso := 0;

    end loop;

    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.

  2. 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 replace

    function

    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;

  3. 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-->

  4. 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.

  5. 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; 
            } 
             
        } 
    ?>

  6. 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.

  7. 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?

  8. 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.

  9. 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.

  10. 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.

  11. 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;
    }

  12. 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.

  13. 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;
    }

  14. 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?

  15. 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?

  16. 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.

  17. 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.

  18. 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.

  19. 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.

×
×
  • Criar Novo...