cjp escreveu:Gostaria de saber se é possÃvel fazer um formulário em PHP com duas formas diferentes de entradas de dados, no mesmo formulário, um à semelhança do @...get do Harbour, e outro à semelhança do @...prompt do Harbour.
Sim, você pode usar várias formas diferentes de entrada de dados num mesmo formulário, quantas forem necessários.
cjp escreveu:Aparentemente está tudo funcionando perfeitamente.
Você tem que agradecer muito ao seu navegador, que está conseguindo interpretar parcialmente o seu código.
No Harbour quando vamos escrever um PRG, temos que nos preocupar com a estrutura lógica dos comandos, por exemplo:
Function Main()
tk=0
Do While tk!=27
tk:=inkey()
if tk==-1
//faz alguma coisa
else
//senão faz outra
endif
Enddo
Return Nil
Cada comando de estrutura de controle tem que ter um inÃcio e um final, é o caso dos comandos Do While...Enddo, If...else...endif, Do Case, For...Next, etc. Se você esquecer de finalizar um destes comandos de controle, com certeza na hora da compilação vai ocorrer um erro.
Bom, no HTML e no PHP também temos que tomar cuidado com esta estrutura de controle, alguns comandos também tem um inÃcio e o seu final correspondente. Se tem um <html> então vai ter que ter um </html>, se tem um <table> tem que ter um </table>, etc.
Outra coisa é que num arquivo PHP podemos misturar códigos PHP e também HTML, mas sempre se preocupando que o código PHP tem que ficar entre
<?php e
?>.
Então vamos analisar o código que você postou:
1 - Na linha 6 você está iniciando o código PHP e na linha 9 você está encerrando, então tudo que estiver fora destas linhas é considerado código HTML. Mas na linha 12 você está usando a variável
$arec que é um código PHP. Apesar que neste seu código não seria necessário passar esta variável, pois o conteúdo que você precisa está em campos do formulário, então o método de passam de parâmetros é diferente (método Post). Lembra???? já vimos isto em um outro tópico!
Bom, independente se seria necessário ou não a passagem desta variável
$arec, mas o problema é que por ser uma variável de um código PHP, então obrigatoriamente ela teria que estar entre
<?php e
?>.
Então, se fosse necessária, o correto esta linha 12 teria que ficar assim:
<form action="criarec2.php?arec=<?php echo $arec; ?> method="post"> <input type="hidden">Digite o seu recado:
Mas como disse,
a passagem desta variável é desnecessária, então nesta linha 12 você teria que trocar
"criarec2.php?arec=".$arec." por
"criarec2.php"2 - na linha 19 você está usando um tabela (
<table>), que tem uma certa estrutura, onde temos que incluir linhas (<tr>) e colunas (<td>), por exemplo:
<table>
<tbody>
<tr>
<td>
//aqui vai o conteúdo da coluna
</td>
</tr>
</tbody>
</table>
Então, além da estrutura que deve ser respeitada, qualquer conteúdo dentro da tabela deve ficar entre <td> e </td>. Observe que no seu exemplo tem alguns campos logo após o <table> (linhas 21 a 26).
3 - quando você for usar um formulário (form) cujo campos estão dentro de uma tabela, então o certo é abrir o <form> antes do <table>.
4 - na linha 12 você está abrindo um
<form> chamando o arquivo
criarec2.php e na linha 21 está abrindo um outro
<form> chamando o arquivo
filtrar.php. Ai na linha 39 tem apenas um
</form>. Por ai dá para notar que você não está obedecendo nadinha a estrutura de controle dos comandos.
A melhor coisa neste caso é fazer corretamente a indentação do seu código, assim fica mais fácil saber onde começa um comando e onde ele termina. Para cada
<form> tem que ter um
</form> correspondente.
5 - na linha 33 você está usando um <td>, mas este comando só pode vir dentro de um <tr>... </tr>. Na linha 35 você está fechando o </tr>, mas não tem o <tr> correspondente.
6 - na linha 31 você está colocando um campo (
<input>) onde o usuário vai digitar a sua mensagem, e neste
<input> você colocou o nome de recado (
name="recado"). Então no
criarec2.php para recuperar o conteúdo deste campo, você tem que usar este nome "recado", por exemplo:
$recado = $_POST['recado']Bom, o caminho é este, então o melhor a fazer é a indentação correta do código e corrigir a estrutura de controle dos comandos. Além é claro de decidir qual form usar, o que chama filtrar.php ou criarec2.php.
Abraços,