Ir para conteúdo

POWERED BY:

Arquivado

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

m.hasselein

[Resolvido] array_diff

Recommended Posts

Dae galera to com um problema com meus array!

Tenho dois arrays um que pega os horarios ocupados e outro os horarios disponiveis, tenho que retornar a diferença destes arrays, estou usando o array_diff();

Meu código esta assim:

ai vai o banco

create table dias(
id integer PRIMARY KEY AUTO_INCREMENT,
descricao varchar(7),
abreviacao varchar(3)
)engine INNODB;

create table turmas(
id integer PRIMARY KEY AUTO_INCREMENT,
hora_inicial time,
hora_final time
)engine inodb;

create table dias(
id integer PRIMARY KEY AUTO_INCREMENT,
descricao varchar(7),
abreviacao varchar(3)
)engine INNODB;

create table dias_turmas(
id_turma integer,
id_dia integer,
FOREIGN KEY (id_turma) references turmas(id),
FOREIGN KEY (id_dia) references dias(id)
)engine innodb;

insert into dias values(default,'Segunda','Seg');
insert into dias values(default,'Terça','Ter');
insert into dias values(default,'Quarta','Qua');
insert into dias values(default,'Quinta','Qui');
insert into dias values(default,'Sexta','Sex');
insert into dias values(default,'Sabado','Sab');
insert into dias values(default,'Domingo','Dom');

insert into turmas values(default,'00:30:00','00:01:30');

insert into dias_turmas values(1,2);

Retorna todas horas possiveis($h_possiveis)

for ($i = 0; $i <= 24; $i++) {
   for ($x = 0; $x <= 30; $x+=30) {
       if (($i + $x) < (54)) {
           if ($x != 30) {
               $x = $x . "0:00";
           }else if ($x == 30) {
               $x = $x . ":00";
           }
           if ($i < 10) {
            $h_possiveis[]="0" . $i . ":" . $x ."\n";
           } 
           else {
            $h_possiveis[]=$i . ":" . $x . "\n";
           }
       }
   }
}

Retorno do banco os horarios iniciais utilizados($h_iniciais_utilizadas)

if (isset($_POST["diasSelecionados"])) {
   $h_iniciais_utilizadas = array();
   $h_finais_utilizadas = array();
   $h_possiveis = array();

   $sql = "select DISTINCT t.* from dias_turmas dt, turmas t where id_dia in (" . $diasSelecionados . ") AND t.id = dt.id_turma";
   $res = mysql_query($sql);

   //retorno duas istas uma de horarios iniciais e outro de horarios finais utilizados
   while ($row = mysql_fetch_array($res)) {
       $h_iniciais_utilizadas[] = $row["hora_inicial"];
       $h_finais_utilizadas[] = $row["hora_final"];
   }

}

Aqui que tento pegar oque tem de diferente mas nao ta funcionando queria as horas possiveis menos as ocupadas!

$result = array_diff($h_possiveis,$h_iniciais_utilizadas);
$print_r = print_r($result);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Funcionou tirei as quebras de linha

for ($i = 0; $i <= 24; $i++) {
   for ($x = 0; $x <= 30; $x+=30) {
       if (($i + $x) < (54)) {
           if ($x != 30) {
               $x = $x . "0:00";
           }else if ($x == 30) {
               $x = $x . ":00";
           }
           if ($i < 10) {
  //so tirar as quebras de linha que funcionou
            $h_possiveis[]="0" . $i . ":" . $x ."\n";
           } 
           else {
            $h_possiveis[]=$i . ":" . $x . "\n";
           }
       }
   }
}



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.