Newsgroup: it.comp.www.php
Titolo: mi controllate sto script sulle date?

if (isset ($_POST["day_gap"]) && isset ($_SESSION["giorno"])) {
		$_SESSION["giorno"] = $_SESSION["giorno"] + $_POST["day_gap"];
		unset($_SESSION['zona']);
		}
if($_SESSION["giorno"]<1){
		 if(($_SESSION["mese"]==11)||($_SESSION["mese"]==04)||($_SESSION["mese"]==06)||($_SESSION["mese"]==09)){
		              $_SESSION["giorno"]=30;
			      $_POST["month_gap"]--;
		              }
                 else if($_SESSION["mese"]==2){
		        if($_SESSION["year"]%4==0){
                              if($_SESSION["year"]%100==0){
		                           if($_SESSION["year"]%400==0){
			                               $_SESSION["giorno"]=29;
						       $_POST["month_gap"]--;
				                       }
			                   }
		             }
		             else{
			           $_SESSION["giorno"]=28;
			           $_POST["month_gap"]--;
			           }
			}
 
		 else $_SESSION["giorno"]=31;
		 $_POST["month_gap"]--;
		 }
 
else
if(($_SESSION["giorno"]>30)&&(($_SESSION["mese"]==11)||($_SESSION["mese"]==04)||($_SESSION["mese"]==06)||($_SESSION["mese"]==09))){
                 $_POST["month_gap"]++;
		 $_SESSION["giorno"]=1;
		 }
else if($_SESSION["year"]%4==0){
                if($_SESSION["year"]%100==0){
		             if($_SESSION["year"]%400==0){
			                 if($_SESSION["giorno"]>29){
					             $_POST["month_gap"]++;
						     $_SESSION["giorno"]=1;
						     }
				         }
			     }
		}
		else if($_SESSION["giorno"]>28){
		               $_POST["month_gap"]++;
			       $_SESSION["giorno"]=1;
			       }
 
else if($_SESSION["giorno"]>31){
                $_POST["month_gap"]++;
		$_SESSION["giorno"]=1;
		}
Questo script e collegato a due tasti tipo prev e next. se è l'ultimo del
mese il giorno dovrebbe tornare a 1 e passare al mese successivo, e il
contrario.
ma non va !!!
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

lorenzo wrote:
$_POST["month_gap"]--;
^^^^^^^^^^^^^^^^^^^^^^
Sarò smentito, ma non mi sembra possibile fare una cosa del genere.
Lo script non l'ho controllato, ma per fare i calcoli sulle date perché 
non usi date() e mktime()? Perché per vedere se un anno è bisestile non 
usi date("L", $timestamp);
Cosa vuol dire:
"Questo script e collegato a due tasti tipo prev e next"?
 >ma non va !!!
Mi sembra quasi ovvio.
Spiega in 2/3 righe che vuoi fare.


lo script è collegato ad un calendario, prev e next sono due input type che
danno il giorno prima e quello dopo. voglio che qualdo il giorno arriva
all'ultimo del mese il mese si aggiorna e non che mi viene il 31 di aprile
anzichè il 1 maggio.


 anzichè il 1 maggio.
Fai i calcoli con le funzioni che ti ho detto:
Dal manuale:
8<--8<--8<--8<--8<--8<--
È possibile usare date() e mktime() assieme per cercare delle date nel 
futuro o nel passato.
Esempio 3. Esempio di date() e mktime()
$tomorrow  = mktime (0,0,0,date("m")  ,date("d")+1,date("Y"));
$lastmonth = mktime (0,0,0,date("m")-1,date("d"),  date("Y"));
$nextyear  = mktime (0,0,0,date("m"),  date("d"),  date("Y")+1);
8<--8<--8<--8<--8<--8<--
http://it.php.net/manual/it/function.date.php
http://it.php.net/manual/it/function.mktime.php
e correlate.


cosě facendo trovo una data specifica ma ogni volta che premo l'input type
next mi da solo giorno successivo alla data odierna,e cosě il mese e
l'anno...
 
