Ir para conteúdo
Fórum Script Brasil
  • 0

insert com uso de for


carlosinss

Pergunta

Pessoal, estou com dificuldades para criar um codigo implemente insert com uso for. Tenho um formulario que transmite as variáveis $dt_ini e $dt_fim, $mat e $ocor na tabela tenho que registrar o primeiro dia e todos os dias subsequentes até o ultimo dia, o valor de $mat e $ocorr será repetido em todos os dias inseridos.

:wacko:

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Antes de mais nada, você deve calcular quantos dias se passaram até a data atual, quando deverá ocorrer o insert.

Vou deixar aqui duas funções de data para te auxiliar:

<?
/*********************************************************************************
- Date operations by André Cupini
- Sum or subtract day, months or years from any date
- Ex:
require_once("class_dt.php");
$dt = new DT;
$date = $dt->operations("06/01/2003", "sum", "day", "4")   // Return 10/01/2003
$date = $dt->operations("06/01/2003", "sub", "day", "4")   // Return 02/01/2003
$date = $dt->operations("06/01/2003", "sum", "month", "4") // Return 10/05/2003
*********************************************************************************/
class DT
{
    // Função que soma ou subtrai, dias, meses ou anos de uma data qualquer
    function operations($date, $operation, $where = FALSE, $quant, $return_format = FALSE)
    {
        // Verifica erros
        $warning = "<br>Warning! Date Operations Fail... ";
        if(!$date || !$operation) {
            return "$warning invalid or inexistent arguments<br>";
        }else{
            if(!($operation == "sub" || $operation == "-" || $operation == "sum" || $operation == "+")) return "<br>$warning Invalid Operation...<br>";
            else {
                // Separa dia, mês e ano
                list($day, $month, $year) = split("/", $date);

                // Determina a operação (Soma ou Subtração)
                ($operation == "sub" || $operation == "-") ? $op = "-" : $op = '';

                // Determina aonde será efetuada a operação (dia, mês, ano)
                if($where == "day")   $sum_day     = $op."$quant";
                if($where == "month") $sum_month = $op."$quant";
                if($where == "year")  $sum_year     = $op."$quant";
                
                // Gera o timestamp
                $date = mktime(0, 0, 0, $month + $sum_month, $day + $sum_day, $year + $sum_year);
                
                // Retorna o timestamp ou extended
                ($return_format == "timestamp" || $return_format == "ts") ? $date = $date : $date = date("d/m/Y", "$date");

                // Retorna a data
                return $date;
            }
        }
    }
}
?>
Esta função te retorna a data quando somados ou subtraidos quantos dias você quiser.
function dia_ultrapassado($databd){
      /*Essa funcão informa o número de segundos transcorridos desde as 00:00:00 do dia 1 de janeiro de 1970. No  caso calculo os segundos transcorridos para cada uma das datas. A subtração dos dois valores encontrados informa a diferença (em segundos) entre as duas datas, como 24 horas tem 86400 segundos, o resultado dividido por 86400 resulta no número de dias.*/
        
        $databd= @explode("-",$databd);
        $data = @mktime(0,0,0,$databd[1],$databd[2],$databd[0]);
        $data_atual = @mktime(0,0,0,date("m"),date("d"),date("Y"));
        $dias = ($data - $data_atual)/86400;
        $dias = @ceil($dias);
        $final=@abs($dias);
        
        return $final;
      }
Esta função te dá quantos dias se passaram desde uma data. Bom..elas podem te ajudar no que você vai precisar. Assim que você tiver em mãos quantos dias se passaram, seu for vai ficar mais ou menos assim:
for($a=0;$a < $dias_passados;$a++){
$insert="inser...";

}
Espero ter te ajudado.

Link para o comentário
Compartilhar em outros sites

  • 0

Mario, muito obrigado as funções serão muito úteis.

Consegui de outra forma veja como ficou, tá rodando beleza.

$dia1 = conv_data($dia2);//dia de inicio vem do formulario

$dia2 = conv_data($dia);//dia fim vem do formulario

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());

}

Antes de mais nada, você deve calcular quantos dias se passaram até a data atual, quando deverá ocorrer o insert.

Vou deixar aqui duas funções de data para te auxiliar:

<?
/*********************************************************************************
- Date operations by André Cupini
- Sum or subtract day, months or years from any date
- Ex:
require_once("class_dt.php");
$dt = new DT;
$date = $dt->operations("06/01/2003", "sum", "day", "4")   // Return 10/01/2003
$date = $dt->operations("06/01/2003", "sub", "day", "4")   // Return 02/01/2003
$date = $dt->operations("06/01/2003", "sum", "month", "4") // Return 10/05/2003
*********************************************************************************/
class DT
{
    // Função que soma ou subtrai, dias, meses ou anos de uma data qualquer
    function operations($date, $operation, $where = FALSE, $quant, $return_format = FALSE)
    {
        // Verifica erros
        $warning = "<br>Warning! Date Operations Fail... ";
        if(!$date || !$operation) {
            return "$warning invalid or inexistent arguments<br>";
        }else{
            if(!($operation == "sub" || $operation == "-" || $operation == "sum" || $operation == "+")) return "<br>$warning Invalid Operation...<br>";
            else {
                // Separa dia, mês e ano
                list($day, $month, $year) = split("/", $date);

                // Determina a operação (Soma ou Subtração)
                ($operation == "sub" || $operation == "-") ? $op = "-" : $op = '';

                // Determina aonde será efetuada a operação (dia, mês, ano)
                if($where == "day")   $sum_day     = $op."$quant";
                if($where == "month") $sum_month = $op."$quant";
                if($where == "year")  $sum_year     = $op."$quant";
                
                // Gera o timestamp
                $date = mktime(0, 0, 0, $month + $sum_month, $day + $sum_day, $year + $sum_year);
                
                // Retorna o timestamp ou extended
                ($return_format == "timestamp" || $return_format == "ts") ? $date = $date : $date = date("d/m/Y", "$date");

                // Retorna a data
                return $date;
            }
        }
    }
}
?>
Esta função te retorna a data quando somados ou subtraidos quantos dias você quiser.
function dia_ultrapassado($databd){
      /*Essa funcão informa o número de segundos transcorridos desde as 00:00:00 do dia 1 de janeiro de 1970. No  caso calculo os segundos transcorridos para cada uma das datas. A subtração dos dois valores encontrados informa a diferença (em segundos) entre as duas datas, como 24 horas tem 86400 segundos, o resultado dividido por 86400 resulta no número de dias.*/
        
        $databd= @explode("-",$databd);
        $data = @mktime(0,0,0,$databd[1],$databd[2],$databd[0]);
        $data_atual = @mktime(0,0,0,date("m"),date("d"),date("Y"));
        $dias = ($data - $data_atual)/86400;
        $dias = @ceil($dias);
        $final=@abs($dias);
        
        return $final;
      }
Esta função te dá quantos dias se passaram desde uma data. Bom..elas podem te ajudar no que você vai precisar. Assim que você tiver em mãos quantos dias se passaram, seu for vai ficar mais ou menos assim:
for($a=0;$a < $dias_passados;$a++){
$insert="inser...";

}
Espero ter te ajudado.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...