Ir para conteúdo

POWERED BY:

Arquivado

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

Tiago Mello

Inserindo vários registros no banco ao mesmo tempo!

Recommended Posts

Bom dia gente, eu estou tentando inserir varios campos ao mesmo tempo no banco, mas ele está inserindo apenas o último, e alguns campos, quando são inseridos no banco, aparecem com o nome "Array".

 

A maneira de enviar apenas um registro seria essa:

$fornecedor = htmlspecialchars($_POST['fornecedor']);
	$data = $_POST['data'];
	$certificado = $_POST['certificado'];
	$pdf = $_FILES['pdf']['name'];

E a que insere no banco essa:

 

$sql = "insert into certificado (id_certificado,fornecedor,data,numero_certificado,pdf) values ('','$fornecedor','$data','$certificado','$pdf')";
e para vários registros como usaria?

Desde já agradeço a ajuda de todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = "insert into certificado (id_certificado,fornecedor,data,numero_certificado,pdf) values ('','$fornecedor','$data','$certificado','$pdf')";

e para vários registros como usaria?

Desde já agradeço a ajuda de todos!

 

Separe os values por vírgula.

 

INSERT INTO tables (`campo01`,`campo02`)VALUES ('valor01','valor02'),('valor03','valor04'),('valor05','valor06');

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso aqui seria:

certificado (id_certificado,fornecedor,data,numero_certificado,pdf) values ('','$fornecedor','$data','$certificado','$pdf'), ('','$fornecedor','$data','$certificado','$pdf')...

isso?

mas tem uma coisinha, nem sempre eu vou usar a mesma quantidade de envios, entende?

eu criei uma pagina para contar quantos registros serão inseridos, se colocarem 50 registros, como posso fazer para inseri-los automaticamente no banco, teria que fazer um loop no insert?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu tenho o seguinte formulário:

nome do forn: FULANO

data1: arquivo1:

data2: arquivo2:

data3: arquivo3:

data50: arquivo50:

teria como inserir esse campo nome do fornecedor, para todos os outros campos, (data, arquivo, etc)?

no formulário teria que ser assim?

<input name="data[]" type="text" id="data[]" size="15" value= "" />

 

e para pegar os dados, ele diz que está dando erro desta forma:

$data = $_POST['data'][]; (teria que fazer um loop aqui também?)

 

e esse seria o loop no insert né?

for ($i=0; $i < $conta; $i++){

$sql = "insert into certificado (id_certificado,fornecedor,data,numero_certificado,pdf) values ('','$fornecedor','$data','$certificado','$pdf')";

$consulta = mysql_query($sql);}

 

isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Só confirme para que você deseja utilizar um form, nele digitar os dados e em um único submit do form, inseriri todos os dados? Se for isso, seria algo + ou - assim:

 

<form method="post" name="FULANO">
    fornecedor 01:<input type="text" name="fornecedor[]" value=""  /><br />
    data 01:<input type="text" name="data[]" value=""  />
    <br />------------------------------<br />
    fornecedor 02:<input type="text" name="fornecedor[]" value=""  /><br />
    data 02:<input type="text" name="data[]" value=""  /><br /><br />
    <input type="submit" value="testar" />
</form>

E para pegar os dados e montar o INERT no PHP, poderia fazer assim:

 

<?
if(isset($_POST['fornecedor'])){
	$INSERT = "INSERT INTO certificado (`fornecedor`,`data`) VALUES";	
	foreach($_POST['fornecedor'] as $IdArray => $ValueArray){
		$INSERT .= "('$ValueArray','".$_POST['data'][$IdArray]."'),";
	}
	//AQUI EXECUTA O $INSERT ... 
        mysql_query($INSERT);
}
?>

Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu posso pegar esses dados, no momento que for inserir mesmo né, eu sempre pego os dados, em cima, e a última coisa que faço e inserir no banco, pego tudo junto então?

 

entendi sim, é exatamente isso que quero fazer, só que não teria como pegar esse fornecedor apenas uma vez, tipo selecionar ele, e ficar guardado em alguma variavel, e imprimi-la nos outros campos que serão inseridos?

é que esse cadastro sempre vai ser com muitos registros, cerca de 50, pra cima, dai teria que em todos os campos digitar o fornecedor?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu posso pegar esses dados, no momento que for inserir mesmo né, eu sempre pego os dados, em cima, e a última coisa que faço e inserir no banco, pego tudo junto então?

 

entendi sim, é exatamente isso que quero fazer, só que não teria como pegar esse fornecedor apenas uma vez, tipo selecionar ele, e ficar guardado em alguma variavel, e imprimi-la nos outros campos que serão inseridos?