sono riuscito a correggere qualcosa del mio script guarda un po:
if (isset ($_POST["day_gap"]) && isset ($_SESSION["giorno"])) {
		$_SESSION["giorno"] = $_SESSION["giorno"] + $_POST["day_gap"];
		unset($_SESSION['zona']);
 
if($_SESSION["giorno"]<1){
		 if(($_SESSION["mese"]==12)||($_SESSION["mese"]==05)||($_SESSION["mese"]==07)||($_SESSION["mese"]==10)){
		              $_SESSION["giorno"]=30;
			      $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		              }
                 else if($_SESSION["mese"]==3){
		        if($_SESSION["year"]%4==0){
                              if($_SESSION["year"]%100==0){
		                           if($_SESSION["year"]%400==0){
			                               $_SESSION["giorno"]=29;
						       $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
				                       }
			                   }
		             }
		             else{
			           $_SESSION["giorno"]=28;
			           $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
			           }
			}
 
		 else $_SESSION["giorno"]=31;
		 $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		 }
 
else if($_SESSION["giorno"]>30){
        if(($_SESSION["mese"]==11)||($_SESSION["mese"]==04)||($_SESSION["mese"]==06)||($_SESSION["mese"]==09)){
                 $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		 $_SESSION["giorno"]=1;
		 }
	}
else if($_SESSION["year"]%4==0){
                if($_SESSION["year"]%100==0){
		             if($_SESSION["year"]%400==0){
			                 if($_SESSION["giorno"]>29){
					             $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
						     $_SESSION["giorno"]=1;
						     }
				         }
			     }
		}
		else if($_SESSION["giorno"]>28){
		               $_SESSION["mese"] = $_SESSION["mese"] + $_POST["month_gap"];
			       $_SESSION["giorno"]=1;
			       }
 
 else if($_SESSION["giorno"]>31){
                $_SESSION["mese"] = $_SESSION["mese"] + $_POST["month_gap"];
		$_SESSION["giorno"]=1;
		}
 
 
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------CONTROLLO NEXT PREV PER IL
MESE---------------------------------------------------------------------------------------
 else if (isset ($_POST["month_gap"]) && isset ($_SESSION["mese"])) {
		$_SESSION["mese"] = $_SESSION["mese"] + $_POST["month_gap"];
		unset($_SESSION['zona']);


 sono riuscito a correggere qualcosa del mio script guarda un po:
no aspé. Fammi vedere che vuoi fare prima. Posta l'html (non tutto!)

> parametrizza! è fatto apposta php! usi pure le session!
lo so ma devo per forza usare questo script perchè se no non mi si
visualizza il calendario


Ciao,
lorenzo wrote:
la cosa normale, quella che ti ha già proposto setec è:
1) avere una variabile current_day (session o quello che ti pare)
2) mettere sui bottoni un parametro che dice +1 e -1
3) nella pagina destinazione trasformare current_day (con le funzioni 
time) con il parametro passato....
per capirci se la pagina action della form è mostra.php
metterei (con Javascript)
su next la destinazione per esempio:
  mostra.php?cd=$current_day&amp;inc=+1
in mostra.php verifichi se esiste current_day (cd), se no metti per 
esempio oggi, altrimenti $current_day = $current_day + $inc (ovviamente 
utilizzando le funzioni time php come ti hanno già suggerito non hai 
nessun problema di anno bisestile etc...)
Ciao Gianfranzo
-- 
ICQ#: 21258924 Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra
"dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac

 Ciao Gianfranzo
