Allora, guarda tu mi hai dato un suggerimento lato codice,io ho fatto i passaggi che tu mi hai indicato sia lato codice,che lato mysql(store procedure).,purtroppo non funzionanti alla perfezione.
Ti spiego,anzi ti mostro il codice sia lato php,che mysql e valutiamo insieme gli errori che sto facendo.
Inizio con il codice della store procedure,che mi dovrebbe restituire in una tabella tutti i giorni con accanto il nome del record,così da fare una (lato codice) una query con il filtro del record e di stampare a video i giorni, facendo una condizione se esiste allora metti verde,altrimenti metti rosso.
codice:
DELIMITER $$
DROP PROCEDURE IF EXISTS `bedebreakfast`.`ricerca` $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `ricerca`(IN inizio date,IN fine date)
BEGIN
Declare d INT DEFAULT -1;
Declare d1 INT DEFAULT 0;
Declare done INT default 0;
Declare cam varchar(50);
DECLARE giorni INT default 0;
Declare conteggio INT default 0;
Declare i INT default 0;
DECLARE cursore CURSOR FOR
SELECT camere.nome,Day(periodoDal)as Datainizio,DAY(periodoAl)as Datafine FROM prenotazioni left join camere on prenotazioni.idcamera=camere.idCamere where DATE_FORMAT(periodoDal,'%Y-%m-%d')>=inizio AND DATE_FORMAT(periodoAl,'%Y-%m-%d')<=fine;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN cursore;
myloop:LOOP
FETCH cursore INTO cam,d,d1;
if d>d1 then leave myloop;END IF;
INSERT INTO prova(cam,gg) VALUES (cam,d);
SET d=d+1;
end Loop myloop;
END $$
DELIMITER ;
L'altro codice php è un pò diverso da come l'hai descritto tu,nel senso che un record avrà più giorni,quindi sarà un array con annidato una altro array(in parole povere sarà un situazione di uno a molti.)
cmq il codice che io ho creato è questo
naturalmente anche questo lo possiamo commentare)
Codice PHP:
<?php
include('DataAccess.class.php');
?>
<html>
<head>
<title>Calendario</title>
<body>
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="GET">
<input type="text" size="20" name="mese">
<input type="submit" name="Ricerca">
</form>
</body>
</head>
</html>
<?php
function getIntMese($mese)
{
switch ($mese) {
case 'Gennaio':
$intmese='01';
break;
case 'Febbraio':
$intmese='02';
break;
case 'Marzo':
$intmese='03';
break;
case 'Aprile':
$intmese='04';
break;
case 'Maggio':
$intmese='05';
break;
case 'Giugno':
$intmese='06';
break;
case 'Luglio':
$intmese='07';
break;
case 'Agosto':
$intmese='08';
break;
case 'Settembre':
$intmese='09';
break;
case 'Ottobre':
$intmese='10';
break;
case 'Novembre':
$intmese='11';
break;
case 'Dicembre':
$intmese='12';
break;
default:
$intmese='-1';
break;
}
return $intmese;
}
function getGiorniMese($mese){
switch ($mese) {
case 'Gennaio':
$giorni=31;
break;
case 'Febbraio':
$giorni=28;
break;
case 'Marzo':
$giorni=31;
break;
case 'Aprile':
$giorni=30;
break;
case 'Maggio':
$giorni=31;
break;
case 'Giugno':
$giorni=30;
break;
case 'Luglio':
$giorni=31;
break;
case 'Agosto':
$giorni=31;
break;
case 'Settembre':
$giorni=30;
break;
case 'Ottobre':
$giorni=31;
break;
case 'Novembre':
$giorni=30;
break;
case 'Dicembre':
$giorni=31;
break;
default:
$giorni=-1;
break;
}
return $giorni;
}
function Giorni($day,$day1){
while($day<$day1){
$day=$day+1;
$gg[$i]=$day;
$i++;
}
return $gg;
}
$Mese="Aprile";//$_GET['Aprile'];
$gg=getGiorniMese($Mese);
$intmese=getIntMese($Mese);
$periodoDal="2008"."-".$intmese."-"."01";
$periodoAl="2008"."-".$intmese."-".$gg;
?>
<table border="1" align="center">
<tr><tr><?php echo $Mese; ?></tr></tr>
<tr></tr>
<tr>
<tr>
<td></td>
<?php
$giorni=array();
$giorno=31;
$conn=DataBaseManager::conn();
$query="SELECT Day(periodoDal)as Datainizio,Day(periodoAl)as Datafine FROM prenotazioni left join camere on prenotazioni.idcamera=camere.idCamere where DATE_FORMAT(periodoDal,'%Y-%m-%d')>='2008-04-01' AND DATE_FORMAT(periodoDal,'%Y-%m-%d')<='2008-04-30' AND camere.nome='FataMorgana';";
$risultato=@mysql_query($query);
while($row=@mysql_fetch_assoc($risultato))
{
$day1=$row['Datainizio']-1;
$day2=$row['Datafine'];
$giorni=Giorni($day1,$day2);
$z=1;
$y=0;
while($z<31 && $y<$giorni)
{
if($giorni[$y]==$z)
{
echo "<p style=\"Color:red\">".$z."</p>";
}
else
{
echo "<p style=\"Color:green\">".$z."</p>";
}
$puntatore=$z++;
$y++;
}
}
?>
Spero di essere stato anche io chiaro....
Grazie