Ir para conteúdo

POWERED BY:

Arquivado

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

gremio10

Fazer inserção com foreach

Recommended Posts

Galera , tenho 6 campos.

 

Tipo :

Valor - Nome - Email - Dia - Mes - Ano

 

e são 10 campos iguais no mesmo , apenas o Valor é fixo ...

 

fiz assim

 

Podem ver que so fiz com dois por enquanto por que qndo ele insere as 10 vezes o nome e o email vai um por um .

		$valor = $_POST["valor"];
foreach($_POST["nome"] as $nome){
	foreach($_POST["email"] as $email){

$insere = mysql_query("INSERT INTO news (nome,email,valor) VALUES ('$nome','$email','$valor')");
}
}

Ajudem-me por favooor

Compartilhar este post


Link para o post
Compartilhar em outros sites

Utilize for(), assim você pode fazer com várias variáveis ao mesmo tempo. Exemplo:

 

$_POST = array(
   'valor' => array(
       'valor1-valor', 'valor2-valor', 'valor3-valor',
       'valor4-valor', 'valor5-valor', 'valor6-valor',
   ),
   'nome' => array(
       'valor1-nome', 'valor2-nome', 'valor3-nome',
       'valor4-nome', 'valor5-nome', 'valor6-nome',
   )
);

$size   = min( count( $_POST[ 'valor' ] ), count( $_POST[ 'nome' ] ) );
$format = 'INSERT INTO `news` (`nome`, `valor`) VALUES (\'%s\', \'%s\')';

