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...
- Fórum WMO
- → Viewing Profile: Posts: rafaelcastro
Community Stats
- Group Usuários
- Active Posts 294
- Profile Views 2743
- Member Title 12 Horas
- Age Age Unknown
- Birthday Birthday Unknown
-
Sexo
Male
-
Localidade
Dourados/MS
3
Neutral
User Tools
Latest Visitors
Posts I've Made
In Topic: Cadastro De Horários
14/01/2011, 00:36
In Topic: Cadastro De Horários
13/01/2011, 23:16
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
In Topic: Cadastro De Horários
13/01/2011, 17:04
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
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
- Fórum WMO
- → Viewing Profile: Posts: rafaelcastro
- Privacy Policy
- Regras ·