Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

sleepstar

<input type='hidden'...> + array

Recommended Posts

E ai, pessoal ?Não sei se estou fazendo certo, ou não, Mas como faço para passar um Array pelo method POST ?Do jeito dos 2 arquivos abaixo nao dá certo:teste05.php<HTML><BODY><?include ("./conectar.php");echo"<form action='./teste06.php' method='POST'>\n";echo"<input type='submit' value='Enviar array'>\n";$itens=array(0 => array(0 => "1", 1=> "Ana", 2=> "22"), 1 => array(0 => "2", 1=> "Luc", 2=> "52"), 2 => array(0 => "3", 1=> "Ota", 2=> "31"));echo"<input type='hidden' name='itens' value='$itens'>\n";echo"</FORM>\n";echo"Mostra:\n<br>";echo"<table>";foreach($itens as $vetor){ echo "<tr>\n"; foreach($vetor as $valor){ echo "<td>$valor</td>"; } echo "</tr>\n";}echo"</table>";?></BODY></HTML>teste06.php<HTML><BODY><?$itens=$_POST[itens];echo"Mostra:<br>\n<table>";foreach($itens as $vetor){ echo "<tr>\n"; foreach($vetor as $valor){ echo "<td>$valor</td>"; } echo "</tr>\n";}echo"</table>";?></BODY></HTML>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara tenta assim:

$itens=array(0 => array(0 => "1", 1=> "Ana", 2=> "22"),1 => array(0 => "2", 1=> "Luc", 2=> "52"),2 => array(0 => "3", 1=> "Ota", 2=> "31"));$itens=implode(",", $itens);<input type='hidden' name='itens' value='$itens'>

$itens=explode(",",$itens);foreach($itens as $vetor){	print $vetor;}

mas achu que não funciona com arrays multidimensionais...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode dar um serialize() no seu array antes de colocá-lo no form. E depois, um unserialize() para voltar ao que era.

<?php	$itens=array(0 => array(0 => "1", 1=> "Ana", 2=> "22"),		1 => array(0 => "2", 1=> "Luc", 2=> "52"),		2 => array(0 => "3", 1=> "Ota", 2=> "31"));	echo "<input type='hidden' name='itens' value='".serialize($itens)."'>";?>
Quando você for receber esse valor, ele será algo como:

a:3:{i:0;a:3:{i:0;s:1:"1";i:1;s:3:"Ana";i:2;s:2:"22";}i:1;a:3:{i:0;s:1:"2";i:1;s:3:"Luc";i:2;s:2:"52";}...}

É só dar um unserialize que ele volta ao estado original.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, pessoal !Mario Helme, onde coloco o unserialize(), eu coloquei depois da passagem do POST. Veja abaixo, e o resultado, é ... não funcionou. Já quanto ao serialize(), já especifiquei conforme a sua postagem.Obs: Tenho outra dúvida, como faço para usar um for (), controlando 2 array, por que nao consigo colocar variavel dentro do []. Tem um codigo pronto, para eu dar uma olhada.Muito valeu !!!<b>teste06.php</b><code><HTML><BODY><?$itens=$_POST[itens];$itens='".serialize($itens)."';echo"M o s tra:<br>\n<table>";foreach($itens as $vetor){ echo "<tr>\n"; foreach($vetor as $valor){ echo "<td>$valor</td>"; } echo "</tr>\n";}echo"</table>";?></BODY></HTML></code>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Encontrei porque o serialize() não funcionava. É que do "outro lado", ele substituia " por \". E com isso o unserialize() não funcionava.

Testa agora (aqui funcionou):

[teste05.php]

<HTML><BODY><?php	include ("./conectar.php");	$itens = array(		0 => array(0 => "1", 1=> "Ana", 2=> "22"),		1 => array(0 => "2", 1=> "Luc", 2=> "52"),		2 => array(0 => "3", 1=> "Ota", 2=> "31")	);?><form action='teste06.php' method='POST'><input type='hidden' name='itens' value='<?php echo serialize($itens) ?>'><input type='submit' value='Enviar array'></form>Mostra:<br><table>	<?php foreach($itens as $vetor){ ?>		<tr>		<?php foreach($vetor as $valor){ ?>			<td><?php echo $valor ?></td>		<?php } ?>		</tr>	<?php } ?></table></BODY></HTML>

[teste06.php]

<HTML><BODY><?php $itens = str_replace("\\", "", $_POST['itens']) ?>Mostra:<br><table><?php foreach(unserialize($itens) as $vetor){ ?><tr>	<?php foreach($vetor as $valor){ ?>		<td><?php echo $valor ?></td>	<?php } ?></tr><?php } ?></table></BODY></HTML>

Não seria mais simples pra você usar $_SESSION[] para passar os valores pra outra página ao invés de usar $_POST[]?. Sei lá, só uma sugestão.

E não entendi direito: porque você quer usar for() no lugar do foreach()?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa ! Agora funfo legal.Valeu !O lanche de $_SESSION[], ainda sou leigo.Mas eu gostaria de usar o for, pelo seguinte:Tenho 2 array com conteudos e estruturas diferentes, MAS em um indice dos 2, tem valores que eu deva somar, o foreach(), acho que controla apenas 1 array por vez, e o processo precisa de rapidez, em vez de usar 2 foreach(), tenho que usar 1 for().E os tutoriais, livros, etc, nao dão nenhum exemplo este sentido, nas outras linguagem é encontrado isso.Kra, tô gostando de ver, você domina a linguagem msm.FalÔ.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Domino a linguagem??? Que isso... to longe disso...

O lance é ir sempre aprendendo e nunca desistindo diante das dificuldades (que não são poucas).

Sobre usar um único for(), acho difícil, mesmo porque você tem um array multi. E nesse caso são realmente 2 laços:

 

array[[1,2,3],[4,5,6],[5,2,4]]

 

Como você precisa pegar cada ítem para trabalhar, e esse ítem também é um array, você precisa varrê-lo novamente. Ou seja, mais um laço. Como você quer colocar valores dentro do laço, o que você pode fazer é usar o foreach() no array principal e o for() dentro de cada array interno:

<?php$itens = array(	0 => array(0 => "1", 1=> "Ana", 2=> "22"),	1 => array(0 => "2", 1=> "Luc", 2=> "52"),	2 => array(0 => "3", 1=> "Ota", 2=> "31"));foreach ($itens as $value){	for($f=0;$f<count($value); $f++){		echo "[".$value[$f]."] ";	}	echo "<br>";}?>
Veja se isso resolve.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.