Ir para conteúdo

POWERED BY:

Arquivado

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

msmarins

Sistema de agendamento

Recommended Posts

Olá Bom dia!

Estou desenvolvendo um sistema de agendamento que precisa restringir os horários que já foram marcados.

Para isso, eu faço a consulta ao banco e depois disso mostro os resultados, já deixando inacessível os horários.


        $contagem = "SELECT * FROM matricula_2016 WHERE horaEnt = '8h às 9h' AND dataEnt = '$data' AND orientadora = '$ori'  ";
        $contando = mysql_query($contagem);
        $total = mysql_num_rows($contando);
        $hor10 = "class='h_aceso'";
        $res1 = "";
        if ($total >= $linhas) {
            $hor10 = "class='h_apagado' disabled='disabled'";
            $res1 = " - indisponível!";
        }

Eu faço uma consulta para cada option do meu select:

        <select id="horaEnt" name="horario_cand"  tabindex="3" >
            <option value=""></option>
            <optgroup label="Manhã">
                <option <?php echo $hor10; ?> value="8h às 9h">8h às 9h<?php echo $res1; ?> </option>
                <option <?php echo $hor11; ?> value="9h às 10h">9h às 10h<?php echo $res2; ?> </option>
                <option <?php echo $hor12; ?> value="10h às 11h">10h às 11h<?php echo $res3; ?></option>
                <option <?php echo $hor13; ?> value="11h às 12h">11h às 12h<?php echo $res4; ?></option>
            </optgroup>
            <optgroup label="Tarde">
                <option <?php echo $hor14; ?> value="14h às 15h">14h às 15h<?php echo $res5; ?></option>
                <option <?php echo $hor15; ?> value="15h às 16h">15h às 16h<?php echo $res6; ?></option>
                <option <?php echo $hor16; ?> value="16h às 17h">16h às 17h<?php echo $res7; ?></option>
            </optgroup>
        </select>

O meu problema é como evitar que haja duas consultas "quase" ao mesmo tempo a ponto de dois usuários marcarem o mesmo horário.

Como a consulta é feita antes, dependendo da proximidade do horário de acesso os dois podem receber o mesmo resultado.

 

Abraço a todos!

 

 

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é feito em ajax.. verificar se existe ou não e dar um retorno.. facil..

 

sim, é verdade. Eu tenho a função ajax que retorna o valor. No entanto eu quero evitar que dois usuários façam a busca ao mesmo tempo (ou quase) e acabem pegando o mesmo resultado. Imagina que o cara demore a enviar o form depois de ver o resultado e neste meio tempo alguém entre e faça a consulta.... vai pegar o mesmo resultado do anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

sim, é verdade. Eu tenho a função ajax que retorna o valor. No entanto eu quero evitar que dois usuários façam a busca ao mesmo tempo (ou quase) e acabem pegando o mesmo resultado. Imagina que o cara demore a enviar o form depois de ver o resultado e neste meio tempo alguém entre e faça a consulta.... vai pegar o mesmo resultado do anterior.

 

Dá para usar websockets, mas vou dar passos de fazer com o Ajax e um banco de dados.

 

Ao submeter o formulário

 

Ao o usuário submeter o formulário, você deve fazer uma requisição para um arquivo PHP no Ajax, qual vai verificar se há algo ou não no banco de dados, esse algo poderia estar em uma tabela chamada "results", com as colunas:

 

"id","users_id","val"

 

Daí você tenta verificar se há um valor para o usuário em uma das colunas (para não selecionar todas colunas e causar delay no servidor, é só selecionar com aquele argumento "LIKE" no PDO, procurando o ID do usuário com "[id]").

 

Nessa coluna "users_id" vai conter IDs de usuários separadas por vírgulas (commas), e no PHP você pode usar a função explode(string,word) para transformar em array (explode($resultado,',')), okay. Depois disso você irá precisar fazer um loop (for) nessa array para saber se algum dos IDs são iguais ao ID do usuário que submeteu o formulário, caso algum é igual, você roda uma função pelo loop, qual vai dar print/echo no resultado, caso não, então você vai ter que dar um novo resultado para o usuário (mas como podem sair mais resultados de rows, então você vai ter que fazer um while para cada uma row)!

 

Estou editando para aprimorar isso, mas não tenho certeza se é isso que você quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Dá para usar websockets, mas vou dar passos de fazer com o Ajax e um banco de dados.

 

Ao submeter o formulário

 

Ao o usuário submeter o formulário, você deve fazer uma requisição para um arquivo PHP no Ajax, qual vai verificar se há algo ou não no banco de dados, esse algo poderia estar em uma tabela chamada "results", com as colunas:

 

"id","users_id","val"

 

Daí você tenta verificar se há um valor para o usuário em uma das colunas (para não selecionar todas colunas e causar delay no servidor, é só selecionar com aquele argumento "LIKE" no PDO, procurando o ID do usuário com "[id]").

 

Nessa coluna "users_id" vai conter IDs de usuários separadas por vírgulas (commas), e no PHP você pode usar a função explode(string,word) para transformar em array (explode($resultado,',')), okay. Depois disso você irá precisar fazer um loop (for) nessa array para saber se algum dos IDs são iguais ao ID do usuário que submeteu o formulário, caso algum é igual, você roda uma função pelo loop, qual vai dar print/echo no resultado, caso não, então você vai ter que dar um novo resultado para o usuário (mas como podem sair mais resultados de rows, então você vai ter que fazer um while para cada uma row)!

 

Estou editando para aprimorar isso, mas não tenho certeza se é isso que você quer.

Realmente isso aí dar certo.. no Submite do post verificar se existe no banco e retorna true ou false..

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.