for( $i = 0; $i < $size; ++$i ) {
   $insere = mysql_query( sprintf( $format, $_POST[ 'nome' ][ $i ], $_POST[ 'valor' ][ $i ] ) );
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

$_POST = array(
    'valor' => array(
        'valor1-valor', 'valor2-valor', 'valor3-valor',
        'valor4-valor', 'valor5-valor', 'valor6-valor',
    ),
    'nome' => array(
        'valor1-nome', 'valor2-nome', 'valor3-nome',
        'valor4-nome', 'valor5-nome', 'valor6-nome',
    )
);

neste array eu terei que dar valores ? ou ele vai receber o valor da form ?

 

abrçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tb pode fazer assim:

 

foreach($_POST as $k => $v){
  echo $k." = ".$v;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo assim , meu form é assim

 

<table width="613" border="0" cellspacing="1" cellpadding="0" style="color:#FFF; font-family:Verdana, Geneva, sans-serif;font-size:10px">
  <tr>
    <td width="199">Nome : <input type="text" name="nome[]"  /></td>
    <td width="201">E-mail : <input type="text" name="email[]" /></td>
    <td width="213"><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
  <tr>
    <td>Nome : <input type="text" name="nome[]"  /></td>
    <td>E-mail : <input type="text" name="email[]" /></td>
    <td><input type="text" name="dia[]" maxlength="2" size="2" />/<input type="text" name="mes[]" maxlength="2" size="2" />/<input type="text" name="ano[]" maxlength="4" size="4" /></td>
  </tr>
    <tr>
    <td colspan="3"> </td>
  </tr>
    <tr>
    <td colspan="3" align="center"><input type="submit" value="Enviar"></td>
  </tr>
</table>

Não sei se me entenderam , sao dados aond o nome , email e a data(digamos) é de uma pessoa , mas são dez campos de cada , que seria dez inserções diferentes

Compartilhar este post


Link para o post
Compartilhar em outros sites

André , eu fiz assim , nao sei se esta certo

 


<?php
include_once("admin/inc/conex.php");
$_POST = array(
    'email[]' => array(
        'valor1-email','valor2-email', 'valor3-email',
        'valor4-email','valor5-email', 'valor6-email',
		'valor7-email','valor8-email','valor9-email','valor10-email',
    ),
    'nome[]' => array(
        'valor1-nome','valor2-nome', 'valor3-nome',
        'valor4-nome','valor5-nome', 'valor6-nome',
		'valor7-nome','valor8-nome','valor9-nome','valor10-nome',
    ),
	'valor[]' => array(
        'valor1-valor','valor2-valor', 'valor3-valor',
        'valor4-valor','valor5-valor', 'valor6-valor',
		'valor7-valor','valor8-valor','valor9-valor','valor10-valor',
    ),
    'dia[]' => array(
        'valor1-dia','valor2-dia', 'valor3-dia',
        'valor4-dia','valor5-dia', 'valor6-dia',
		'valor7-dia','valor8-dia','valor9-dia','valor10-dia',
    ),
	'mes[]' => array(
        'valor1-mes','valor2-mes', 'valor3-mes',
        'valor4-mes','valor5-mes', 'valor6-mes',
		'valor7-mes','valor8-mes','valor9-mes','valor10-mes',
    ),
	'ano[]' => array(
        'valor1-ano','valor2-ano', 'valor3-ano',
        'valor4-ano','valor5-ano', 'valor6-ano',
		'valor7-ano','valor8-ano','valor9-ano','valor10-ano',
    )
);

/* ==> Linha 36 ==> */ $size   = min( count( $_POST[ 'email' ] ), count( $_POST[ 'nome' ] , count( $_POST[ 'valor' ] ), count( $_POST[ 'dia' ] ,count( $_POST[ 'mes' ] ), count( $_POST[ 'ano' ]  ) );

$format = 'INSERT INTO news (nome,email,valor,dia,mes,ano) VALUES (\'%s\', \'%s\',\'%s\', \'%s\',\'%s\', \'%s\')';

for( $i = 0; $i < $size; ++$i ) {
    $insere = mysql_query( sprintf( $format, $_POST[ 'nome' ][ $i ], $_POST[ 'email' ][ $i ], $_POST[ 'valor' ][ $i ], $_POST[ 'dia' ][ $i ], $_POST[ 'mes' ][ $i ], $_POST[ 'ano' ][ $i ] ) ) or die (mysql_error());
}


?>

e ele acusa um erro

 

Parse error: syntax error, unexpected ';' on line 36

 

Obrigado

 

Desculpe , achei o erro , agora ele apenas nao insere , o que causava o erro era falta de ')';

 

o que pode ser que esta acontecendo André ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara consegui , Obrigado pela ajuda , vou postar o codigo , caso mais alguem precise Imagem Postada

<?php/*$_POST = array(    'email[]' => array(        'valor1-email','valor2-email', 'valor3-email',        'valor4-email','valor5-email', 'valor6-email',		'valor7-email','valor8-email','valor9-email','valor10-email',    ),    'nome[]' => array(        'valor1-nome','valor2-nome', 'valor3-nome',        'valor4-nome','valor5-nome', 'valor6-nome',		'valor7-nome','valor8-nome','valor9-nome','valor10-nome',    ),	'valor[]' => array(        'valor1-valor','valor2-valor', 'valor3-valor',        'valor4-valor','valor5-valor', 'valor6-valor',		'valor7-valor','valor8-valor','valor9-valor','valor10-valor',    ),    'dia[]' => array(        'valor1-dia','valor2-dia', 'valor3-dia',        'valor4-dia','valor5-dia', 'valor6-dia',		'valor7-dia','valor8-dia','valor9-dia','valor10-dia',    ),	'mes[]' => array(        'valor1-mes','valor2-mes', 'valor3-mes',        'valor4-mes','valor5-mes', 'valor6-mes',		'valor7-mes','valor8-mes','valor9-mes','valor10-mes',    ),	'ano[]' => array(        'valor1-ano','valor2-ano', 'valor3-ano',        'valor4-ano','valor5-ano', 'valor6-ano',		'valor7-ano','valor8-ano','valor9-ano','valor10-ano',    ));*/$size   = min( count( $_POST[ 'email' ] ), count( $_POST[ 'nome' ] ) );$format = 'INSERT INTO news (nome,email,valor,dia,mes,ano) VALUES ('%s', '%s','%s', '%s','%s', '%s')';for( $i = 0; $i < $size; ++$i ) {    $insere = mysql_query( sprintf( $format, $_POST[ 'nome' ][ $i ], $_POST[ 'email' ][ $i ], $_POST[ 'valor' ], $_POST[ 'dia' ][ $i ], $_POST[ 'mes' ][ $i ], $_POST[ 'ano' ][ $i ] ) ) or die (mysql_error());}?>
Sem querer encomodar mais , mas como que eu faço para saber quais estão vazios ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem querer encomodar mais , mas como que eu faço para saber quais estão vazios ?

 

 

Quando tu faz o for para inserção no banco, antes de executar a consulta faz um if para verificar se o campo != "".

Se for != "" é por que foi preenchido, daí executa a consulta; senão não faz nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode fazer uma verificação antes de inserir os dados, utilizando empty().

 

eu fiz isso aqui ó...

 

for( $i = 0; $i < $size; ++$i ) {
	if (empty($_POST['nome'][$i])){
		$a = $i;
$a--;	
	}else{
		$a = $i;
$a++;	
	}

}
echo $a;

Mas se funciona ele so retira um ou dois , e qndo deixo todos os campos em branco , entao dos 10 ele insere 8 estando todos em branco....

 

HELPPPP

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.