Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvidas Com Formulários


Elsaby Antunes

Pergunta

Olá pessoal,

Estou com a seguinte dúvida: Como construir um formulário que utiliza das informações de outro formulário?

Por exemplo:

Como criar um formulário de instalação de um script sem passar pelo banco de dados? ou

Como criar um formulário tipo questionário com quebra de página, para não ficar parecendo um BLOG?

Estou criando um formulário de cadastro, mas não consigo finalizar a execução do formulário, pois existe informações do primeiro formulário que não estou conseguindo captá-las para a última parte do formulário, achei então que se houvesse como dar uma quebra de página no formulário o problema seria resolvido. Alguém sabe como fazer?

Um exemplo de como está o código:

//Arquivo form.html

<HTML><HEAD><TITLE>Formulario Teste</TITLE></HEAD>

<BODY>

<font face='arial' size=2><b>All fields marked with a * are required:<br>

<form enctype='multipart/form-data' action='form1.php' method='post'>

<table width='50%' border=0>

<tr><td> Escolha<font color='#ff0000'>*</font></td>

<td>

<input type=radio name='Escolha' value='Escolha 1'>Escolha 1<br><input type=radio name='Escolha' value='Escolha 2'>Escolha 2<br><input type=radio name='Escolha' value='Escolha 3'>Escolha 3<br><input type=radio name='Escolha' value='Escolha 4'>Escolha 4<br></td></tr>

</table>

<input type='submit' value='Enviar Dados'> <input type=reset value='Limpar Dados'></form>

</BODY></HTML>

//Arquivo Form1.php (da ação do form.html)

<?php

include("verify.php");

$errors=0;

$error="Ocorreram erros durante o processamento do formulário.<ul>";

pt_register('POST','Escolha');

if($Escolha=="" ){

$errors=1;

$error.="<li>Você precisa escolher uma opção antes de continuar. Pressione voltar no seu navegador e tente novamente.";

}

if($errors==1) echo $error;

else{

$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]==on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));

$message="Escolha: ".$Escolha."

";

?>

<HTML><HEAD></HEAD>

<BODY>

<font face='arial' size=2><b>Todos campos marcados com * são necessários para concluir o cadastro:<br>

<form enctype='multipart/form-data' action='final.php' method='post'>

<table width='50%' border=0>

<tr><td>Esta foi a sua Escolha</td>

<td><input type="text" name="PacoteEspecial" value="<?php echo $Escolha; ?>" readonly /></td></tr>

<tr><td> Nome Completo<font color='#ff0000'>*</font></td>

<td>

<input type=text name='NomeCompleto'></td></tr>

<tr><td> Email<font color='#ff0000'>*</font></td>

<td>

<input type=email name='Email'></td></tr>

<tr><td> Assunto<font color='#ff0000'>*</font></td>

<td>

<input type=text name='Assunto'></td></tr>

<tr><td> Menssagem<font color='#ff0000'>*</font></td>

<td>

<textarea name='Menssagem' rows=5 cols=5></textarea></td></tr>

</table>

<input type='submit' value='Finalizar Cadastro'> <input type=reset value='Limpar Dados'></form>

</BODY></HTML>

<?php

}

?>

//Arquivo verify.php

<?php

function pt_register()

{

$num_args = func_num_args();

$vars = array();

if ($num_args >= 2) {

$method = strtoupper(func_get_arg(0));

if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {

die('O primeiro argumento do pt_register deve ser um dos seguintes: GET, POST, SESSION, SERVER, COOKIE, or ENV');

}

$varname = "HTTP_{$method}_VARS";

global ${$varname};

for ($i = 1; $i < $num_args; $i++) {

$parameter = func_get_arg($i);

if (isset(${$varname}[$parameter])) {

global $$parameter;

$$parameter = ${$varname}[$parameter];

}

}

} else {

die('Você precisa especificar pelo menos 2 argumentos');

}

}

?>

//Arquivo final.php

<?php

include("verify.php");

$errors=0;

$error="Ocorreram os seguintes erros durante o processamento de suas informações.<ul>";

pt_register('POST','Escolha');

pt_register('POST','NomeCompleto');

pt_register('POST','Email');

pt_register('POST','Assunto');

pt_register('POST','Menssagem');

$Menssagem=preg_replace("/(1512)|(15)|(12)/"," <br />", $Menssagem);pt_register('POST','IP');

if($NomeCompleto=="" || $Email=="" || $Assunto=="" || $Menssagem=="" ){

$errors=1;

$error.="<li>Você precisa preencher todos os campos obrigatórios. Pressione voltar para tentar novamente.";

}

if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$Email)){

$error.="<li>Endereço de email inválido";

$errors=1;

}

$IP = $HTTP_SERVER_VARS["REMOTE_ADDR];

if($errors==1) echo $error;

else{

$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));

$message="Escolha: ".$Escolha "Nome Completo: ".$NomeCompleto."

Email: ".$Email."

Assunto: ".$Assunto."

Menssagem: ".$Menssagem."

IP: ".$IP."

";

$message = stripslashes($message);

mail("email@dominio.com.br, $Email","$Escolha",$message,"From: $NomeCompleto <$Email>");

?>

<h2>Seu cadastro foi efetuado com sucesso!</h2>

<table width=50%>

<tr><td>Sua Escolha: </td><td><?php echo $Escolha; ?> </td>

<tr><td>Nome Completo: </td><td> <?php echo $NomeCompleto; ?> </td></tr>

<tr><td>Email: </td><td> <?php echo $Email; ?> </td></tr>

<tr><td>Assunto: </td><td> <?php echo $Assunto; ?> </td></tr>

<tr><td>Menssagem: </td><td> <?php echo $Menssagem; ?> </td></tr>

