Quantcast
Channel: Últimos conteúdos
Viewing all articles
Browse latest Browse all 14190

Dúvida - Select em duas tabelas com id diferente

$
0
0

Olá,

 

Sou novo aqui no fórum. Estou com uma dúvida e fiz inúmeros testes e ainda não funcionou corretamente.

 

Estou trabalhando em um sistema de controle de eventos com PHP e MySQL. Tenho no banco de dados duas tabelas, a tabela evento e a tabela ambiente.

 

Na tabela evento fica cadastrado a data do evento, o horário de início e fim do evento e o id do ambiente onde será o evento.

 

No sistema tenho um formulário para cadastro de evento. Neste formulário, o usuário deverá informar a data do evento, o horário de início e fim e selecionar o ambiente.

 

Antes de mostrar o combobox com os ambientes disponíveis, faço uma busca no MySQL com a data informada, o horário de início e fim do evento. Caso algum ambiente já esteja ocupado na mesma data e horário, este ambiente não deve ser exibido no combobox.

 

Quando tenho somente um ambiente ocupado funciona, o problema está quando tenho mais de um. Já tentei usar do while, for, session para gravar o id do ambiente ocupado, mas nada funcionou.

 

Segue abaixo o código:

 

<?php
 
$data = "31/08/2015";
$horario_inicio = "09:00";
$horario_fim = "11:00";
 
 
$sql = mysql_query("SELECT * FROM evento WHERE data='$data' AND (('$horario_inicio' <= horario_inicio AND '$horario_fim' > horario_inicio) OR ('$horario_inicio' < horario_fim AND '$horario_fim' > horario_fim) OR ('$horario_inicio' >= horario_inicio AND '$horario_fim' <= horario_fim) OR ('$horario_inicio' <= horario_inicio AND '$horario_fim' >= horario_fim))");
$cont = mysql_num_rows($sql);
 
if($cont > 0){
 
    $contador = 0;
    while($arr = mysql_fetch_array($sql)){
        
        $contador = $contador + 1;
        
        //gravar idambiente em uma session
        $_SESSION['id'.$contador] = $arr['idambiente'];  
        
        for($i = 1; $i <= $contador; $i++){
            $select = mysql_query("SELECT * FROM ambiente WHERE idambiente <> '".$_SESSION['id'.$i]."' AND idambiente <> '".$_SESSION['id'.$contador]."'");
            $arr_select = mysql_fetch_array($select);
            
            echo $arr_select['ambiente'];
            
        }
    
    }
}
?>
 
 
Por exemplo, tenho dois eventos no dia 31/08/2015.
O evento 1 começa às 08:30 e acaba às 10:30 - ocorre no ambiente 1. O evento 2 começa às 09:00 e acaba às 11:00 - ocorre no ambiente 2. O correto seria o código retornar todos os ambientes cadastrado exceto o ambiente 1 e 2. O problema é que o código acima retorna o ambiente 2 e o ambiente 1 nesta ordem.
 
 
Alguma dica ? O que posso fazer para que o código funcione corretamente ?

Viewing all articles
Browse latest Browse all 14190

Trending Articles