guarda sono riuscito a sistemare tutto l'unica cosa che a febbraio 2005
arriva fino al 31 prima di cambiare mese mentre a febbraio 2004 tutto ok
if (isset ($_POST["day_gap"]) && isset ($_SESSION["giorno"])) {
		$_SESSION["giorno"] = $_SESSION["giorno"] + $_POST["day_gap"];
		unset($_SESSION['zona']);
 
if($_SESSION["giorno"]<1){
		 if(($_SESSION["mese"]==12)||($_SESSION["mese"]==05)||($_SESSION["mese"]==07)||($_SESSION["mese"]==10)){
		              $_SESSION["giorno"]=30;
			      $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		              }
                 else if($_SESSION["mese"]==3){
		        if($_SESSION["year"]%4==0){
                              if($_SESSION["year"]%100==0){
		                           if($_SESSION["year"]%400==0){
			                               $_SESSION["giorno"]=29;
						       $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
				                       }
			                   }
		             }
		             else{
			           $_SESSION["giorno"]=28;
			           $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
			           }
			}
 
		 else{
		 $_SESSION["giorno"]=31;
		 $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		 }
}
 
else
if(($_SESSION["mese"]==11)||($_SESSION["mese"]==04)||($_SESSION["mese"]==06)||($_SESSION["mese"]==09)){
        if($_SESSION["giorno"]>30){
                 $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		 $_SESSION["giorno"]=1;
		 }
	}
 
else if($_SESSION["mese"]==2){
        if($_SESSION["year"]%4==0){
                if($_SESSION["year"]%100==0){
		             if($_SESSION["year"]%400 == 0 ) {
			                 if($_SESSION["giorno"]>29){
					             $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
						     $_SESSION["giorno"]=1;
						     }
				         }
			     }
		}
		else if($_SESSION["giorno"]>28){
		               $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
			       $_SESSION["giorno"]=1;
			       }
	}
else if($_SESSION["giorno"]>31){
                $_SESSION["mese"] = $_SESSION["mese"] + $_POST["dmonth_gap"];
		$_SESSION["giorno"]=1;
		}
 
 
}
//-----------------------------------------------------------------------------------------------------------------------------------------------------------
//---------------------------------------CONTROLLO NEXT PREV PER IL
MESE---------------------------------------------------------------------------------------
 else if (isset ($_POST["month_gap"]) && isset ($_SESSION["mese"])) {
		$_SESSION["mese"] = $_SESSION["mese"] + $_POST["month_gap"];
		unset($_SESSION['zona']);
		}
QUESTI SONO I TASTI
<table border="0" cellpadding="10" cellspacing="7">
<tr><td width="100" align="center">
<form action="form2.php" method="post">
	<input type="hidden" name="month_gap" value="-1" />
	<input type="submit" name="btnPrev" value="<---" />
</form></td>
<td width="100" align="center">
<form action="form2.php" method="post">
	<input type="hidden" name="day_gap" value="-1" />
	<input type="hidden" name="dmonth_gap" value="-1" />
	<input type="submit" name="btnPreva" value="<-" />
</form></td>
<td width="100" align="center">
<form action="form2.php" method="post">
	<input type="hidden" name="today" value="yes" />
	<input type="submit" name="btnToday" value="OGGI" />
</form></td>
<td width="100" align="center">
<form action="form2.php" method="post">
	<input type="hidden" name="day_gap" value="+1" />
	<input type="hidden" name="dmonth_gap" value="+1" />
	<input type="submit" name="btnNextd" value="->" />
</form></td>
<td width="100" align="center">
<form action="form2.php" method="post">
	<input type="hidden" name="month_gap" value="+1" />
	<input type="submit" name="btnNext" value="--->" />
</form></td></tr></table>


 arriva fino al 31 prima di cambiare mese mentre a febbraio 2004 tutto ok
non ho testa per mettermi a leggere tutto quel codice, la soluzione, 
pulita ed efficiente, è pochissime righe di codice php...
più o meno così (scrivo un po' di getto, ci saranno sicuramente errori):
if (isset($_GET['cd'])&&(isset($_GET['inc']))
   {
$current_day= date('Y-m-d',$_GET['cd']+(86400*$_GET['inc']))
//qui hai la somma di un giorno o la differenza di un gionro a seconda 
di inc
     }
else{
     $current_day=date();
     }
per i bottoni come ho detto prima.
Vedi tu.
