Jump to content


Photo

Inserir Vários Registros Com Php E Mysql


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

#1 gabrielbm

gabrielbm

    Novato no fórum

  • Usuários
  • 18 posts
  • Sexo:Masculino
  • Localidade:Novo Hamburgo/RS

Posted 30/10/2007, 16:02

Pessoal,

Teria como fazer algo mais ou menos nesse sentido:


$qryPed2 = "INSERT INTO subpedidos (subped_codpedido, subped_codproduto, subped_quantidade, subped_valor, subped_subtotal) VALUES "for($i = 0; $i < $nitens; $i++){	echo "($codPedido, $carId, $carQtde, $carPreco, $carSubtotal)";}

A idéia é fazer várias inserções sem repetir a instrução.

Se alguém souber fazer isso com vários campos utilizando foreach também ta valendo.

Aguardo.. Abraços!

#2 Goku Jr

Goku Jr

    Nilson

  • Usuários
  • 3757 posts
  • Sexo:Masculino

Posted 31/10/2007, 07:23

faça um LOOP ( WHILE ou FOR ) antes do INSERT ^^', você também pode usar o FOREACH.

pelo menos e assim que faço quando vou inserir varios registros onde a sintaxe do INSERT é igual porém os valores são diferentes.

T+
-----------------------------------------------------------------------
PALMEIRAS - Primeiro campeão do mundo em 1951

#3 gabrielbm

gabrielbm

    Novato no fórum

  • Usuários
  • 18 posts
  • Sexo:Masculino
  • Localidade:Novo Hamburgo/RS

Posted 31/10/2007, 13:28

Obrigado Goku Jr, consegui.

Tive que fazer desta forma que você falou. A idéia era fazer um loop somente nos dados para não precisar executar várias vezes o insert, mas não deu certo.

Se alguém aí souber uma forma...

Abraço.

#4 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 31/10/2007, 16:39

Por quê não executa o INSERT também?
Tem problemas com tráfego de dados?

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#5 boirock

boirock

    Tecnologia para todos (agora hexa campeão)

  • Usuários
  • 1559 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR
  • Interesses:PostgreSQL - PHP

Posted 01/11/2007, 08:52

INSERT é um por vez, até onde eu sei... O que você pode fazer é enviar um bloco de código de uma vez só, mas ainda não vários INSERTs.
A não ser que seja INSERT (...) FROM SELECT ...
As alternativas são chamar uma stored procedure (não vem ao caso) e usar o comando COPY (não sei qual é o nome disso no MySQL, mas também não se enquadra).
Fica a pergunta do Dudu... pq vc não pode enviar vários inserts?
[] Rafael :boxing:

#6 gabrielbm

gabrielbm

    Novato no fórum

  • Usuários
  • 18 posts
  • Sexo:Masculino
  • Localidade:Novo Hamburgo/RS

Posted 01/11/2007, 13:39

Por quê não executa o INSERT também?
Tem problemas com tráfego de dados?

Até mais ^_^


Amigo, a questão não é problema com tráfego de dados ok!? Se temos uma solução que diminui o processamento do servidor por que não a fazer?

Abraço.

#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 01/11/2007, 16:09

Por quê não executa o INSERT também?
Tem problemas com tráfego de dados?

Até mais ^_^


Amigo, a questão não é problema com tráfego de dados ok!? Se temos uma solução que diminui o processamento do servidor por que não a fazer?

Abraço.


Concordo, mas o problema é que a solução não aparece...
Acho que a diferença de processamento entre dar INSERTS múltiplos e não dar não faria muita diferença...
Diferença daria, mais não muita, não uma difeença que conpense o trabalho de desenvolver um script desses.

------------------------------------------
Editando



Consegui montar um modelo de exibição..
Muita gambiarra :D

<?
$sql  = "INSERT INTO teste (num) VALUES<br>\n";
$a	= 0;
$num  = 20;
for($i = 1; $i < $num; $i++){
	$sql .= "(".$i.")";

	if(($i > $a) && ($i < $num-1)) {
		 $sql .= ", <br>\n";
	}elseif($i+1 == $num) {
	   $sql .= "; <br>\n";
	}
	
}$a++;

