Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

DeFigueiredo

Não consigo corrigir erro....

Mensagens Recomendadas

DeFigueiredo

Boas malta

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="estilo.css"/>
        <title>Formulário Validar Número</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div class="centro">
            <form method="POST" action="ficha_4_valida.php">
                Introduza um número entre 0 e 99999: <input type="text" id="num" name="num" type="text" size="19" maxlength="7"/>
                <br><br>Escolha o Idioma:</br></br>
                <br>PT - Portugal <input type="radio" name="lingua" value="PT" checked="cheked"/></br>
                <br>EN - Inglês <input type="radio" name="lingua" value="EN"/></br>
                <p><input type="submit" id="Ver Leitura" name="Ver Leitura" onclick="numero();"/></p>
            </form>
        </div>
    </body>
</html>

...

<!DOCTYPE html
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <link rel="stylesheet" type="text/css" href="estilo.css"/>
        <title>Leitura Recursiva de um Numero</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    </head>
    <body>
        <div class="centro">

            <?php
			function numero_PT_EN($num, $lingua){
                    $tam = strlen($num);

				//Faz a verificação da linguagem e compara as posições com o tamanho do número inserido
                    if ($lingua == "PT"){                 
					for($pos_num = 0; $pos_num <= $tam - 1; $pos_num++){

                            if (($tam - $pos_num - 1 == 0) || ($tam - $pos_num - 1 == 3))
                                unidade_PT($num, $pos_num, $tam - $pos_num - 1);
						elseif (($tam - $pos_num-1 == 1) || ($tam - $pos_num - 1 == 4))
                                $pos_num = dezena_PT($num, $pos_num, $tam - $pos_num - 1);
						else
                                centena_PT($num, $pos_num, $tam - $pos_num - 1);
						if ($tam - $pos_num - 1 == 3)
                                if ($num{$i+1} == 0 )
                                    print(" Mil ");
                                else
                                    print(" Mil e ");	
                        }
                    }else{
                        for($pos_num = 0; $pos_num <= $tam - 1; $pos_num++){
                            if (($tam - $pos_num - 1 == 0) || ($tam - $pos_num - 1 == 3))
                                unit_EN($num, $pos_num, $tam - $pos_num - 1);
                            elseif (($tam - $pos_num-1 == 1) || ($tam - $pos_num - 1 == 4))
                                $pos_num = dozen_EN($num, $pos_num, $tam - $pos_num - 1);
                            else
                                hundred_EN($num, $pos_num, $tam - $pos_num - 1);
                            if ($tam - $pos_num - 1 == 3)
                                print(" Thousand ");
						else
                                print(" Thousand and ");                                          
                        }
                    } 
			}

			//Função para números de 1 a 10
                function unidade_PT($unidade, $pos_num, $pos_actual){
                    
                    switch ($unidade{$pos_num}){
                    case '0': 
                        if (strlen($unidade) == 1)
                            print("Zero ");break;
                    case '1': if ($pos_actual != 3 || $pos_num >= 1)
                                print("Um");break;
                    case '2': print("Dois ");break;
                    case '3': print("Tres ");break;
                    case '4': print("Quatro ");break;
                    case '5': print("Cinco ");break;
                    case '6': print("Seis ");break;
                    case '7': print("Sete ");break;
                    case '8': print("Oito ");break;
                    case '9': print("Nove ");
                    }
                }

			//Função para números de 10 a 19 e dezenas
                function dezena_PT($dezena, $pos_num, $pos_actual){
                    
                    switch ($dezena{$pos_num}){
                    case '0': print("");break;
                    case '1': switch($dezena{$pos_num+1}){
                                case '0': print("Dez ");break;
                                case '1': print("Onze ");break;
                                case '2': print("Doze ");break;
                                case '3': print("Treze ");break;
                                case '4': print("Catorze ");break;
                                case '5': print("Quinze ");break;
                                case '6': print("Dezasseis ");break;
                                case '7': print("Dezassete ");break;
                                case '8': print("Dezoito ");break;
                                case '9': print("Dezanove ");break;
                                }
                                return ++$pos_num;
                    case '2': print("Vinte ");break;
                    case '3': print("Trinta ");break;
                    case '4': print("Quarenta ");break;
                    case '5': print("Cinquenta ");break;
                    case '6': print("Sessenta ");break;
                    case '7': print("Setenta ");break;
                    case '8': print("Oitenta ");break;
                    case '9': print("Noventa ");
                    }

                    
                    if ($dezena{$pos_num + 1} != 0 && ($pos_actual < 3 && $dezena{$pos_num + 1} != 0))
                        print ("e ");
                    return $pos_num;
                }

			//Função para centenas
                function centena_PT($centena,$pos_num,$pos_actual){
                    
                    switch ($centena{$pos_num}){
                    case '0': print("");break;
                    case '1': if (($centena{$pos_num + 1}  == '0') && ($centena{$pos_num + 2}  == '0'))
                                print("Cem ");
                              else
                                print("Cento ");break;
                    case '2': print("Duzentos ");break;
                    case '3': print("Trezentos ");break;
                    case '4': print("Quatrocentos ");break;
                    case '5': print("Quinhentos ");break;
                    case '6': print("Seiscentos ");break;
                    case '7': print("Setecentos ");break;
                    case '8': print("Oitocentos ");break;
                    case '9': print("Novecentos ");
                    }
                    if (($centena{$pos_num + 1} != 0) || ($centena{$pos_num + 1} != 0))
                        print ("e ");                        
                }

			//Função para números de 1 a 10 em INGLÊS
                function unit_EN($unit, $pos_num, $pos_actual){

                    switch ($unit{$pos_num}){
                    case '0':
                        if (strlen($unit) == 1)
						print("zero ");break;
                    case '1': print("One ");break;
                    case '2': print("Two ");break;
                    case '3': print("Three ");break;
                    case '4': print("Four ");break;
                    case '5': print("Five ");break;
                    case '6': print("Six ");break;
                    case '7': print("Seven ");break;
                    case '8': print("Eight ");break;
                    case '9': print("Nine ");
                    }
                }

			//Função para números de 10 a 19 e dezenas em INGLÊS
                function dozen_EN($dozen, $pos_num, $pos_actual){

                    switch ($dozen{$pos_num}){
                    case '0': print("");break;
                    case '1': switch($dozen{$pos_num + 1}){
                                case '0': print("Ten ");break;
                                case '1': print("Eleven ");break;
                                case '2': print("Twelve ");break;
                                case '3': print("Thirteen ");break;
                                case '4': print("Fourteen ");break;
                                case '5': print("Fifteen ");break;
                                case '6': print("Sixteen ");break;
                                case '7': print("Seventeen ");break;
                                case '8': print("Eighteen ");break;
                                case '9': print("Nineteen ");break;
                                }
                                return ++$pos_num;
                    case '2': print("Twenty ");break;
                    case '3': print("Thirty ");break;
                    case '4': print("Fourty ");break;
                    case '5': print("Fifty ");break;
                    case '6': print("Sixty ");break;
                    case '7': print("Seventy ");break;
                    case '8': print("Eighty ");break;
                    case '9': print("Ninety ");
                    }
                    return $pos_num;
                }

			//Função para centenas em INGLÊS
                function hundred_EN($hundred, $pos_num, $pos_actual){

                    switch ($hundred{$pos_num}){
                    case '0': print("");break;
                    case '1': print("One hundred ");break;
                    case '2': print("Two hundred ");break;
                    case '3': print("Tree hundred ");break;
                    case '4': print("Four hundred ");break;
                    case '5': print("Five hundred ");break;
                    case '6': print("Six hundred ");break;
                    case '7': print("Seven hundred ");break;
                    case '8': print("Eight hundred ");break;
                    case '9': print("Nine hundred ");
                    }
                    if (($hundred{$pos_num + 1} != 0) || ($hundred{$pos_num + 1} != 0))
                        print ("and ");
                }

			//Pedir o numero
			function numero(){

                    if (isset($_POST["num"])){
                        $num = $_POST["num"];
                        if (is_numeric($num) == false ){
                            print("Dado nao numerico");
                            return false;
                        }

					if ($num == null){
						print("Valor nao enviado");
						return false;
					}

					if ($num < 0){
						print("Numero inferior a 0(zero)");
						return false;
					}
  
					if ($num > 99999){
						print("Numero maior que 99999");
						return false;
					}
                        return true;
                    }
                    }
                    if (numero() == true){
                        print "O número pedido foi: ";
                        numero_PT_EN($_POST["num"], $_POST["lingua"]);
                    }
            ?>
        </div>
    </body>