é que esse cadastro sempre vai ser com muitos registros, cerca de 50, pra cima, dai teria que em todos os campos digitar o fornecedor?

 

 

Só alterar o código por este

 

<?
if(isset($_POST['fornecedor'])){
	$INSERT = "INSERT INTO certificado (`fornecedor`,`data`) VALUES";	
        $fornecedor = $_POST['fornecedor'];
	foreach($_POST['data'] as $data){
		$INSERT .= "('$fornecedor','$data'),";
	}
	echo $INSERT;
}
?>

E o form por este:

 

<form method="post" name="FULANO">
    fornecedor:<input type="text" name="fornecedor[]" value=""  /><br />
    data:<input type="text" name="data[]" value=""  />
    data:<input type="text" name="data[]" value=""  />
....
    <br />
    <br />
    <input type="submit" value="testar" />
</form>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para pegar os dados, ficaria assim?

$fornecedor = htmlspecialchars($_POST['fornecedor'][]);
	$data = $_POST['data'][];
	$certificado = $_POST['certificado'][];
	$pdf = $_FILES['pdf']['name'][];
E para inserir:

if(isset($_POST['fornecedor'])){
        $INSERT = "INSERT INTO certificado (`fornecedor`,`data`, `certificado`, `pdf`) VALUES";       
        $fornecedor = $_POST['fornecedor'];
        foreach($_POST['data'] as $data){
                $INSERT .= "('$fornecedor','$data'),";
        }
		foreach($_POST['certificado'] as $certificado){
				 $INSERT .= "('$fornecedor','$certificado'),";}
		foreach($_POST['pdf'] as $pdf){
		$INSERT .= "('$fornecedor','$pdf'),";}
        echo $INSERT;
}
$consulta = mysql_query($INSERT);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tiago...

 

Deixe seu form + ou - assim?

 

<form method="post" name="FULANO">
	fornecedor:<input type="text" name="fornecedor" value=""  /><br />
    informações 01<br />
    data:<input type="text" name="data[]" value=""  /> | numero_certificado:<input type="text" name="numero_certificado[]" value=""  /> | pdf:<input type="text" name="pdf[]" value=""  /><br />
    informações 02<br />
    data 02:<input type="text" name="data[]" value=""  /> | numero_certificado:<input type="text" name="numero_certificado[]" value=""  /> | pdf:<input type="text" name="pdf[]" value=""  /><br />
    informações 03<br />
    data 03:<input type="text" name="data[]" value=""  /> | numero_certificado:<input type="text" name="numero_certificado[]" value=""  /> | pdf:<input type="text" name="pdf[]" value=""  /><br />
    <input type="submit" value="enviar" />
</form>

E para montar o INSERT, deixe assim que todos os dados já serão inclusos

 

<?
if(isset($_POST['fornecedor'])){
	$fornecedor = $_POST['fornecedor'];
	foreach($_POST['data'] as $IdArray => $ValueArray){
		if(isset($INSERT)){
			$INSERT .=  ",('$fornecedor','".$_POST['data'][$IdArray]."','".$_POST['numero_certificado'][$IdArray]."','".$_POST['pdf'][$IdArray]."')";
		}else{
			$INSERT = "INSERT INTO certificado (`fornecedor`,`data`,`numero_certificado`,`pdf`) values ('$fornecedor','".$_POST['data'][$IdArray]."','".$_POST['numero_certificado'][$IdArray]."','".$_POST['pdf'][$IdArray]."')";
		}
	}
	if(isset($INSERT)){
		mysql_query($INSERT);
	}
}
?>

Ok.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o unicos erros que estão me dando são os seguintes:

No banco, ao invés do nome do fornecedor, aparece Array para todos, e o pdf, não está aparecendo no banco, e eu insiro duas vezes, e ele insere quatro.

Os unicos erros são esses cara, o resto agora tá funcionando beleza!

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>
<body>
<table width="650" border="0" cellpadding="0" cellspacing="0">
  <!--DWLayoutTable-->
  <tr>
    <td width="224" height="140"> </td>
    <td width="252"> </td>
    <td width="174"> </td>
  </tr>
  <tr>
    <td height="24"> </td>
    <td valign="middle">
	<font color="#FF0000"><b>
	<?php
// inclui o arquivo de configuração do sistema
include "Config/config_sistema.php";
// recebe dados do formulario
    $fornecedor = htmlspecialchars($_POST['fornecedor']);
	$data = $_POST['data'];
	$certificado = $_POST['certificado'];
	$pdf = $_FILES['pdf'];
// Pasta de destino das fotos
$Destino = 'fotos/';
// Obtém dados do upload
$Fotos = $_FILES['pdf'];
// Contagem de fotos enviadas
$Conta = 0;

