Ir para conteúdo

POWERED BY:

Arquivado

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

Insert

Inseri dados de campos do tipo array no banco de dados

Recommended Posts

Pessoal tenho um form com 3 grupos de input assim:

<input name='nome[]' type='text' />

<input name='email[]' type='text' />

<input name='telefone[]' type='text' />

 

Eles estao como array pois criei um JS para inserir mais campos no na pagina dinamicamente... entao poderia ser varios campos destes acimas na mesma pagina.

 

O que precisa fazer é inserir eles no banco de dados por grupo tipo como um foreach:

 

INSERT INTO cadastro (nome,email,telefone) VALUES ('$nome','$email','$telefone');

 

Como fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo simples

$field = 'nome';
$f2	= 'email';
$f3	= 'telefone';

while( list( $k, $v ) = each( $_POST[$field] ) ){
	$v1 = $v;
	$v2 = $_POST[$f2][$k];
	$v3 = $_POST[$f3][$k];
	$sql[] = "INSERT INTO cadastro (nome,email,telefone) VALUES ('$v1','$v2','$v3');";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi testei e funcionou em parte é isso mesmo que eu precisao.

 

Mas veja o v2 e v3 estao ficando como arrays ainda e nao separados como o v1 entao quando vai inserir no banco de dados fica como 0 pois é um campo float e coloquei um echo la apra ver o que estava ocorrendo ai ele mostra array e print_r mostra Array ( [0] => 0,50 [1] => 0,50 )

Compartilhar este post


Link para o post
Compartilhar em outros sites

gostei da solucao, mas eu ainda prefiro da minha forma

 

 

passo todos os campos e crio arrays independentes

 

 

depois uso array_shift para gravar cada um no seu devido lugar!!!

 

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tva vendo o site br.php.net e achei alguns funções sobre array e fiquei testando ate que montei isso:

 

$total_itens = count( $_POST["nome"] );

for ( ; $i < $total_itens; ++$i ) {

$array_nome= array_slice($_POST["nome"],$i,$i);

$array_email= array_slice($_POST["email"],$i,$i);

$array_telefone = array_slice($_POST["telefone"],$i,$i);

 

echo $array_nome[0]."<br>".$array_email[0]."<br>".$array_telefone[0]."<br>";

}

 

Aparentemente funcionou, nao sei se é o jeito certo de fazer e nao sei se vai continuar funcionando em diversas situações, se alguem puder dar a opnião sobre o codigo ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

hinom cheguei em outra situação que acabei nao conseguindo fazer.

 

No exemploque passei funcionou meio que por uma gambiarra mas depois na hora de tratar estes dados esta sendo muito complicado e da forma certa a se fazer que nao consegui seria mais facil.

 

Vou expor a situação novamente:

 

Tenho uma página, nela coloquei um javascipt onde eu insiro campos e tableas dinamicamente.

 

Inicialmente ao clicar num botao é criado uma tabela como neste exemplo:

 

<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr>
	<td width="85">Nome</td>
	<td width="215"><input type="text" name="nome[]" /></td>
  </tr>
  <tr>
	<td>Email</td>
	<td><input type="text" name="email[]" /></td>
  </tr>
  <tr>
	<td>Telefone</td>
	<td><input type="text" name="fone[]" /></td>
  </tr>
</table>

Até ai consegui fazer com o codigo que tinha passado e dito que tinha funcionado. Só que para ficar mais legal o sistema adicionei ao javascript a opção de incluir na tabela criada mais campos de email e telefone, isso infinito, quem for usar podera aidiconar quantos campos quizer por ex.:

 

<table width="300" border="0" cellspacing="0" cellpadding="0">
  <tr>
	<td width="85">Nome</td>
	<td width="215"><input type="text" name="nome[]" /></td>
  </tr>
  <tr>
	<td>Email</td>
	<td><input type="text" name="email[]" /></td>
  </tr>
  <tr>
	<td>Telefone</td>
	<td><input type="text" name="fone[]" /></td>
  </tr>
  <tr>
	<td>Email</td>
	<td><input type="text" name="email[]" /></td>
  </tr>
  <tr>
	<td>Telefone</td>
	<td><input type="text" name="fone[]" /></td>
  </tr>
  
  <tr>
	<td>Email</td>
	<td><input type="text" name="email[]" /></td>
  </tr>
  <tr>
	<td>Telefone</td>
	<td><input type="text" name="fone[]" /></td>
  </tr>
  
  <tr>
	<td>Email</td>
	<td><input type="text" name="email[]" /></td>
  </tr>
  <tr>
	<td>Telefone</td>
	<td><input type="text" name="fone[]" /></td>
  </tr>
</table>

Certo ate ai tudo bem, agora vamos ao banco de dados, tenho 2 tabelas uma para os itens e outras para o sub-itens digamos assim. nos itens iria o nome e nos subitens os emails e telefones.

 

Preciso que ao submeter o formulario o sistema peque o valor do campo nome e insira na tabela item e os emails e telefones na tabela sub-itens entendeu?

 

Lembrando que os emails e telefones poderao ser varios ou podera ser apenas um campo de cada(1 email, 1 telefone) e TAMBEM que podera haver mais tabelas ou seja depois de inserir os nome e os emails, telefone ele devera partir para o proximo nome e emails e telefones.

 

Sera que tendeu? Como poderia fazer algo do tipo? Acho que vai dar um trabalhao :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

??

 

teste.php

<form action=teste.php method=post>
	<input type=hidden name=act value=1>
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	<input value='send' type='submit' />
</form>

<?php

if( !isset( $_POST['act'] ) ){

echo '<hr>';

	$f1= 'nome';
	$f2	= 'email';
	$f3	= 'telefone';
	
	while( list( $k, $v ) = each( $_POST[$f1] ) ){
		$v1 = $v;			   // name
		$v2 = $_POST[$f2][$k];  // email
		$v3 = $_POST[$f3][$k];  // tel
		$sql[$k] = "INSERT INTO cadastro (nome,email,telefone) VALUES ('$v1','$v2','$v1');";

		echo '<br />';
		echo $sql[$k];
	}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

certo e como seria neste caso?

 

<form action=teste.php method=post>
	<input type=hidden name=act value=1>
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	
	<br><input name='nome[]' type='text' value='' />
	<br><input name='email[]' type='text' value='' />
	<br><input name='telefone[]' type='text' value='' />
	<input value='send' type='submit' />
</form>

Porque como disse pode ser que para um nome existam varios campos de email e telefone.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Testei com a situação que te passei e olha como fica:

 

INSERT INTO cadastro (nome,email,telefone) VALUES ('Nome1','Email1','Fone1');

INSERT INTO cadastro (nome,email,telefone) VALUES ('Nome 2','Email1a','Fone1a');

INSERT INTO cadastro (nome,email,telefone) VALUES ('Nome 3','Email2','Fone2');

<form action=campos.php method=post>
	<input type=hidden name=act value=1>
	<br>Nome:<input name='nome[]' type='text' value='' />
	<br>E-mail:<input name='email[]' type='text' value='' />
	<br>Fone:<input name='telefone[]' type='text' value='' />
	<br>E-mail:<input name='email[]' type='text' value='' />
	<br>Fone:<input name='telefone[]' type='text' value='' />
	
	<br>Nome:<input name='nome[]' type='text' value='' />
	<br>E-mail:<input name='email[]' type='text' value='' />
	<br>Fone:<input name='telefone[]' type='text' value='' />
	
	<br>Nome:<input name='nome[]' type='text' value='' />
	<br>E-mail:<input name='email[]' type='text' value='' />
	<br>Fone:<input name='telefone[]' type='text' value='' />
	<input value='send' type='submit' />
</form>

<?php

if( $_POST['act'] ){

echo '<br>';

	$f1= 'nome';
	$f2	= 'email';
	$f3	= 'telefone';
	
	while( list( $k, $v ) = each( $_POST[$f1] ) ){
		$v1 = $v;			   // name
		$v2 = $_POST[$f2][$k];  // email
		$v3 = $_POST[$f3][$k];  // tel
		$sql[$k] = "INSERT INTO cadastro (nome,email,telefone) VALUES ('$v1','$v2','$v3');";

		echo '<br />';
		echo $sql[$k];
	}

}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Insert,

agora a conversa é outra...

 

de qualquer modo pode aproveitar o mesmo exemplo que te enviei.

 

utilize raciocínio lógico para adaptar o script

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.