<tr><td>IP: </td><td> <?php echo $IP; ?> </td></tr>

</table>

<?php

}

?>

No arquivo Final, a pessoa que está preenchendo recebe uma cópia no seu email, o administrador do site recebe os dados que informa qual escolha o internauta fez... Bom a dúvida é essa, espero que me ajudem.

Obrigado

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

2 alternativas:

1 - Guarda os dados em sessões e resgata eles onde quiser.

2 - Guarda os dados vindos dos formulários em campo do tipo hidden e fica reenviando a cada página que você acessar...

É claro que utilizar sessões é mais simples...

Link para o comentário
Compartilhar em outros sites

  • 0
2 alternativas:

1 - Guarda os dados em sessões e resgata eles onde quiser.

2 - Guarda os dados vindos dos formulários em campo do tipo hidden e fica reenviando a cada página que você acessar...

É claro que utilizar sessões é mais simples...

Poderia Postar um exemplo de como guardar os dados em sessões?

Link para o comentário
Compartilhar em outros sites

  • 0

<?php
//No ínicio da página em que serão criadas/resgatadas sessões coloca isso:
session_start();

//Guarda os dado do form em uma sessão
$_SESSION['qualquercoisa'] = $_POST['nome_do_campo'];
?>

Ai em toda página que você quiser resgatar basta chamar o $_SESSION'[qualquercoisa']

Note que qualquercoisa é qualquer coisa que você queira...

Link para o comentário
Compartilhar em outros sites

  • 0
<?php
//No ínicio da página em que serão criadas/resgatadas sessões coloca isso:
session_start();

//Guarda os dado do form em uma sessão
$_SESSION['qualquercoisa'] = $_POST['nome_do_campo'];
?>

Ai em toda página que você quiser resgatar basta chamar o $_SESSION'[qualquercoisa']

Note que qualquercoisa é qualquer coisa que você queira...

Obrigado ESerra,

Resolveu meu problema bem no momento certo!

valeu.

Link para o comentário
Compartilhar em outros sites

  • 0

Olá pessoal,

Tenho uma outra questão, para enviar estes dados do formulário como HTML... eu utilizei o cabeçalho como no manual, mas a msg aparece no email o código html, tipo <html><head>...</head></html> Tem como enviar para não aparecer isso?

Já tentei usando o comando echo, mesmo assim continua aparecendo.

Olha como foi o código, seguindo como exemplo o arquivo:

//Arquivo final.php

<?php

include("verify.php");

$errors=0;

$error="Ocorreram os seguintes erros durante o processamento de suas informações.<ul>";

pt_register('POST','Escolha');

pt_register('POST','NomeCompleto');

pt_register('POST','Email');

pt_register('POST','Assunto');

pt_register('POST','Menssagem');

$Menssagem=preg_replace("/(1512)|(15)|(12)/"," <br />", $Menssagem);pt_register('POST','IP');

if($NomeCompleto=="" || $Email=="" || $Assunto=="" || $Menssagem=="" ){

$errors=1;

$error.="<li>Você precisa preencher todos os campos obrigatórios. Pressione voltar para tentar novamente.";

}

if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$Email)){

$error.=<li>Endereço de email inválido";

$errors=1;

}

$IP = $HTTP_SERVER_VARS["REMOTE_ADDR];

if($errors==1) echo $error;

else{

$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));

$message="Escolha: ".$Escolha "Nome Completo: ".$NomeCompleto."

Email: ".$Email."

Assunto: ".$Assunto."

Menssagem: ".$Menssagem."

IP: ".$IP."

$headers = "MIME-Version: 1.0\r\n";

$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

$message = stripslashes($message);

$message = '

<table width=50%>

<tr><td>Sua Escolha: </td><td><?php echo $Escolha; ?> </td>

<tr><td>Nome Completo: </td><td> <?php echo $NomeCompleto; ?> </td></tr>

<tr><td>Email: </td><td> <?php echo $Email; ?> </td></tr>

<tr><td>Assunto: </td><td> <?php echo $Assunto; ?> </td></tr>

<tr><td>Menssagem: </td><td> <?php echo $Menssagem; ?> </td></tr>

<tr><td>IP: </td><td> <?php echo $IP; ?> </td></tr>

</table>

";

mail("email@dominio.com.br, $Email","$Escolha",$message,"From: $NomeCompleto <$Email>");

?>

<h2>Seu cadastro foi efetuado com sucesso!</h2>

<table width=50%>

<tr><td>Sua Escolha: </td><td><?php echo $Escolha; ?> </td>

<tr><td>Nome Completo: </td><td> <?php echo $NomeCompleto; ?> </td></tr>

<tr><td>Email: </td><td> <?php echo $Email; ?> </td></tr>

<tr><td>Assunto: </td><td> <?php echo $Assunto; ?> </td></tr>

<tr><td>Menssagem: </td><td> <?php echo $Menssagem; ?> </td></tr>

<tr><td>IP: </td><td> <?php echo $IP; ?> </td></tr>

</table>

<?php

}

?>

vejam se está alguma coisa fora que não consigo enxergar...

obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
Você não especificou no cabeçalho que a mensagem teria HTML...

mail("email@dominio.com.br, $Email","$Escolha",$message,"From: $NomeCompleto <$Email>\r\nContent-type: text/html; charset=iso-8859-1");

Bom dia ESerra,

Eu testei como você postou, mas retorna msg erro indicando a linha onde começam as tags <table>...

Bom dia ESerra,

Eu testei como você postou, mas retorna msg erro indicando a linha onde começam as tags <table>...

Olá de novo,

Consegui resolver essa msg de erro, um erro de grafia e estraga tudo né?! Acontece que a msg envia como html mas os dados não foram, poderiam me dar mais essa grande ajuda?!

Obrigado

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...