Jump to content


Photo

Insert Com For Ou While


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

#1 carlosins

carlosins

    Novato no fórum

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

Posted 19/04/2009, 19:01

:wacko: Pessoal, estou com dificuldade para criar uma rotina de insert com uso do for ou while.
Tenho um formulario que transmitirá as variáveis $dia1, $dia2, $mat e $oco, onde $dia1 é o dia de início do registro e $dia2 é o último dia a ser registrado na tabela, o insert deverá incluir na tabela todos os dias entre o primeiro dia inclusive e o ultimo dia inclusive e repetir o valor de $mat e $oco em cada registro .

Tentei o codigo abaixo, que entra em looping e não insere nada.

$dia1 = conv_data($dt_ini);//converte a data para inserir na tabela
$dia2 = conv_data($dt_fim);

while($dia1 <= $dia2){
$query = "INSERT INTO ponto$compete (dia, siape, oco) VALUES ('".$dia."', '".$mat."', '".$ocor.'")"
$result = mysql_query($query) or die("Falha no registro do ponto".mysql_error());
$dia1++;}';

#2 '' sem.Ponto

'' sem.Ponto

    Super Veterano

  • Ex-Admins
  • 2098 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte

Posted 20/04/2009, 02:13

Você colocou a variável $dia na query. Essa variável não existe. E o que é ponto$compete?

Bom, eu não recomendo isso que você fez, seria melhor executar a query apenas uma única vez.

Monte uma query assim:

INSERT INTO tabela (campo1, campo2, campo3) VALUES ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3')

Ao executar essa query uma única vez, será inserido 3 registros na tabela.

Deu para entender o que estou sugerindo?

(ok2)
att,
Muller Dias
ex-administrador Fórum WMO

#3 carlosins

carlosins

    Novato no fórum

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

Posted 20/04/2009, 17:31

Obrigado Super,
Tem razão errei na variável no caso deve ser $dia1, quanto a ponto$compete é a tabela, para cada competencia tenho uma tabela no banco de dados, então verifico a tabela a ser utilizada conforme a competência que está sendo utilizada pelo usuário, assim por exemplo para compete 032009 a tabela a ser inserida é ponto032009.
Alterei para $dia1, mas a aplicação entra luping.
Quanto a sugestão, desculpa mas sou novato e não compreendi como poderia fazer as inserções já que a quantidade de registros é variável, uma hora vou inserir 2 registros outra hora vou inserir 10 ou até 31 por isso pensei no FOR ou WHILE.



Você colocou a variável $dia na query. Essa variável não existe. E o que é ponto$compete?

Bom, eu não recomendo isso que você fez, seria melhor executar a query apenas uma única vez.

Monte uma query assim:

INSERT INTO tabela (campo1, campo2, campo3) VALUES ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3')

Ao executar essa query uma única vez, será inserido 3 registros na tabela.

Deu para entender o que estou sugerindo?

(ok2)



Pessoal, consegui a solução, o código ficou assim, tá rodando beleza.


$dia1 = conv_data($dia2);//variaveis do form convertidas para formato data do mysql
$dia2 = conv_data($dia);
for($dia=$dia1; $dia<=$dia2; $dia++)
{
$query = "INSERT INTO ponto$compete (dia, siape, oco) VALUES ('$dia', '$mat', '$ocor')";
$result = mysql_query($query) or die("Falha no registro do ponto".mysql_error());
}



Obrigado Super,
Tem razão errei na variável no caso deve ser $dia1, quanto a ponto$compete é a tabela, para cada competencia tenho uma tabela no banco de dados, então verifico a tabela a ser utilizada conforme a competência que está sendo utilizada pelo usuário, assim por exemplo para compete 032009 a tabela a ser inserida é ponto032009.
Alterei para $dia1, mas a aplicação entra luping.
Quanto a sugestão, desculpa mas sou novato e não compreendi como poderia fazer as inserções já que a quantidade de registros é variável, uma hora vou inserir 2 registros outra hora vou inserir 10 ou até 31 por isso pensei no FOR ou WHILE.



Você colocou a variável $dia na query. Essa variável não existe. E o que é ponto$compete?

Bom, eu não recomendo isso que você fez, seria melhor executar a query apenas uma única vez.

Monte uma query assim:

INSERT INTO tabela (campo1, campo2, campo3) VALUES ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3'), ('valor1', 'valor2', 'valor3')

Ao executar essa query uma única vez, será inserido 3 registros na tabela.

Deu para entender o que estou sugerindo?

(ok2)






1 user(s) are reading this topic

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

IPB Skin By Virteq