Jump to content


Photo

Problema Com Código... Formulário Que Cria Outro Form


  • Faça o login para participar
5 replies to this topic

#1 fcottf

fcottf

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 23/12/2007, 23:28

Olá galera.
Estou a 2 dias nesse código, e como realmente vi q nao vou conseguir resolvi pedir uma ajuda...
Eh simples.
Primeiro vc entra com o numero de campos de texto q deseja criar e submete...

Daí na mesma página vai aparecer o numero de campos...
Daí, vc entra com os dados que deseja nestes campos, e ele vai imprimir....

Deveria imprimir.... pq não esta imprimindo nda... =S

Agradeço ae quem puder ajudar!!


<?php$tb = "<form name='form2' method='post' action='teste.php' ><table width='200' border='1' cellspacing='0' cellpadding='0'><tr>";$tb .= "<td>Entre com o numero de campos que deseja ter: </td>";$tb .=  "<td><input type='text' name='nome' value="; if ($_POST){ isset($_POST['nome'])?  print $_POST['nome']: print '';}  //mostra o conteudo de nome$tb .= "  ></td></tr>";			$tb .= "<tr><td><input type='submit' value='Enviar' name='enviar'></td></tr>";$tb .= "</table></form>"; echo $tb;$tam = (int)$_POST['nome']; //coloca o conteudo de nome em tamif (!empty($tam))	// se tiver sido inicializado, executa a funcao inserir, passando tam como argumento	inserir($tam);////////////////////////////////////////////////////////////////////////////////////////////////function inserir($tam){	$tb .= "<form name='form3' method='post' action='teste.php' ><table width='200' border='1' cellspacing='0' cellpadding='0'>";		echo $tam;				// vai criar tam caixas e o conteudo de cada caixa sera colocada no array arr[i]		for ($i=0; $i < $tam; $i++){			$tb .= "<tr><td>Campo: </td><td><input type='text' value='' name='campo" . $i . "'></td></tr>";			$arr[$i]['nome'] = $_POST['campo' . $i];		}		//imprime o conteudo de cada caixa!			for ($i=0; $i < $tam; $i++){				echo $arr[$i]['nome']; }	$tb .= "<tr><td><input type='submit' value='Enviar' name='enviar'></td></tr>";	$tb .= "</table></form>"; 	echo $tb;		?>}//function

Edição feita por: savior, 27/12/2007, 14:31.


#2 Bruno Augusto

Bruno Augusto

    ∙•● Restarting... ●•∙

  • Usuários
  • 1968 posts
  • Sexo:Não informado
  • Localidade:Itajubá

Posted 24/12/2007, 15:11

Seu código está certo. Foi esquecimento apenas...

O problema é que você não está incluindo nenhuma chamada de impressão no trecho de código referente ao formulário.

Eu inclui:

print '<pre>'; print_r( $_POST ); print '</pre>';
E fiz um teste de três campos e, após preenchê-los, me apareceram os três conteúdos + o valor do botão (Enviar)

Nota: No final do código tem um pequeno errinho, onde você fecha a chave da função depois de ter fechado o delimitador do PHP. É só inverter. ^^

#3 fcottf

fcottf

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 26/12/2007, 13:50

Olá Bruno. Realmente assim aparece o conteúdo =D

Mas oq eu queria, é que o conteúdo fosse passado para o array, pois o objetivo mesmo, depois é passar por argumento para outra função.

O que estaria dando de errado para o
$arr[$i]['nome'] = $_POST['campo' . $i];
nao estar recebendo o conteudo?

<?php
...
function inserir($tam)
{
	$tb .= "<form name='form3' method='post' action='b2teste.php' ><table width='200' border='1' cellspacing='0' cellpadding='0'>";
	// vai criar tam caixas e o conteudo de cada caixa sera colocada no array arr[i]
	for ($i=0; $i < $tam; $i++){
		$tb .= "<tr><td>Campo: </td><td><input type='text' value='' name='campo" . $i . "'></td></tr>"; }
	$tb .= "<tr><td><input type='submit' value='Enviar' name='enviar'></td></tr>";
	$tb .= "</table></form>"; 
	echo $tb;
	$preenche = 1;
}//function

//if (!empty($preenche)){
	for ($i=0; $i < $tam; $i++){
		$arr[$i]['nome'] = $_POST['campo' . $i];
		echo $arr[$i]['nome'] . " ==> " . $_POST['campo' . $i] . "<br>";
	}
//}		
?>

Desta maneira.... o array esta pegando o conteudo de post.... mas o estranho é que só funciona, quando eu uso uma constante invez de $tam no for.

Quando uso o $tam, simplismente o for nem se inicia.
O $tam continua o mesmo do primeiro código. Tentei faze-lo global mas nada mudou! =S

Edição feita por: fcottf, 26/12/2007, 13:53.


#4 § Kenshin §

§ Kenshin §

    I'm coming back...!

  • Usuários
  • 574 posts
  • Sexo:Masculino
  • Localidade:BA
  • Interesses:Sou fã de linguagens direcionadas para a web, como php, (x)html, xml, wml.
    Também gosto de webdesign e ultimamente tenho me dedicado mais a aprender css, mysql, javascript, ajax e actionscript.
    Trabalho com os programas Dreamweaver, Illustrator e Flash.

Posted 27/12/2007, 10:53

como a variavel $tam eh um argumento enviado para a funcao inserir, ela so pode ser usada dentro dessa funcao.

vlw ^_^
Web Developer / Web Designer / Information Architect
"Living to learn... learning to live!"
Useful links: Rules | Search

#5 fcottf

fcottf

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Não informado

Posted 27/12/2007, 14:21

Mas como faço pra fazer q $tam nao perca seu valor mesmo depois de outras atualizações?

#6 savior

savior

    Campanha [codebox], use ou morra :D

  • Usuários
  • 1229 posts
  • Sexo:Masculino
  • Localidade:Curitiba, PR - Brasil
  • Interesses:Na vida ;P

Posted 27/12/2007, 14:31

Armazena em $_SESSION ou passa ele via $_GET

[]'s

[lastfm] [blog]

Campanha codebox: use-a ou morra!
bfmaster_duran[at]yahoo.com.br





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq