View Full Version : PHP + html


Sa[n]dman
31-05-2007, 16:32
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.

...
<input type="text" name="nome" SIZE="30">

<?php $name = $_POST['nome'];
?>


Mas a variável name está sempre vazia...

spastikman
31-05-2007, 16:44
dman;1678320']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.

...
<input type="text" name="nome" SIZE="30">

<?php $name = $_POST['nome'];
?>


Mas a variável name está sempre vazia...


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 ?

[N]
31-05-2007, 16:45
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.

Sa[n]dman
31-05-2007, 21:57
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>

p3dro
01-06-2007, 13:52
dman;1679221']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>

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


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

Sa[n]dman
01-06-2007, 20:42
vou ver isto. Depois deixo aqui uma mens.

thx

Sa[n]dman
02-06-2007, 00:24
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.

mcog_blaster
02-06-2007, 00:54
so uma coisa Pedro...$_POST é uma variavel global...logo nao faz sentido passares os valores na funçao.

Sa[n]dman
02-06-2007, 00:59
so uma coisa Pedro...$_POST é uma variavel global...logo nao faz sentido passares os valores na funçao.

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

mcog_blaster
02-06-2007, 11:11
Quando tens <form method="POST"....</form> os dados do form sao enviados no corpo da mensagem e nao visiveis ao utilizador, é uma forma segura de envio de dados.

Quando tens<form...</form> 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.

Sa[n]dman
03-06-2007, 20:31
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?