echo $sql;

?>

Agora aproveite o que puder.
Até mais ^_^

Edição feita por: _Dudu_1533, 01/11/2007, 17:02.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#8 Boxer

Boxer

    Ativo

  • Usuários
  • 304 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 01/11/2007, 16:45

Opa!

function inserir($codPedido, $carId, $carQtde, $carPreco, $carSubtotal){

$qryPed2 = "INSERT INTO subpedidos (subped_codpedido, subped_codproduto, subped_quantidade, subped_valor, subped_subtotal) VALUES ('".$codPedido."', '".$carId."', '".$carQtde."', '".$carPreco."', '".$carSubtotal."')
$exec = mysql_query($qryPed2);

}


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

this->inserir($codPedido, $carId, $carQtde, $carPreco, $carSubtotal);

}

Fiz rapidão e não testei, ok?
Mas usa function q fica melhor...

[]´s
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"

#9 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 01/11/2007, 16:58

Opa!

function inserir($codPedido, $carId, $carQtde, $carPreco, $carSubtotal){

$qryPed2 = "INSERT INTO subpedidos (subped_codpedido, subped_codproduto, subped_quantidade, subped_valor, subped_subtotal) VALUES ('".$codPedido."', '".$carId."', '".$carQtde."', '".$carPreco."', '".$carSubtotal."')
$exec = mysql_query($qryPed2);

}


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

this->inserir($codPedido, $carId, $carQtde, $carPreco, $carSubtotal);

}

Fiz rapidão e não testei, ok?
Mas usa function q fica melhor...

[]´s



Mas cai na questão que ele não quer executar múltiplos INSERTS entendeu?

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#10 Elsonlima

Elsonlima

    Novato no fórum

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

Posted 13/02/2008, 18:28

Cara eu tava com este mesmo problema e uebrei a cabeça que vc nem imagina.
Mas consegui resolver da seguinte maneira:

$nome_do_campo_do_form = $_POST['tnome_do_campo_do_form]; // pega os dados vindos do loop do form
$cont = $_ENV['nome_do_campo_do_form']; // troquei o nome da variavel e nodo de receber os dados

for ($cont = 1; $cont < 11; $cont ++) { // fazendo um loop com os dados e o INSERT
if ($_GET['btn'] == "gravar"){ // confere se o botao enviar foi acionado
$sql = mysql_query("INSERT INTO sua_tabela (campo) VALUES ('$cont')");

print "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=cadastro.php'>"; // retornando a pagina de cadastro
}}
?>

AGORA O FORM

<form action="?btn=gravar" method="post" name="form" id="form">
<input name="telefone" type="text" value="<?php echo "$cont" ?>"/><?php ?>
<input name="Submit" type="submit" value="Gravar" />

</form>

Bom é isso

Espero ter ajudado!
:boxing:

Edição feita por: Elsonlima, 13/02/2008, 18:31.


#11 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 14/02/2008, 14:23

Cara eu tava com este mesmo problema e uebrei a cabeça que vc nem imagina.
Mas consegui resolver da seguinte maneira:

$nome_do_campo_do_form = $_POST['tnome_do_campo_do_form]; // pega os dados vindos do loop do form
$cont = $_ENV['nome_do_campo_do_form']; // troquei o nome da variavel e nodo de receber os dados

for ($cont = 1; $cont < 11; $cont ++) { // fazendo um loop com os dados e o INSERT
if ($_GET['btn'] == "gravar"){ // confere se o botao enviar foi acionado
$sql = mysql_query("INSERT INTO sua_tabela (campo) VALUES ('$cont')");

print "
<META HTTP-EQUIV=REFRESH CONTENT='0; URL=cadastro.php'>"; // retornando a pagina de cadastro
}}
?>

AGORA O FORM

<form action="?btn=gravar" method="post" name="form" id="form">
<input name="telefone" type="text" value="<?php echo "$cont" ?>"/><?php ?>
<input name="Submit" type="submit" value="Gravar" />

</form>

Bom é isso

Espero ter ajudado!
:boxing:


http://forum.wmonlin...&...st&p=879198
Até mais..

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap





1 user(s) are reading this topic

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

IPB Skin By Virteq