Newsgroup: it.comp.www.php
Titolo: Giorni dentro un for

$_POST['giorni'];  posso avere da 1 in su per cui mi cicla n volte
 for ( $i = 1; $i <= $_POST['giorni']; $i++)  {
$new_date_lav in formato  (aaaa-mm-gg) :   qua mi arriva la data per cui se 
1 mi scrive il valore che mi arriva per la prima volta
se oltre 1 ad esempio 2 oppure 3
$new_date_lav mi deve incrementare di n giorni quanto � il ciclo pr cui se � 
3 mi fa $new_date_lav  per il primo for $new_date_lav +1 per il secondo 
ciclo  e $new_date_lav  + 2 per il terzo e cosi via
     $riga="INSERT INTO lavorazioni( data, contolavoro_id ) ";
    $riga.="VALUES('".$new_date_lav."','".$_POST['contolavoro_id']."')  ";
    $result_riga1 = mysql_query($riga) or die("Errore: " . mysql_error());
  }
ho cercato provato e ricercato ma non ne vengo piu fuori
chi puo aiutarmi?


Ok ho trovato una piccola soluzione :
  for ( $i = 1; $i <= $_POST['giorni']; $i++)  {
   $data = $new_date_lav; // la data entra Y-m-d
      $dataex = explode('-',$today);
      $giorno= $dataex[2];
      $mese= $dataex[1];
      $anno= $dataex[0];
      $datanew = mktime (0, 0, 0,$anno,$mese,$giorno+i);
ora quel datanew come faccio a trasformarlo in Y-m-d ?

 ora quel datanew come faccio a trasformarlo in Y-m-d ?
Ti suggerisco di iniziare leggendo il manuale ufficiale:
http://www.php.net/date
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

 ha scritto nel 
messaggio news:6ecaetF...@mid.individual.net...

Trovata quasi soluzione:
  function fnc_date_calc($this_date,$num_days){
      $my_time = strtotime ($this_date);
      $timestamp = $my_time + ($num_days * 86400);
       $return_date = date("Y-m-d",$timestamp);
      return $return_date;
  }
  for ( $i = 1; $i <= $_POST['giorni']; $i++)  {
      $date_to_test = $new_date_lav;
      $days_to_add = $i;
   $future_date = fnc_date_calc($date_to_test,$days_to_add);
    $riga="INSERT INTO lavorazioni( data, contolavoro_id, test , test2) ";
    $riga.="VALUES('".$future_date."','".$_POST['contolavoro_id']."','".$tomorrow."','".$future_date."') 
";
    $result_riga1 = mysql_query($riga) or die("Errore: " . mysql_error());
  }
solo che ora ho questo problema
se ipotizziamo che $new_date_lav sia oggi  e come valore di $_POST['giorni'] 
= 3 nella insert mi esclude oggi e inizia da domani per cui 19 20 21
come faccio nel ciclo for a dire che la data è 18 valore attuale poi 19 20

 Ti suggerisco di iniziare leggendo il manuale ufficiale:
Ma hai una risposta precompilata?
Ne ho visti tanti da parte tua che ormai per me sei "The man Man".

 per il terzo e cosi via
Potresti fare qualcosa del genere:
<?php
$values = 'values ';
for ($i=0; $i<$giorni; $i++) {
  $values .= '("'.$new_date_lav.'" + interval '.$i.' day, '.$_POST['contolavoro_id'].'), ';
}
$values = substr($values, 0, -2);
$sql = 'insert into lavorazioni (data, contolavoro_id) '.$values;
?>
E nella variabile $sql hai la query pronta per essere eseguita.
-- 
DrFloyd


Ho trovato la soluzione alla mia richiesta:
ecco la function che eventualmente può servire a tutti
function giorniLavorativi($lavorativi)  {
    		// Calcolo del giorno di Pasqua fino all'ultimo anno valido
    		for ($i=2006; $i<=2037; $i++) {
    		$pasqua = date('Y-m-d', easter_date($i));
    		$array_pasqua[] = $pasqua;
    		}
    		// Calcolo le rispettive pasquette
    		foreach($array_pasqua as $pasqua) {
        		list ($anno,$mese,$giorno) = explode('-',$pasqua);
        		$pasquetta = mktime (0,0,0,date($mese),date($giorno)
+1,date($anno));
        		$array_pasquetta[] = $pasquetta;
    		}
    		// questi giorni son sempre festivi a prescindere dall'anno
    		$giorniFestivi = array('01-01',
                           		   '01-06',
                           		   '04-25',
                           		   '05-01',
                           		   '06-02',
                           		   '08-15',
                           		   '11-01',
                           		   '12-08',
                           		   '12-25',
                           		   '12-26',
                           		   );
	               // Mi calcolo il timestamp di domani
    		$tsData = strtotime('tomorrow');
    		$feriali = array();
    		$i = 0;
    		while ($i<$lavorativi) {
      			$giorno_data = date('w',$tsData); //verifico il giorno: da 0
(dom) a 6 (sab)
      			$mese_giorno = date('m-d',$tsData); // confronto con gg
sempre festivi
      			// Infine verifico che il giorno non sia
sabato,domenica,festivo fisso o festivo variabile
(pasquetta);
          		if ($giorno_data !=0 && $giorno_data != 6 && !
in_array($mese_giorno,$giorniFestivi) && !in_array($tsData,
$array_pasquetta) ) {
            		$i++;
            		// aggiungo all'array dei feriali
            		$feriali[] = date('Y-m-d',$tsData); //converto il
timestamp finale nel formato gg-mm-aaaa
               	}
      		$tsData = $tsData + 86400;
    		} //fine while
		return $feriali;
		} // fine funzione
		$query = "INSERT INTO lavorazioni( contolavoro_id, data) VALUES ";
		$giorni =  giorniLavorativi($_POST['giorni']);
		foreach ($giorni as $giorno)
		$query.="('".$_POST['contolavoro_id']."', '".$giorno."') ,";
		//substr della stringa
		if (strlen($query)>0) {
     		$query = substr($query , 0, strlen($query )-1);
		}
		$result_riga1 = mysql_query($query) or die("Errore: " .
mysql_error());
		//echo $query;
Ora ho  un'altra domanda:
la function mi calcola il tempo da domani $tsData =
strtotime('tomorrow');  se io volessi passargli il valore
$new_date_lav  come faccio?

 $new_date_lav  come faccio?
Per determinare il timestamp di una data puoi usare la funzione
mktime(). Vedi 
http://www.php.net/mktime
.
-- 
DrFloyd

 Alle 11:13 del 21/07/08 
jesolo....@gmail.com
 ha scritto:

il problema è che a me arriva il dato da una form $new_date_lav =
$_POST['tassativo'] ;
per cui quando lo richiamo attraverso la function mi elabora come
descritto sopra.
adesso ho strtotime('tomorrow');

 strtotime('tomorrow');
Se vuoi che la funzione giorniLavorativi() utilizzi $new_date_lav glielo
devi passare, come qualunque altro parametro.
Vedi 
http://it.php.net/manual/en/functions.arguments.php
.
Una volta che la funzione ha a disposizione quel parametro, puoi usare
mktime() per ottenerne lo Unix timestamp.
-- 
DrFloyd