msmarins 2 Denunciar post Postado Outubro 6, 2015 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
LandersonAlmeida 31 Denunciar post Postado Outubro 6, 2015 Não seria mais lógico você verificar antes do insert se já existe ?? Compartilhar este post Link para o post Compartilhar em outros sites
msmarins 2 Denunciar post Postado Outubro 6, 2015 Tipo um botão para o cidadão clicar e ver a disponibilidade antes de enviar o form? Compartilhar este post Link para o post Compartilhar em outros sites
BlackMix 15 Denunciar post Postado Outubro 6, 2015 Isso é feito em ajax.. verificar se existe ou não e dar um retorno.. facil.. Compartilhar este post Link para o post Compartilhar em outros sites
msmarins 2 Denunciar post Postado Outubro 6, 2015 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
BlackMix 15 Denunciar post Postado Outubro 6, 2015 então voce faz um insert como rescunho.. ele faz a consulta se tiver ok já faz o insert e se não submeter deleta.. Compartilhar este post Link para o post Compartilhar em outros sites
Handoncloud 13 Denunciar post Postado Outubro 6, 2015 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
BlackMix 15 Denunciar post Postado Outubro 6, 2015 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
msmarins 2 Denunciar post Postado Outubro 6, 2015 Então antes de dar o insert eu devo fazer nova consulta e ver se o horário ainda esta disponível? Compartilhar este post Link para o post Compartilhar em outros sites
LandersonAlmeida 31 Denunciar post Postado Outubro 6, 2015 Exatamente, faça como os amigo acima falaram... Compartilhar este post Link para o post Compartilhar em outros sites
msmarins 2 Denunciar post Postado Outubro 6, 2015 Beleza gente! Vou fazer nova consulta antes do insert. Obrigago! Compartilhar este post Link para o post Compartilhar em outros sites