</html>

O que acontece é o seguinte o objectivo é receber os dados atraves de um formulario e depois apresentar o resultado da leitura do numero...

Mas está a dar erro e nao consigo identificar onde... ja vi e revi e nao encontro, provavelmente é do cansaço que já não vejo grande coisa....


Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DeFigueiredo

os erros são estes:

Notice: Undefined index: num in C:\ServidorWeb\htdocs\ficha_4_valida.php  on line 200

Warning: Missing argument 2 for numero_PT_EN(), called in C:\ServidorWeb\htdocs\ficha_4_valida.php on line 200 and defined in C:\ServidorWeb\htdocs\ficha_4_valida.php on line 15

Notice: Undefined variable: lingua in C:\ServidorWeb\htdocs\ficha_4_valida.php on line 24


Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
pedrotuga

Deves estar a tentar aceder a um elemento do array $_POST que não existe. Ora imprime lá o conteudo do post:

echo "<pre>".print_r($_POST)."</pre>";

http://wiki.portugal-a-programar.pt/dev_web:php:problemas_comuns_em_php#como_ver_o_conteudo_de_um_array

PS:tenta afixar pedaços de código mais pequenos e assinalar a linha onde dá erro. Mas olha que isso é apenas um warning, não é um erro.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

PS:tenta afixar pedaços de código mais pequenos e assinalar a linha onde dá erro. Mas olha que isso é apenas um warning, não é um erro.

Já neste post reparei que faz falta a numeração de linhas no geshi, e uma função "GoToLine" também não era nada má ..

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
DeFigueiredo

Os problemas estão resolvidos... desde já muito obrigado.

Apenas foi necessário descansar um bocadinho e voltar a olhar com outros olhos para o projecto, e reparei logo nos erros.

yoda tens toda a razao eu esqueci.me de colocar a as linhas e a função gotoline.... Sorry

Pedro tens razão nao são erros mas um warning a dizer que so estavaa passar um de dois argumentos

Obrigado a todos


Sandro Figueiredo

_________________________________________________________

"A paciência é uma das coisas que se aprendeu na era do 48k"

"O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.