1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

PHP + html

Discussão em 'Web Development' iniciada por Sa[n]dman, 31 de Maio de 2007. (Respostas: 10; Visualizações: 928)

  1. Sa[n]dman

    Sa[n]dman Power Member

    Boas, tenho um formulario em html inserido numa pagina *.php. Até aqui tudo bem. Só que tenho um problema, não consigo ler os valores das textboxes...
    alguém me pode dar uma dica sff.

    Código:
    ...
    <input type="text" name="nome" SIZE="30">
    
    <?php $name = $_POST['nome'];
    ?>
    
    Mas a variável name está sempre vazia...
     
  2. spastikman

    spastikman Banido


    a input box está dentro de um <form> que utilize o metodo "POST" e cujo destino seja o mesmo ficheiro onde tens o código php ?
     
  3. [N]

    [N] Power Member

    Puseste os atributos method="post" action="send.php" na <form> ?

    Só para tirar uma dúvida, estás a fazer td num ficheiro? Caso estejas divide o html com o formulario num e o php noutro chamado "send.php" por exemplo.
     
    Última edição: 31 de Maio de 2007
  4. Sa[n]dman

    Sa[n]dman Power Member

    mas eu n queria dividir o código pq quero verificar os campo e em caso de erro voltar a carregar o formulário...
    a inputbox ta dentro da form:

    <form method="post" action="">...</form>
     
  5. p3dro

    p3dro Power Member

    juntando tudo no mesmo saco, vê se este exemplo te ajuda em alguma coisa:

    PHP:
    <?php
    function ConstruirFormulario($nome="",$morada=""){
      return 
    "
        <form method='post' name='frmTeste' id='frmTeste' onsubmit='return ValidarFormulario(this);'>
          <input type='text' name='nome' size='30' value='
    $nome'>
          <input type='text' name='morada' size='50' value='
    $morada'>
          <input type='submit' name='accao' value='Submeter'>
        </form>
      "
    ;
    }

    $nome=$_POST["nome"];
    $morada=$_POST["morada"];
    $accao=$_POST["accao"];
    ?>

    <html>
      <head>
        <script type="text/javascript">
          function ValidarFormulario(form){
            var strErro="";
            var result=true;

            var arrFields= new Array();
            arrFields[0]="nome";
            arrFields[1]="morada";
            
            var arrFieldsDescription= new Array();
            arrFieldsDescription[0]="Nome do Cliente";
            arrFieldsDescription[1]="Morada do Cliente";
            
            var count=arrFields.length;
            
            for (var i=0;i<count;i++){
              if(!form.elements[arrFields[i]].value){
                strErro+="\n"+arrFieldsDescription[i];
              }
            }
            
            if(strErro){
              result=false;
              alert("Faltam preencher campos:"+strErro);
            }
            
            return result;
          }
        </script>
      </head>
      
      <body>
        <?php
          
    if(!$accao){ //a página está a ser chamada pela 1ªx
            
    echo ConstruirFormulario();
          }
          else{
            if(!
    $nome || !$morada){
              echo 
    "Faltam preencher campos ...<br>";
              echo 
    ConstruirFormulario($nome$morada);
            }
            else{
              echo 
    "tudo ok";
             
    //fazer kker coisa
            
    }
          }
        
    ?>
      </body>
    </html>
    Basicamente faz 2 verificações, client-side com o javascript e server-side com o php, caso passe a validação do javascript, a validação do php irá apanhar o erro e re-construir o formulário, com os valores já introduzidos, por exemplo: preenches o nome e deixas em branco a morada, ao re-construir o formulário o campo nome irá aparecer preenchido.

    Como podes reparar as validações consistem tão somente em verificar se existe alguma coisa escrita nos campos, provavelmente alguns campos vais precisar fazer outro tipo de validações também, por ex. se a idade é um número, etc, etc.
     
  6. Sa[n]dman

    Sa[n]dman Power Member

    vou ver isto. Depois deixo aqui uma mens.

    thx
     
  7. Sa[n]dman

    Sa[n]dman Power Member

    Obrigado pessoal, já resolvi o meu problema com a solução que o p3dro me propôs.
    Ja passei a introdução dos dados, agora tenho de os guardar na base de dados. Vou tentar fazer isso se não conseguir volto aqui..

    Obrigado a todos..
    Cumps.
     
  8. mcog_blaster

    mcog_blaster Power Member

    so uma coisa Pedro...$_POST é uma variavel global...logo nao faz sentido passares os valores na funçao.
     
  9. Sa[n]dman

    Sa[n]dman Power Member

    e então já agora o que é o $_GET?
     
  10. mcog_blaster

    mcog_blaster Power Member

    Quando tens
    os dados do form sao enviados no corpo da mensagem e nao visiveis ao utilizador, é uma forma segura de envio de dados.

    Quando tens
    e nao defines o metodo de envio, os dados sao enviados por GET, ou seja os dados sao "encoded" e enviados na URL e completamente visiveis ao utilizador.

    $_POST e $_GET sao superglobais em php, sao visiveis em qualquer contexto.
    Existe tb a supergloab $_REQUEST que basicamente contem tudo os valores de $_POST, $_GET e mais os valores de outra superglobal, que no entanto nao é para aqui chamada de momento.
     
  11. Sa[n]dman

    Sa[n]dman Power Member

    ok, percebi +/-. agora ando a tentar criar sessoes, mas n percebi pq li que tenho de faazer session.start() tb tenho de fazer session.register(). não tou a entender mt bem isto. E como é que a partir de outra pagina sei que tenho a sessão aberta?
     

Partilhar esta Página