// Itera sobre as enviadas e processa as validações e upload
for($i = 0; $i < sizeof($Fotos); $i++)
{
    // Passa valores da iteração atual
    $Nome    = $Fotos['name'][$i];
    $Tamanho = $Fotos['size'][$i];
    $Tipo    = $Fotos['type'][$i];
    $Tmpname = $Fotos['tmp_name'][$i];

    // Verifica se tem arquivo enviado
    if($Tamanho > 0 && strlen($Nome) > 1)
    {
        // Verifica se é uma imagem
        if(preg_match('/^(.*)\.(doc|txt|pdf|xls|htm|html|rtf)$/',  $Nome))        {
            // Caminho completo de destino da foto
            $Caminho = $Destino . $Nome;

            // Tudo OK! Move o upload!
            if(move_uploaded_file($Tmpname, $Caminho))
            {
                echo 'Foto #' . ($i+1) . ' enviada.<br/>';
                
                // Faz contagem de enviada com sucesso
                $Conta++;
            }            
            else // Erro no envio
            {
                // $i+1 porque $i começa em zero
                echo 'Não foi possível enviar a foto #' . ($i+1) . '<br/>';
            }
        }
    }
}

if($Conta) // Imagens foram enviadas, ok!
{
    echo '<br/>Foi(am) enviada(s) ' . $Conta . ' foto(s).';
}
else // Nenhuma imagem enviada, faz alguma ação
{
    echo 'Você não enviou fotos!';
}


// faz consulta no banco para inserir os dados do usuario
if(isset($_POST['fornecedor'])){
        $fornecedor = $_POST['fornecedor'];
        foreach($_POST['data'] as $IdArray => $ValueArray){
                if(isset($INSERT)){
                        $INSERT .=  ",('$fornecedor','".$_POST['data'][$IdArray]."','".$_POST['numero_certificado'][$IdArray]."','".$_POST['pdf'][$IdArray]."')";
                }else{
                        $INSERT = "INSERT INTO certificado (fornecedor,data,numero_certificado,pdf) values ('$fornecedor','".$_POST['data'][$IdArray]."','".$_POST['numero_certificado'][$IdArray]."','".$_POST['pdf'][$IdArray]."')";
                }
        }
        if(isset($INSERT)){
                mysql_query($INSERT);
        }
}
$consulta = mysql_query($INSERT);
// verifica se o usuario foi cadastrado
if($consulta) {
	?><script type="text/javascript">
onload=function(){
alert("Certificado enviado com sucesso!")
}
</script>
<?php echo "<meta http-equiv='Refresh' content='0;URL=form_conta.php";?>
<?php
} else {
	echo "Não foi possivel efetuar o registro<br>
		  tente mais tarde pode ser um problema no servidor!";
	exit;
	}
?>

    <!--DWLayoutEmptyCell-->     </td>
    <td> </td>
  </tr>
  <tr>
    <td height="148"> </td>
    <td> </td>
    <td> </td>
  </tr>
</table>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, aproveitando o tópico, utilizei sua função e ele grava corretamente os dados em meu banco, porém na tela sempre me retorna o erro:

 

Warning: Invalid argument supplied for foreach() in D:\www\sgtw\cadcomprasitens.php on line 55

 

O meu código está assim:


$fornecedor = $row_RSCompras['for_id'];
if(isset($fornecedor)){
	$ultimacompra = $row_RSCompras['MAX(comp_id)'];
       foreach($_POST['field1'] as $IdArray => $ValueArray){
               if(isset($INSERT)){
                       $INSERT .=  ",('".$_POST['field1'][$IdArray]."','".$_POST['field2'][$IdArray]."','".$_POST['field3'][$IdArray]."','".$_POST['field4'][$IdArray]."','$fornecedor','1','".$_POST['field5'][$IdArray]."','$ultimacompra','".$_POST['field6'][$IdArray]."')";
               }else{
                       $INSERT = "INSERT INTO peca (pe_tp_id, pe_serial, pe_valor_compra, pe_valor_venda, for_id, cli_id, pe_status, cp_id, sit_id) values ('".$_POST['field1'][$IdArray]."','".$_POST['field2'][$IdArray]."','".$_POST['field3'][$IdArray]."','".$_POST['field4'][$IdArray]."','$fornecedor','1','".$_POST['field5'][$IdArray]."','$ultimacompra','".$_POST['field6'][$IdArray]."')";
               }
       }
       if(isset($INSERT)){
               mysql_query($INSERT);
       }
}

 

Não consigo achar o que está errado.

 

Agradeço.

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.