Jump to content


rafaelcastro's Content

There have been 4 items by rafaelcastro (Search limited from 29/03/2023)


Ordernar por                Order  

#1006856 Cadastro De Horários

Posted by rafaelcastro on 14/01/2011, 00:36 in PHP

Obrigado novamente LeoB

O erro estava no finalzinho do código:
$busca1 = "SELECT * FROM $agendamento
WHERE data='$data' AND
(($hora_inicio <= hora_inicio AND $hora_final > hora_inicio) OR
($hora_inicio < hora_final AND $hora_final > hora_final) OR
($hora_inicio >= hora_inicio AND $hora_final <= hora_final) OR
($hora_inicio <= hora_inicio AND $hora_final => hora_final))";

O PHP não estava entendendo => O certo é >=

Já está funcionando. Testei e está ok.

Permita-me encerrar o post recapitulando todo o problema e como foi resolvido (com a sua ajuda) para que futuras pesquisas cheguem até aqui e sejam prontamente resolvidas.



Estou fazendo um sistema de agendamento de jogos para um campo de paintball

Gravei no banco

Data do Jogo: 13/01/2011 (2011-01-13)
Hora de Inicio: 08:00 (08:00:00)
Hora do Final: 10:00 (10:00:00)


Se logo em seguida eu fosse lançar outro agendamento de horário, meu sistema precisa verificar se já não há um horário cadastrado...

Lançamento 2

Data do Jogo: 13/01/2011 (2011-01-13)
Hora de Inicio: 09:00 (09:00:00)
Hora do Final: 11:00 (11:00:00)

O sistema precisa ver se já algum horário agendado para esta data nesse intervalo de horas..



A solução foi:


// pego a data e inverto para gravar no MySQL
$data = $_POST['data'];
$inverte1 = explode("/",$data);
$inverte2 = array_reverse($inverte1);
$data = implode("-",$inverte2);

// Transformo a hora em padrão 00:00:00 (H:i:s)
$hora_inicio = date("H:i:s", strtotime($_POST['hora_inicio']));
// Transformo a hora em padrão 00:00:00 (H:i:s)
$hora_final = date("H:i:s", strtotime($_POST['hora_final']));

// Aqui acontece a busca no banco para ver se já existe algum registro cadastrado
$busca1 = "";
$busca1 = "SELECT * FROM $agendamento
WHERE data='$data' AND
(('$hora_inicio' <= hora_inicio AND '$hora_final' > hora_inicio) OR
('$hora_inicio' < hora_final AND '$hora_final' > hora_final) OR
('$hora_inicio' >= hora_inicio AND '$hora_final' <= hora_final) OR
('$hora_inicio' <= hora_inicio AND '$hora_final' >= hora_final))";

include "../bibliotecas/abre_conexao.php";
$query_busca1 = mysql_query($busca1, $db) or die(mysql_error());
$conta_busca1 = mysql_num_rows($query_busca1);
include "../bibliotecas/fecha_conexao.php";

if ($conta_busca1==0)
{
// Grava no banco
}
else
{
// Mostra mensagem de que já há horário agendado
}



Pronto

LeoB obrigado pela força. Abraço...



#1006854 Cadastro De Horários

Posted by rafaelcastro on 13/01/2011, 23:16 in PHP

Faltaram as aspas no horário e os segundos. E o campo no MySQL precisa ser do tipo TIME.



Olá LeoB, obrigado pela ajuda...

Deixei assim:

SELECT * FROM agendamento WHERE data='2011-01-13' AND (('09:00:00' <= hora_inicio AND '11:00:00' > hora_inicio) OR ('09:00:00' < hora_final AND '11:00:00' > hora_final) OR ('09:00:00' >= hora_inicio AND '11:00:00' <= hora_final) OR ('09:00:00' <= hora_inicio AND '11:00:00' => hora_final))


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\arquivos de programas\apache group\Apache\htdocs\anderson\admin\agendamentouniconewbd.php on line 35


Aff. Só por Deus mesmo... O que pode ser? Abraço



#1006850 Cadastro De Horários

Posted by rafaelcastro on 13/01/2011, 17:04 in PHP

Olá, obrigado pela resposta. É isso mesmo que eu procurava e não encontrava

Entretanto, deixe-me fazer mais uma pergunta.

o PHP ficou assim:

$data = $_POST['data'];
$inverte1 = explode("/",$data);
$inverte2 = array_reverse($inverte1);
$data = implode("-",$inverte2);
$hora_inicio = $_POST['hora_inicio'];
$hora_final = $_POST['hora_final'];


$busca1 = "";
$busca1 = "SELECT * FROM $agendamento
WHERE data='$data' AND
(($hora_inicio <= hora_inicio AND $hora_final > hora_inicio) OR
($hora_inicio < hora_final AND $hora_final > hora_final) OR
($hora_inicio >= hora_inicio AND $hora_final <= hora_final) OR
($hora_inicio <= hora_inicio AND $hora_final => hora_final))";

Ao executar o código no browser ficou assim:

SELECT * FROM agendamento WHERE data='2011-01-13' AND ((09:00 <= hora_inicio AND 11:00 > hora_inicio) OR (09:00 < hora_final AND 11:00 > hora_final) OR (09:00 >= hora_inicio AND 11:00 <= hora_final) OR (09:00 <= hora_inicio AND 11:00 => hora_final))


Mas dá o erro:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\arquivos de programas\apache group\Apache\htdocs\anderson\admin\agendamentouniconewbd.php on line 35


A linha 35 é onde dou o mysql_query na consulta

O que estou fazendo de errado?

Abraço



#1006847 Cadastro De Horários

Posted by rafaelcastro on 13/01/2011, 16:34 in PHP

Boa tarde.

Me deparei com um problema e estou a algumas horas pensando em soluções.

Tenho um página em PHP onde o usuário entre com a data, hora inicial e hora final.
Cadastrar a primeira vez não é problema. O problema está no segundo cadastro.

Vou exemplificar:

Data: 13/01/2011
Hora Inicio: 08:00
Hora Final: 10:00

Até aqui ok, gravo no banco normalzinho.
Já na segunda gravação preciso verificar se o horário já está agendado.

Data: 13/01/2011
Hora Inicio: 09:00
Hora Final: 11:00

O segundo agendamento não pode ser gravado por que já existe um entre 08:00 e 10:00

E se eu tentar gravar
Data: 13/01/2011
Hora Inicio: 07:00
Hora Final: 09:00
Também dará uma mensagem que não pode gravar pois já há um horário agendado.

Como faço para resolver isso?
Abraço




IPB Skin By Virteq