← Desenvolvimento

[mysql] Seleccionar grupo de datas seguidas

Lida 1941 vezes

Offline

sapovideo 
Membro
Mensagens 295 Gostos 0
Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Em php é de fácil solução ... mas em SQL ( talvez usando um storeprocedure ) se chegue lá.

A ideia é tendo um conjunto de datas , agrupar essas datas que estejam seguidas e/ou separadas por 1 dia.
Ou seja praticamente tenho as datas dos fins de semana, + datas dos feriados a ideia é agrupar essas datas em fins de semanas normais ou fins de semana prolongados:

2009-01-01
2009-01-02
2009-01-05
2009-01-06
2009-01-09
2009-01-10
2009-01-12

Grupo 1
Data Inicial -> 2009-01-01 , Data Final -> 2009-01-02

...

Grupo 2
Data Inicial -> 2009-01-09 , Data Final -> 2009-01-12
Offline

Pedro Magalhães 
Membro
Mensagens 397 Gostos 0
Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts

Ainda não entendi bem o que pretendes.

SELECT * FROM `calendario` WHERE `data` > '2009-01-01' AND `data` < '2009-05-15'

Queres este tipo de selecção?
Offline

sapovideo 
Membro
Mensagens 295 Gostos 0
Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Viva,

Não ... pelo script já fiz
http://nanoferias.com/calendario.php

Código: [Seleccione]
function getLista($ano){
$ligar=ligar();
$query="select data,dia from calendario where YEAR(data) = ".$ano." order by data ASC";
$sql=mysql_query($query,$ligar);

$lista = array();
$pack = array();
while($row=mysql_fetch_array($sql)){
$lista[] = new dia($row['data'],$row['dia']);
}
$data_i = new dia(0,"");
$data_f = new dia(0,"");
$end = false;
for($i=0;$i<sizeof($lista);$i++){
if($data_i->data==0){
$data_i = $lista[$i];
}else{
$dif = dias($lista[$i]->data,$lista[$i+1]->data);

if($dif == 1 || $dif == 2){
$data_f = $lista[$i+1];
}else{
$data_f = $lista[$i];

$end = true;
}
}
if($end){
$end = false;
$pack[] = array("di"=>$data_i,"df"=>$data_f,"dias"=>dias($data_i->data,$data_f->data));
$data_i = new dia(0,"");
}
}
mysql_close($ligar);
return $pack;
}

A tabela calendario tem todas as datas ( dias de fins de semana e feriados ) .
O que queria fazer era atraves de um select , construir uma tabela temporaria apenas com a dataInicial e dataFinal ( 1 dia de diferença é fim de semana, se for 2 dias de diferença é uma ponte ).
Offline

Pedro Magalhães 
Membro
Mensagens 397 Gostos 0
Troféus totais: 23
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts

Bom! Ainda bem ...

Força aí então :)
Offline

sapovideo 
Membro
Mensagens 295 Gostos 0
Troféus totais: 25
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1 100 Posts

Uma duvida básica dentro do mesmo assunto.

Em jquery, como é que faço para colocar todos os elementos que tem a class 'xpto' , com o fundo a branco por exemplo?

Tipo ta a lista de feriados... com o li com class 'xpto' entao $('.xpto').onclick(funtion(){ ... }); eu fiz isso nao sei quando só que agora nao me lembro do nome da funçao ... a ideia é ao clicar na lista ( li ) colocar a seleccionada a verde ... e as restantes colocar a branco.

Nao sei se me fiz entender :x