PHP; Mysql; calculate/ insert data automatically according to certain parameters

Asked

Viewed 388 times

0

Good afternoon, I have 3 tables. base de dados

I want to calculate and automatically insert the schedules in the scales table according to some parameters. ex: 4 days working mornings, 2 days off, 4 days working late (table data id-1 = morning; id-2 = afternoon; id-3 = off)

for example for a year or more

Thank you very much, Rui

  • I didn’t quite get the idea, but for what you want to do, you have to select, in the first table, then make a mysql_fetch_array or Assoc, and then insert in the other you want.

  • Also can do logo, directly with while.

  • What have you tried? Received some error?

  • I am very Noob in this. Anyway my problem are the parameters (4 days morning, 2 off, 4 days late) ie 4 days id=1, 2 days id=3 and...

1 answer

0


Good evening, I seem to have got around to my problem! The solution remains (at least temporary)

//criar o array (primeiros dois dias folga 1 e 2)
$arrayTurno = array('1','2');
//verifico qual o fim do array
$end = array_slice($arrayTurno, -1, 1);
//verifico qual o ultimo turno antes das folgas (manhã 1, manhã 2, tarde 1 ou tarde 2)
$lastTurno  = array_slice($arrayTurno, -3, 1);
//Verifico qual o ultimo turmo de manhã (3 manhã 1 e 5 manhã 2) 
$lastM  = array_slice($arrayTurno, -6, 1);


    // se o turno apenas tem apenas 2 dias (folgas) acrescenta 4 dias de manhã 1
    if (count($arrayTurno) < 3 and $end = '2') {
    array_push($arrayTurno, '3','3','3','3');
    }
    // se já existe 1 turno ou + verifica se é manhã 1 (se assim for acrescenta folgas + tarde 1)
    if (count($arrayTurno) > 3 and $lastTurno = '3') {
    array_push($arrayTurno, '1','2','4','4','4','4');
    }
    // se já existe 1 turno ou + verifica se é tarde 1 (se assim for acrescenta folgas + manhã 2)
    if (count($arrayTurno) > 3 and $lastM = '4') {
    array_push($arrayTurno, '1','2','5','5','5','5');
    }
    // se já existe 1 turno ou + verifica se é manhã 2 (se assim for acrescenta folgas + tarde 2)   
    if (count($arrayTurno) > 3 and $lastM = '5') {
    array_push($arrayTurno, '1','2','6','6','6','6');
    }

// acabo de encher o array até ficar com o comprimento do total de datas
$max = mysqli_num_rows($resultData);

        $newArrayTurno = array();

        while(count($newArrayTurno) <= $max){
            $newArrayTurno = array_merge($newArrayTurno, $arrayTurno);
        }

        $arrayTurno = array_slice($newArrayTurno, 0, $max);

at the end just insert in the table.

Thanks, regards, Rui

  • can put the part of the code to insert into the table?

Browser other questions tagged

You are not signed in. Login or sign up in order to post.