PHP script di prenotazione automezzi

mi segnala un errore
PHP:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in .... prova.php on line 22

questo e' il codice (modificato)

PHP:
 <?php 

$host = "xxxxxxxx"; $username = "xxxxxxxxx"; $password = "xxxxxxxxxx"; $db="xxxxxxxx"; 

$conn = mysql_connect($host,$username,$password) or die (mysql_error()); 
$sel = mysql_select_db($db) or die (mysql_error());  



if( !empty($_POST['orario']) )
{
    // é arrivata una richiesta di prenotazione

    $inizio_richiesta=$_POST['ini']; 
    $fine_richiesta=$_POST['fin'];   

    $datain = date('Y-m-d H:i:s', strtotime($inizio_richiesta)); 
    $dataout = date('Y-m-d H:i:s', strtotime($fine_richiesta)); 

    $sql = FunSelect( $datain, $dataout );
   $ris=mysql_query($sql);
   if(mysql_num_rows($ris)==0)
    { 
        // non ci sono automezzi disponibili
        // situazione da gestire
    }
    else
    {
        // automezzi disponibili, li visualizzo

        $ris->setFetchMode( PDO::FETCH_ASSOC ); 

        $testo =  "";
        while( $riga = mysql_fetch_array($ris) )
        {
            $id=$riga['id']; 
            $cod=$riga['targa']; 
            $automezzo=$riga['descrizione']; 
            $testo .= "$cod: $automezzo <input name='id_auto' type='radio' value='$cod'><br>"; 
        } 
        FormScelta($inizio_richiesta, $fine_richiesta, $testo);
    }
}
else
{ 
    if( !empty($_POST['scegli']) )
    {
        // é stata confermata la prenotazione con la scelta dell'automezzo

        $id_auto=$_POST['id_auto']; 
        $inizio_richiesta=$_POST['ini']; 
        $fine_richiesta=$_POST['fin'];  

        $sql = "INSERT INTO prenotazioni (targa, utente, pr_inizio, pr_fine, pr_fineprud, conferma) 
            VALUES ('$id_auto', '', '$inizio_richiesta', '$fine_richiesta', '', '')"; 
        $result = mysql_query($sql);
        if (!$result)
        { 
            die( "Errore nella query $sql: " . " // mysql_error()" ); 
        } 
        echo 'inserimento completato';   
    }
    else
    { 
        FormOrario();
    }
}

//qui metterie anche una pulizia in automatico della tabella prenotazioni 
//cancellando i record con data fine minore dell'odierna 

// $oggi=time();//o $oggi=date(formattazione) con la formattazione che usi 
// $query=mysql_query("DELETE prenotazioni WHERE fine < '$oggi'"); 


function FormOrario()
{ 
?>
<form name="orario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    data inizio <input type="text" name="ini"><br> 
    data fine <input type="text" name="fin"><br> 
    <input name="orario" type="submit" id="orario" value="prenota"> 
</form> 
<?php
} 


function FormScelta( $inizio_richiesta, $fine_richiesta, $testo )
{ 
?>
    scegli auto<br> 
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="scegli_auto"> 
    <input name="ini" type="hidden" value="<?php echo $inizio_richiesta; ?>"> 
    <input name="fin" type="hidden" value="<?php echo $fine_richiesta; ?>"> 
    <?php echo $testo; ?> 
    <input name="scegli" type="submit" id="scegli" value="scegli"> 
    </form> 
<?php
} 


function FunSelect( $datain, $dataout )
{ 
return "

declare @R_inizio    AS datetime;
declare @R_fine        AS datetime;
set @R_inizio    = '".$datain."';
set @R_fine    = '".$dataout."';

SELECT distinct a.targa, a.descrizione, a.classe
FROM (

SELECT
  1 AS tipo
, targa
, @R_inizio    AS rich_inizio
, @R_fine    AS rich_fine
, pr_inizio
, pr_fine
  FROM prenotazioni
 WHERE @R_inizio BETWEEN pr_inizio AND pr_fine
    OR @R_fine   BETWEEN pr_inizio AND pr_fine

UNION 

SELECT
  2 AS tipo
, targa
, @R_inizio    AS rich_inizio
, @R_fine    AS rich_fine
, pr_inizio
, pr_fine
  FROM prenotazioni
 WHERE @R_inizio<pr_inizio AND @R_fine>pr_fine

) p 

right join automezzi a
on p.targa=a.targa
where p.targa is null

ORDER BY a.classe, a.descrizione;
";
} 

?>
 
potrebbe essere la query incompatibile con mysql, sostituiscila con,
PHP:
function FunSelect( $datain, $dataout ) 
{  
return " 
SELECT distinct a.targa, a.descrizione, a.classe 
FROM ( 
SELECT 
  targa 
  FROM prenotazioni 
 WHERE '".$datain."'  BETWEEN pr_inizio AND pr_fine 
    OR '".$dataout."' BETWEEN pr_inizio AND pr_fine 
UNION  
SELECT 
  targa 
  FROM prenotazioni 
 WHERE '".$datain."'<pr_inizio AND '".$dataout."'>pr_fine 
) p  
right join automezzi a 
on p.targa=a.targa 
where p.targa is null 
ORDER BY a.classe, a.descrizione
"; 
}
 
niente da fare
PHP:
Fatal error: Call to a member function setFetchMode() on a non-object in .....test3.php on line 39

la riga 39 é

PHP:
 $ris->setFetchMode( PDO::FETCH_ASSOC );
 
PHP:
<?php 

    $host = "xxxxxxxxxxxx"; $username = "xxxxxxxxxx"; $password = "xxxxxxxxxxxxx"; $db="xxxxxxxxxxx"; 

    $conn = mysql_connect($host,$username,$password) or die (mysql_error()); 
    $sel = mysql_select_db($db) or die (mysql_error());  



    if( !empty($_POST['orario']) )
    {
        // é arrivata una richiesta di prenotazione

        $inizio_richiesta=$_POST['ini']; 
        $fine_richiesta=$_POST['fin'];   

        $datain = date('Y-m-d H:i:s', strtotime($inizio_richiesta)); 
        $dataout = date('Y-m-d H:i:s', strtotime($fine_richiesta)); 

        $sql = FunSelect( $datain, $dataout );
       $ris=mysql_query($sql);
       if(mysql_num_rows($ris)==0)
        { 
            // non ci sono automezzi disponibili
            // situazione da gestire
        }
        else
        {
            // automezzi disponibili, li visualizzo

            $ris->setFetchMode( PDO::FETCH_ASSOC ); 

            $testo =  "";
            while( $riga = mysql_fetch_array($ris) )
            {
                $id=$riga['id']; 
                $cod=$riga['targa']; 
                $automezzo=$riga['descrizione']; 
                $testo .= "$cod: $automezzo <input name='id_auto' type='radio' value='$cod'><br>"; 
            } 
            FormScelta($inizio_richiesta, $fine_richiesta, $testo);
        }
    }
    else
    { 
        if( !empty($_POST['scegli']) )
        {
            // é stata confermata la prenotazione con la scelta dell'automezzo

            $id_auto=$_POST['id_auto']; 
            $inizio_richiesta=$_POST['ini']; 
            $fine_richiesta=$_POST['fin'];  

            $sql = "INSERT INTO prenotazioni (targa, utente, pr_inizio, pr_fine, pr_fineprud, conferma) 
                VALUES ('$id_auto', '', '$inizio_richiesta', '$fine_richiesta', '', '')"; 
            $result = mysql_query($sql);
            if (!$result)
            { 
                die( "Errore nella query $sql: " . " // mysql_error()" ); 
            } 
            echo 'inserimento completato';   
        }
        else
        { 
            FormOrario();
        }
    }

    //qui metterie anche una pulizia in automatico della tabella prenotazioni 
    //cancellando i record con data fine minore dell'odierna 

    // $oggi=time();//o $oggi=date(formattazione) con la formattazione che usi 
    // $query=mysql_query("DELETE prenotazioni WHERE fine < '$oggi'"); 


    function FormOrario()
    { 
    ?>
    <form name="orario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
        data inizio <input type="text" name="ini"><br> 
        data fine <input type="text" name="fin"><br> 
        <input name="orario" type="submit" id="orario" value="prenota"> 
    </form> 
    <?php
    } 


    function FormScelta( $inizio_richiesta, $fine_richiesta, $testo )
    { 
    ?>
        scegli auto<br> 
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="scegli_auto"> 
        <input name="ini" type="hidden" value="<?php echo $inizio_richiesta; ?>"> 
        <input name="fin" type="hidden" value="<?php echo $fine_richiesta; ?>"> 
        <?php echo $testo; ?> 
        <input name="scegli" type="submit" id="scegli" value="scegli"> 
        </form> 
    <?php
    } 


   function FunSelect( $datain, $dataout ) 
{  
return " 
SELECT distinct a.targa, a.descrizione, a.classe 
FROM ( 
SELECT 
  targa 
  FROM prenotazioni 
 WHERE '".$datain."'  BETWEEN pr_inizio AND pr_fine 
    OR '".$dataout."' BETWEEN pr_inizio AND pr_fine 
UNION  
SELECT 
  targa 
  FROM prenotazioni 
 WHERE '".$datain."'<pr_inizio AND '".$dataout."'>pr_fine 
) p  
right join automezzi a 
on p.targa=a.targa 
where p.targa is null 
ORDER BY a.classe, a.descrizione
"; 
}  
    ?>
 
ciao Marino solo per farti vedere come ho integrato nel calendario la visualizzazione delle auto che sono impegnate nelle date prenotato con la visualizzazione dell'orario. Lo script funziona, ma non sono sicuro di averlo fatto bene, quindi volevo un parere.

Grazie ancora di tutto.

Funzione che mostra il calendario


PHP:
<?php

// dati di connessione
include "config.php";


/* draws a calendar */
function draw_calendar($month,$year){

	/* draw table */
	$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';

	/* table headings */
	$headings = array('Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato');
	$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';

	/* days and weeks vars now ... */
	$running_day = date('w',mktime(0,0,0,$month,1,$year));
	$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
	$days_in_this_week = 1;
	$day_counter = 0;
	$dates_array = array();

	/* row for week one */
	$calendar.= '<tr class="calendar-row">';

	/* print "blank" days until the first of the current week */
	for($x = 0; $x < $running_day; $x++):
		$calendar.= '<td class="calendar-day-np"> </td>';
		$days_in_this_week++;
	endfor;

	/* keep going with days.... */
	for($list_day = 1; $list_day <= $days_in_month; $list_day++):
		$calendar.= '<td class="calendar-day">';
			/* add in the day number */
			
			
/* inizio query per visualizzare le prenotazioni */
			
		$query = "SELECT pr_inizio, pr_fine, targa FROM prenotazioni";

$result = mysql_query($query);

// se nn ce nulla visualizzo il giorno corrente (ed eventualmente un link per andare nella pagina delle prenotazioni che devo ancora studiare )

if (mysql_num_rows($result)==0) $calendar.= '<div class="day-number">'.$list_day.'</div>';


else {
while($row = mysql_fetch_array($result)) { 

		
		// lavoro sulle stringhe per visualizzare i dati
	         
	   $mese_inizio = substr($row["pr_inizio"],5,2); 
       $giorno_inizio =  substr($row["pr_inizio"],8,2); 
	   $mese_fine = substr($row["pr_fine"],5,7); 
	   $giorno_fine =  substr($row["pr_fine"],8,2);
	   $ora_inizio =   substr($row["pr_inizio"],-8);
	   $ora_fine =   substr($row["pr_fine"],-8);
	   
	 
	 // se il mese dove ho prenotato é maggiore del giorno corrente
	   
	if($mese_inizio >= $month) {
		
		// visualizzo le prenotazioni di quel giorno
		
		
// se la condizione é vera mostro la macchina e l'orario in cui é prenotata
if ($list_day >= $giorno_inizio && $list_day <= $giorno_fine)   // se il giorno corrente é maggiore o uguale al giorno di inizio e di fine della prenotazione ...
// ... se la condizione é vera mostro la macchina e l'orario in cui é prenotata ...
{ $calendar.= '<div class="day-number">'.$list_day.'</div><br>'.$row["targa"]."<br>".$ora_inizio."<br>".$ora_fine;  }  
// ... altrimenti mostro il giorno corrente (ed eventualmente un link per andare nella pagina delle prenotazioni che devo ancora studiare)
else { $calendar.= '<div class="day-number">'.$list_day.'</div>';  } 

	
	}
	
	// mostro solo il giorno corrente (ed eventualmente un link per andare nella pagina delle prenotazioni) se in quel mese non ci sono prenotazioni
	else { $calendar.= '<div class="day-number">'.$list_day.'</div>'; }
	
		
		
		}}
		

			
			
			
			
			
			
			

			
			$calendar.= str_repeat('<p> </p>',2);
			
		$calendar.= '</td>';
		if($running_day == 6):
			$calendar.= '</tr>';
			if(($day_counter+1) != $days_in_month):
				$calendar.= '<tr class="calendar-row">';
			endif;
			$running_day = -1;
			$days_in_this_week = 0;
		endif;
		$days_in_this_week++; $running_day++; $day_counter++;
	endfor;

	/* finish the rest of the days in the week */
	if($days_in_this_week < 8):
		for($x = 1; $x <= (8 - $days_in_this_week); $x++):
			$calendar.= '<td class="calendar-day-np"> </td>';
		endfor;
	endif;

	/* final row */
	$calendar.= '</tr>';

	/* end the table */
	$calendar.= '</table>';
	
	/* all done, return result */
	return $calendar;
}
?>
 
per necessità (forse solo mia) aggiungerei in coda alle funzioni, la seguente,
PHP:
function CleanTime($dt)
{ 
  $dt = str_replace(".000000", "", $dt); $dt = str_replace(".000", "", $dt); return substr($dt,-8,8);
}

poi ... sostituirei il corrispondente, con questo "spezzone"
PHP:
/* keep going with days.... */ 
for($list_day = 1; $list_day <= $days_in_month; $list_day++): 
	$calendar.= '<td class="calendar-day">'; 
	$calendar.= '<div class="day-number">'.$list_day.'</div>';

	/* inizio query per visualizzare le prenotazioni */

	$giorno = $year."-".$month."-".$list_day;
	$sql = "SELECT distinct targa, pr_inizio, pr_fine FROM prenotazioni
		 WHERE pr_inizio BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59' 
		    OR pr_fine   BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59'";

	$ris = $db->query( $sql );  // $result = mysql_query($sql);
	if($ris->rowCount() != 0)   // if (mysql_num_rows($result)==0)
	{ 
        	$ris->setFetchMode( PDO::FETCH_ASSOC ); 
		while( $row = $ris->fetch() )  // while($row = mysql_fetch_array($result))
		{  
			// lavoro sulle stringhe per visualizzare i dati 

			$targa = $row["targa"];

			$giorno_inizio = substr($row["pr_inizio"],8,2); 
			$giorno_fine   = substr($row["pr_fine"],8,2);

			$mese_inizio = substr($row["pr_inizio"],5,2);  
			$mese_fine   = substr($row["pr_fine"],5,2);  

			$ora_inizio = CleanTime($row["pr_inizio"]); 
			$ora_fine   = CleanTime($row["pr_fine"]); 

			if ( $giorno_inizio == $list_day and $giorno_fine != $list_day ) $ora_fine   = "23:59:59";
			if ( $giorno_inizio != $list_day and $giorno_fine == $list_day ) $ora_inizio = "00:00:00";

			$calendar.= '<br>'.$targa.'<br>'.$ora_inizio.'<br>'.$ora_fine;
		} 
	} 
		$calendar.= '</td>'; 
		if($running_day == 6):

il tutto dovrebbe essere rivisto se la prenotazione può essere su più di 2 giorni (ieri/oggi e/o oggi/domani per capirci)
probabilmente aggiungendo
PHP:
			if ( $row["pr_inizio"] < $giorno." 00:00:00" and $row["pr_fine"] > $giorno." 23:59:059" )
			{  
				$ora_fine   = "23:59:59";
				$ora_inizio = "00:00:00";
			}
ma bisogna anche modificare la query
 
Ultima modifica:
con la query così modificata, dovrebbe coprire periodi di prenotazione lunghi (evidenziando i giorni interi non disponibili)
PHP:
	$giorno = $year."-".$month."-".$list_day;
	$sql = "SELECT distinct targa, pr_inizio, pr_fine FROM prenotazioni
		 WHERE pr_inizio BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59' 
		    OR pr_fine   BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59'
		    OR '".$giorno." 00:00:00' BETWEEN pr_inizio AND pr_fine";
 
provato ecco il codice
PHP:
<?php

    // dati di connessione
    include "config.php";


    /* draws a calendar */
    function draw_calendar($month,$year){

        /* draw table */
        $calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';

        /* table headings */
        $headings = array('Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato');
        $calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';

        /* days and weeks vars now ... */
        $running_day = date('w',mktime(0,0,0,$month,1,$year));
        $days_in_month = date('t',mktime(0,0,0,$month,1,$year));
        $days_in_this_week = 1;
        $day_counter = 0;
        $dates_array = array();

        /* row for week one */
        $calendar.= '<tr class="calendar-row">';

        /* print "blank" days until the first of the current week */
        for($x = 0; $x < $running_day; $x++):
            $calendar.= '<td class="calendar-day-np"> </td>';
            $days_in_this_week++;
        endfor;

       /* keep going with days.... */ 
for($list_day = 1; $list_day <= $days_in_month; $list_day++): 
    $calendar.= '<td class="calendar-day">'; 
    $calendar.= '<div class="day-number">'.$list_day.'</div>';

    /* inizio query per visualizzare le prenotazioni */

    $giorno = $year."-".$month."-".$list_day;
    $sql = "SELECT distinct targa, pr_inizio, pr_fine FROM prenotazioni
         WHERE pr_inizio BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59' 
            OR pr_fine   BETWEEN '".$giorno." 00:00:00' AND '".$giorno." 23:59:59'
            OR '".$giorno." 00:00:00' BETWEEN pr_inizio AND pr_fine";  

    $ris = $db->query( $sql );  // $result = mysql_query($sql);
    if($ris->rowCount() != 0)   // if (mysql_num_rows($result)==0)
    { 
          $ris->setFetchMode( PDO::FETCH_ASSOC );   
        while( $row = $ris->fetch() )  // while($row = mysql_fetch_array($result))
        {  
            // lavoro sulle stringhe per visualizzare i dati 

            $targa = $row["targa"];

            $giorno_inizio = substr($row["pr_inizio"],8,2); 
            $giorno_fine   = substr($row["pr_fine"],8,2);

            $mese_inizio = substr($row["pr_inizio"],5,2);  
            $mese_fine   = substr($row["pr_fine"],5,2);  

            $ora_inizio = CleanTime($row["pr_inizio"]); 
            $ora_fine   = CleanTime($row["pr_fine"]); 

            if ( $giorno_inizio == $list_day and $giorno_fine != $list_day ) $ora_fine   = "23:59:59";
            if ( $giorno_inizio != $list_day and $giorno_fine == $list_day ) $ora_inizio = "00:00:00";

            $calendar.= '<br>'.$targa.'<br>'.$ora_inizio.'<br>'.$ora_fine;
        } 
    } 
        $calendar.= '</td>'; 
        if($running_day == 6):  
                $calendar.= '</tr>';
                if(($day_counter+1) != $days_in_month):
                    $calendar.= '<tr class="calendar-row">';
                endif;
                $running_day = -1;
                $days_in_this_week = 0;
            endif;
            $days_in_this_week++; $running_day++; $day_counter++;
        endfor;

        /* finish the rest of the days in the week */
        if($days_in_this_week < 8):
            for($x = 1; $x <= (8 - $days_in_this_week); $x++):
                $calendar.= '<td class="calendar-day-np"> </td>';
            endfor;
        endif;

        /* final row */
        $calendar.= '</tr>';

        /* end the table */
        $calendar.= '</table>';
        
        /* all done, return result */
        return $calendar;
    }
	
	function CleanTime($dt)
{ 
  $dt = str_replace(".000000", "", $dt); $dt = str_replace(".000", "", $dt); return substr($dt,-8,8);
}  
    ?>

da l'errore

PHP:
Fatal error: Call to a member function query() on a non-object in ....automezzi2/calendario.php on line 55

inoltre ho verificato con il codice mio originale che ti riposto
PHP:
<?php

include "config.php";


/* draws a calendar */
function draw_calendar($month,$year){

	/* draw table */
	$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';

	/* table headings */
	$headings = array('Domenica','Lunedì','Martedì','Mercoledì','Giovedì','Venerdì','Sabato');
	$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';

	/* days and weeks vars now ... */
	$running_day = date('w',mktime(0,0,0,$month,1,$year));
	$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
	$days_in_this_week = 1;
	$day_counter = 0;
	$dates_array = array();

	/* row for week one */
	$calendar.= '<tr class="calendar-row">';

	/* print "blank" days until the first of the current week */
	for($x = 0; $x < $running_day; $x++):
		$calendar.= '<td class="calendar-day-np"> </td>';
		$days_in_this_week++;
	endfor;

	/* keep going with days.... */
	for($list_day = 1; $list_day <= $days_in_month; $list_day++):
		$calendar.= '<td class="calendar-day">';
			/* add in the day number */
			
			
/* inizio query per visualizzare le prenotazioni */
			
		$query = "SELECT pr_inizio, pr_fine, targa FROM prenotazioni";

$result = mysql_query($query);

// se nn ce nulla visualizzo il giorno corrente e basta 

if (mysql_num_rows($result)==0) $calendar.= '<div class="day-number">'.$list_day.'</div>';


else {
while($row = mysql_fetch_array($result)) { 

		
		// lavoro sulle stringhe per visualizzare i dati
	         
	   $mese_inizio = substr($row["pr_inizio"],5,2); 
       $giorno_inizio =  substr($row["pr_inizio"],8,2); 
	   $mese_fine = substr($row["pr_fine"],5,7); 
	   $giorno_fine =  substr($row["pr_fine"],8,2);
	   $ora_inizio =   substr($row["pr_inizio"],-8);
	   $ora_fine =   substr($row["pr_fine"],-8);
	   
	 
	 // se il mese dove ho prenotato é maggiore del giorno corrente
	   
	if($mese_inizio >= $month) {
		
		// visualizzo le prenotazioni di quel giorno
		
		

if ($list_day >= $giorno_inizio && $list_day <= $giorno_fine)   // se il giorno corrente é maggiore o uguale al giorno di inizio e di fine della prenotazione ...
{ $calendar.= '<div class="day-number">'.$list_day.'</div><br>'.$row["targa"]."<br>".$ora_inizio."<br>".$ora_fine;  }  
// se la condizione é vera mostro la macchina e l'orario in cui é prenotata

else { $calendar.= '<div class="day-number">'.$list_day.'</div>';  } 
// altrimenti mostro il giorno corrente e basta	
	
	}
	
	// mostro solo il giorno corrente se in quel mese non ci sono prenotazioni
	else { $calendar.= '<div class="day-number">'.$list_day.'</div>'; }
	
		
		
		}}
		

			
			
			
			
			
			
			

			
			$calendar.= str_repeat('<p> </p>',2);
			
		$calendar.= '</td>';
		if($running_day == 6):
			$calendar.= '</tr>';
			if(($day_counter+1) != $days_in_month):
				$calendar.= '<tr class="calendar-row">';
			endif;
			$running_day = -1;
			$days_in_this_week = 0;
		endif;
		$days_in_this_week++; $running_day++; $day_counter++;
	endfor;

	/* finish the rest of the days in the week */
	if($days_in_this_week < 8):
		for($x = 1; $x <= (8 - $days_in_this_week); $x++):
			$calendar.= '<td class="calendar-day-np"> </td>';
		endfor;
	endif;

	/* final row */
	$calendar.= '</tr>';

	/* end the table */
	$calendar.= '</table>';
	
	/* all done, return result */
	return $calendar;
}
?>

I giorni compaiono due volte mi sapresti indicare il perché? grazie
 
nel codice che ti ho postato, devi ripristinare i metodi mysql eliminando quelli da me usati, senza dimenticare di togliere la riga
PHP:
$ris->setFetchMode( PDO::FETCH_ASSOC );

nel tuo codice noto che leggi l'intera tabella prenotazioni per ogni giorno trattato
PHP:
$query = "SELECT pr_inizio, pr_fine, targa FROM prenotazioni";
io ho modificato lo script (e relativa query) in modo da estrarre solo i record del giorno

nel tuo script, il giorno lo scrivi prima di ogni targa, quindi anche più di 2 volte, dipendendo dal numero di targhe listate nel giorno stesso, io l'ho spostato all'inizio del "for"
PHP:
for($list_day = 1; $list_day <= $days_in_month; $list_day++): 
    $calendar.= '<td class="calendar-day">'; 
    $calendar.= '<div class="day-number">'.$list_day.'</div>';
in modo da scriverlo una sola volta

infine, ad essere sincero ho chiuso gli occhi davanti a questo codice,
PHP:
    if($mese_inizio >= $month) {
        
        // visualizzo le prenotazioni di quel giorno
        
        

if ($list_day >= $giorno_inizio && $list_day <= $giorno_fine)   // se il giorno corrente é maggiore o uguale al giorno di inizio e di fine della prenotazione ...
{ $calendar.= '<div class="day-number">'.$list_day.'</div><br>'.$row["targa"]."<br>".$ora_inizio."<br>".$ora_fine;  }  
// se la condizione é vera mostro la macchina e l'orario in cui é prenotata

else { $calendar.= '<div class="day-number">'.$list_day.'</div>';  } 
// altrimenti mostro il giorno corrente e basta    
    
    }
    
    // mostro solo il giorno corrente se in quel mese non ci sono prenotazioni
    else { $calendar.= '<div class="day-number">'.$list_day.'</div>'; }
    
        
        
        }}
troppo complicato capirlo ....

ciao
Marino
 
ciao, un'ultimissima cosa dopodiché io ho finito, ho utilizzato un datepicker, per far inserire alle utenze la data nel formato italiano
Codice:
http://xdsoft.net/jqplugins/datetimepicker/

come faccio a modificare la data in modo da passare dal formato GG-MM-YYYY al formato YYYY-MM-GG?

potrebbe essere un codice del tipo
PHP:
$datamail1 = date_create($inizio_richiesta);
 $datamail2 = date_create($fine_richiesta);
$stampa1 = date_format($datamail1, 'd/m/Y H:i:s');
$stampa2 = date_format($datamail2, 'd/m/Y H:i:s');

Io avevo provato anche questo codice
PHP:
<?php


$inizio_richiesta = "20-02-2015 10:00:00"; // ipotizzo che queste siano le date e ore inserite 

$fine_richiesta = "20-02-2015 12:00:00";

$uno = substr($inizio_richiesta,0,10);
$due = substr($fine_richiesta,0,10);


$h1 =  substr($inizio_richiesta,10,9);
$h2 =  substr($fine_richiesta,10,9);


function convertiData($dataEur){
$rsl = explode ('-',$dataEur);
$rsl = array_reverse($rsl);
return implode($rsl,'-');
}

$datas0 = convertiData($uno);
$datae0 = convertiData($due);

echo $datas0."<br>".$datae0."<hr>";

echo $h1."<br>".$h2."<hr>";


// date da utilizzare nell' insert

$datas1 = $datas0." ".$h1;
$datae1 = $datae0." ".$h2;
?>

ma modificando l'insert in

PHP:
 $sql = "INSERT INTO prenotazioni (targa, utente, pr_inizio, pr_fine, pr_fineprud, conferma, nome, unita)
                VALUES ('$id_auto', '', '$datas1', '$datae1', '', '$identifica', '$nome', '$unita')";

il risultato dell'inserimento era 0000-00-00

grazie ancora di tutto
 
questo può essere un modo, ne esistono altri,
PHP:
$DateTime = DateTime::createFromFormat('d-m-Y H:i:s', '15-02-2009 15:16:17');
$DateTime = $DateTime->format('Y-m-d H:i:s');
per renderlo fruibile in maniera semplice, puoi creare una funzione,
che ti permette di utilizzare tutti i formati che ti servono,
salvo avere impostati quelli di uso più frequente
PHP:
$inizio_richiesta = myDateTime("20-02-2015 10:00:00");
$fine_richiesta = myDateTime("20-02-2015 12:00:00");

function myDateTime($DateTime, $formatIN='d-m-Y H:i:s', $formatOUT='Y-m-d H:i:s')
{
    $DateTime = DateTime::createFromFormat($formatIN, $DateTime);
    $DateTime = $DateTime->format($formatOUT);
    return $DateTime;
}
risultato
2015-02-20 10:00:00
2015-02-20 12:00:00
 
Ciao, scusa se ancora ti stresso ma mi hanno chiesto di fare una modifica, volendo nella query inserire al posto del nome della tabella automezzi una variabile del tipo:
PHP:
$table = "automezzi";
Le uniche parti che devo modificare sono:
PHP:
  function FunSelect( $datain, $dataout, $table )
{
return "
SELECT distinct a.targa, a.descrizione, a.classe
FROM (
SELECT
  targa
  FROM prenotazioni
 WHERE '".$datain."'  BETWEEN pr_inizio AND pr_fine
    OR '".$dataout."' BETWEEN pr_inizio AND pr_fine
UNION
SELECT
  targa
  FROM prenotazioni
 WHERE '".$datain."'<pr_inizio AND '".$dataout."'>pr_fine
) p
right join '".$table.'" a
on p.targa=a.targa
where p.targa is null
ORDER BY a.classe, a.descrizione
";
}


PHP:
   $datain = date('Y-m-d H:i:s', strtotime($inizio_richiesta));
   $dataout = date('Y-m-d H:i:s', strtotime($fine_richiesta));
   $table = "automezzi";

   $sql = FunSelect( $datain, $dataout, $table );

mi confermi ? grazie.
 
Ultima modifica:
Ciao ti chiedo ancora un consulto veloce.

Ho creato una pagina dettagli.php che riceve delle variabili, se un utente clicca su una prenotazione esistente nel calendario, al fine di modificarla e cancellarla, ti posto un link di esempio
PHP:
dettagli.php?pr_inizio_old=2015-12-18 2003:00:00&pr_fine_old=2015-12-18 2004:00:00&targa_old=FIAT%20PANDA&utente_old=S&referente_old=giovanna guglielmotti&conferma_old=x11111111&nome_old=prova&unita_old=marco&prenotazioni=prenotazioni_palmanova

questa é la pagina dettagli, che visualizza i dati della prenotazione già inserita (variabili con suffisso _old) quando un utente prenota la prima cosa che lo script fa é cancellare la vecchia prenotazione per poi inserire la nuova
PHP:
<!doctype html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="js/jquery.datetimepicker.css"/>
<link rel="stylesheet" type="text/css" href="css/css.css"/>
<link rel="stylesheet" type="text/css" href="css/base.css"/>
<meta charset="utf-8">
<title>Documento senza titolo</title>
</head>

<body>


<?php


include "cfg/config.php";



    if( !empty($_POST['orario']) )
    {
        // é arrivata una richiesta di prenotazione

        $inizio_richiesta=$_POST['ini'];
        $fine_richiesta=$_POST['fin'];
		$unita=$_POST['unita'];
		$nome=$_POST['nome'];

        $datain = date('Y-m-d H:i:s', strtotime($inizio_richiesta));
        $dataout = date('Y-m-d H:i:s', strtotime($fine_richiesta));

        $sql = FunSelect( $datain, $dataout );
       $ris=mysql_query($sql);
       if(mysql_num_rows($ris)==0)
        {
            // non ci sono automezzi disponibili
            // situazione da gestire

			echo "<span class=\"titoli\">nessun automezzo disponibile nell'intervallo di tempo indicato<br>tornate indietro e specificate un intervallo temporale differente</span>";
			echo "<br><br>";
			echo "<a href=\"javascript:history.back()\"> Torna indietro </a>";
        }
        else
        {
            // automezzi disponibili, li visualizzo



            $testo =  "";
            while( $riga = mysql_fetch_array($ris) )
            {
                $id=$riga['id'];
                $cod=$riga['targa'];
                $automezzo=$riga['descrizione'];
				$referente=$riga['referente'];
                $testo .= "<input name='id_auto' type='radio' value='$cod' class='scelta'><span class='voci'>$automezzo</span><span class=\"titoletti\">nome referente: <input name='referente' type='text' value='$referente' class='campo'><br></span>";
            }
            FormScelta($inizio_richiesta, $fine_richiesta, $testo, $nome, $unita);
        }
    }
    else
    {
        if( !empty($_POST['scegli']) )
        {
			
						
			
			
            // é stata confermata la prenotazione con la scelta dell'automezzo

            $id_auto=$_POST['id_auto'];
			$referente=$_POST['referente'];
            $inizio_richiesta=$_POST['ini'];
            $fine_richiesta=$_POST['fin'];
			$identifica=$_POST['identifica'];
			$unita=$_POST['unita'];
		    $nome=$_POST['nome'];
            $inizio_data = myDateTime($inizio_richiesta);
            $fine_data = myDateTime($fine_richiesta);
			
			$inicanc = $_POST['inicanc'];
			$fincanc = $_POST['fincanc'];
			
			
			


		

			substr($stringa, 0, 10);
			
			// cancello 
			
			$del = "DELETE FROM prenotazioni_palmanova WHERE  `pr_inizio` = '$inicanc' AND `pr_fine` ='$fincanc'"; 
            echo $del;    
            $result = mysql_query($sql);
            if (!$result)
            {
                die( "Errore nella query $sql: " . " // mysql_error()" );
            }
			
			


            $sql = "INSERT INTO prenotazioni_palmanova (targa, referente, utente, pr_inizio, pr_fine, pr_fineprud, conferma, nome, unita)
                VALUES ('$id_auto', '$referente', 'S', '$inizio_data', '$fine_data', '', '$identifica', '$nome', '$unita')";
            $result = mysql_query($sql);
            if (!$result)
            {
                die( "Errore nella query $sql: " . " // mysql_error()" );
            }
            echo '<span class=\"titoli\">prenotazione eseguita</span>';
            echo "<br>";
			


 $datamail1 = date_create($inizio_richiesta);
 $datamail2 = date_create($fine_richiesta);

$stampa1 = date_format($datamail1, 'd/m/Y H:i:s');
$stampa2 = date_format($datamail2, 'd/m/Y H:i:s');



        // invio la mail

// definisco mittente e destinatario della mail
$nome_mittente = "Gestione automezzi";
$mail_mittente = "[email protected]";
$mail_destinatario = "[email protected], [email protected]";




// definisco il subject ed il body della mail
$mail_oggetto = "Prenotazione automezzo ".$id_auto." DAL ".$stampa1." AL  ".$stampa2;
$mail_corpo = $nome." ".$unita." ha prenotato il mezzo nel periodo indicato in oggetto. Il referente della prenotazione: ".$referente;

// aggiusto un po' le intestazioni della mail
// E' in questa sezione che deve essere definito il mittente (From)
// ed altri eventuali valori come Cc, Bcc, ReplyTo e X-Mailer
$mail_headers = "From: " .  $nome_mittente . " <" .  $mail_mittente . ">\r\n";
$mail_headers .= "Reply-To: " .  $mail_mittente . "\r\n";
$mail_headers .= "X-Mailer: PHP/" . phpversion();

if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, $mail_headers))
  echo "<span class=\"titoli\">Messaggio di prenotazione inviato con successo</span>";
else
  echo "<span class=\"titoli\">Errore. Nessun messaggio inviato.</span>";


       //


        }
        else
        {
            FormOrario();
        }
    }


    //qui metterie anche una pulizia in automatico della tabella prenotazioni
    //cancellando i record con data fine minore dell'odierna

    // $oggi=time();//o $oggi=date(formattazione) con la formattazione che usi
    // $query=mysql_query("DELETE prenotazioni WHERE fine < '$oggi'");


    function FormOrario()
    {
    ?>
    <span class="titoli">Inserisci la tua prenotazione completando i campi richiesti.</span><br><span class="titoletti">N.B.: i secondi indicati non vengono calcolati nelle prenotazioni</span>
    <?php
	
	$inizio_data = myDateTime2($_GET['pr_inizio_old']);
    $fine_data = myDateTime2($_GET['pr_fine_old']);  ?>
    
        <form name="orario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <span class="form">data di ritiro</span><br>
        <input type="text" value="<?php  echo $inizio_data; ?>" id="inizio" name="ini"/><br>
        <span class="form">data di consegna</span><br>
        <input type="text" value="<?php echo $fine_data; ?>" id="fine" name="fin"/><br>
        <span class="form">unità operativa di appartenenza</span><br>
        <input type="text" value="<?php echo $_GET['unita_old']; ?>" name="unita" id="unita"><br>
        <span class="form">nome e recapito telefonico <strong>(in forma estesa)</strong></span><br>
        <input type="text" value="<?php echo $_GET['nome_old']; ?>" name="nome" id="nome"><br>
        <input name="inicanc" type="text" value="<?php echo $_GET['pr_inizio_old'] ?>">
        <input name="fincanc" type="text" value="<?php echo $_GET['pr_fine_old']; ?>">
		<input name="orario" type="submit" id="orario" value="prenota" class="fsSubmitButton">
    </form>
    <?php
    }


    function FormScelta( $inizio_richiesta, $fine_richiesta, $testo, $nome, $unita )
    {
    ?>
        <br><span class="titoli">Scegli tra le auto disponibili:</span><br>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="scegli_auto">
        <input name="ini" type="hidden" value="<?php echo $inizio_richiesta; ?>">
        <input name="fin" type="hidden" value="<?php echo $fine_richiesta; ?>">
        <input name="nome" type="hidden" value="<?php echo $nome; ?>">
        <input name="unita" type="hidden" value="<?php echo $unita; ?>">
		<?php echo $testo; ?>
		<span class="form">numero di badge </span><br>
        <input type="text" name="identifica" id="identifica">
        <input name="scegli" type="submit" id="scegli" value="concludi prenotazione" class="fsSubmitButton">
        </form>
    <?php
    }


   function FunSelect( $datain, $dataout )
{
return "
SELECT distinct a.targa, a.descrizione, a.classe, a.referente
FROM (
SELECT
  targa
  FROM prenotazioni
 WHERE '".$datain."'  BETWEEN pr_inizio AND pr_fine
    OR '".$dataout."' BETWEEN pr_inizio AND pr_fine
UNION
SELECT
  targa
  FROM prenotazioni
 WHERE '".$datain."'<pr_inizio AND '".$dataout."'>pr_fine
) p
right join automezzi a
on p.targa=a.targa
where p.targa is null
ORDER BY a.classe, a.descrizione
";
}

function myDateTime($DateTime, $formatIN='d-m-Y H:i:s', $formatOUT='Y-m-d H:i:s')
{
    $DateTime = DateTime::createFromFormat($formatIN, $DateTime);
    $DateTime = $DateTime->format($formatOUT);
    return $DateTime;
}  

function myDateTime2($DateTime, $formatIN='Y-m-d H:i:s', $formatOUT='d-m-Y H:i:s')
{
    $DateTime = DateTime::createFromFormat($formatIN, $DateTime);
    $DateTime = $DateTime->format($formatOUT);
    return $DateTime;
}  

// $inizio_richiesta = myDateTime("20-02-2015 10:00:00");
// $fine_richiesta = myDateTime("20-02-2015 12:00:00");
    ?>





<script type="text/javascript">
function popup(url) {
    popupWindow = window.open( url, 'popUpWindow',
        "height=500,width=500,left=10,top=10,resizable=no,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes"
    )
}
</script>

    </body>
<script src="js/jquery.js"></script>
<script src="build/jquery.datetimepicker.full.js"></script>
<script>/*
window.onerror = function(errorMsg) {
	$('#console').html($('#console').html()+'<br>'+errorMsg)
}*/

$.datetimepicker.setLocale('en');

$('#datetimepicker_format').datetimepicker({value:'2015-04-15 05:03', format: $("#datetimepicker_format_value").val()});
$("#datetimepicker_format_change").on("click", function(e){
	$("#datetimepicker_format").data('xdsoft_datetimepicker').setOptions({format: $("#datetimepicker_format_value").val()});
});
$("#datetimepicker_format_locale").on("change", function(e){
	$.datetimepicker.setLocale($(e.currentTarget).val());
});

$('#inizio').datetimepicker({
dayOfWeekStart : 1,
format:'d-m-Y H:i:s',
lang:'it',
disabledDates:['1986-01-08','1986-01-09','1986-01-10'],
startDate:	'2015-12-01'
});
$('#fine').datetimepicker({
dayOfWeekStart : 1,
format:'d-m-Y H:i:s',
lang:'it',
disabledDates:['1986-01-08','1986-01-09','1986-01-10'],
startDate:	'2015-12-01'
});



</script>
</html>

il problema é che non riesco a cancellare la vecchia prenotazione:
PHP:
// cancello 
			
			$del = "DELETE FROM prenotazioni_palmanova WHERE  `pr_inizio` = '$inicanc' AND `pr_fine` ='$fincanc'"; 
            echo $del;    
            $result = mysql_query($sql);
            if (!$result)
            {
                die( "Errore nella query $sql: " . " // mysql_error()" );
            }

le variabili inicanc e fincanc le ho inserite qui:

PHP:
function FormOrario()
    {
    ?>
    <span class="titoli">Inserisci la tua prenotazione completando i campi richiesti.</span><br><span class="titoletti">N.B.: i secondi indicati non vengono calcolati nelle prenotazioni</span>
    <?php
	
	$inizio_data = myDateTime2($_GET['pr_inizio_old']);
    $fine_data = myDateTime2($_GET['pr_fine_old']);  ?>
    
        <form name="orario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <span class="form">data di ritiro</span><br>
        <input type="text" value="<?php  echo $inizio_data; ?>" id="inizio" name="ini"/><br>
        <span class="form">data di consegna</span><br>
        <input type="text" value="<?php echo $fine_data; ?>" id="fine" name="fin"/><br>
        <span class="form">unità operativa di appartenenza</span><br>
        <input type="text" value="<?php echo $_GET['unita_old']; ?>" name="unita" id="unita"><br>
        <span class="form">nome e recapito telefonico <strong>(in forma estesa)</strong></span><br>
        <input type="text" value="<?php echo $_GET['nome_old']; ?>" name="nome" id="nome"><br>
        [B]<input name="inicanc" type="text" value="<?php echo $_GET['pr_inizio_old'] ?>">
        <input name="fincanc" type="text" value="<?php echo $_GET['pr_fine_old']; ?>">[/B]
		<input name="orario" type="submit" id="orario" value="prenota" class="fsSubmitButton">
    </form>
    <?php
    }

l'errore é
PHP:
DELETE FROM prenotazioni_palmanova WHERE `pr_inizio` = '' AND `pr_fine` =''Errore nella query : // mysql_error()

non recepisce le variabili inicanc e fincanc,

grazie 1000
 
la prima cosa che vedo è l'ora errata
PHP:
dettagli.php
?pr_inizio_old=2015-12-18 2003:00:00
&pr_fine_old=2015-12-18 2004:00:00
questo potrebbe invalidare il risultato della funzione "myDateTime"

poi, il referente contiene uno spazio, sarebbe meglio sostituirlo con "%20" vedi targa

infine, già che ci sei, i caratteri speciali,
HTML:
<span class="form">unit&agrave; operativa di appartenenza</span><br>

per quanto riguarda l'esecuzione, quando clicco il bottone "prenota", lo script passa da
"// automezzi disponibili, li visualizzo"
e non dovrebbe,

in ogni caso questi sono i valori restituiti da $_POST e mi sembrano corretti
array(7) {
["ini"]=> string(19) "18-12-2015 23:00:00"
["fin"]=> string(19) "19-12-2015 00:00:00"
["unita"]=> string(5) "marco"
["nome"]=> string(5) "prova"
["inicanc"]=> string(19) "2015-12-18 23:00:00"
["fincanc"]=> string(19) "2015-12-18 24:00:00"
["orario"]=> string(7) "prenota" }
 
ciao, ho provato ti posto il codice
PHP:
<?php


include "cfg/config.php";





    if( !empty($_POST['orario']) )
    {
        // é arrivata una richiesta di prenotazione
		
		
		$oldtarga=$_POST['oldtarga'];
		$oldini=$_POST['oldini'];
		$oldfin=$_POST['oldfin'];
		$oldprud=$_POST['oldprud'];
		$tabella=$_GET['prenotazioni'];
		


		
		// Cancello la vecchia prenotazione
		
		$del = "DELETE FROM ".$tabella." WHERE  targa = '".$oldtarga."' AND pr_inizio = '".$oldini."' AND  pr_fine = '".$oldfin."' AND pr_fineprud = '".$oldprud."'";
 
            echo $del;    
            $result = mysql_query($del);
            if (!$result)
            {
                die( "Errore nella query $sql: " . " // mysql_error()" );
            }
			
			

// recupero i dati della nuova

        $inizio_richiesta=$_POST['ini'];
        $fine_richiesta=$_POST['fin'];
		$unita=$_POST['unita'];
		$nome=$_POST['nome'];
		

        $datain = date('Y-m-d H:i:s', strtotime($inizio_richiesta));
        $dataout = date('Y-m-d H:i:s', strtotime($fine_richiesta));

        $sql = Palmanova( $datain, $dataout, $tabella );
       $ris=mysql_query($sql);
       if(mysql_num_rows($ris)==0)
        {
            // non ci sono automezzi disponibili
            // situazione da gestire

			echo "<span class=\"titoli\">nessun automezzo disponibile nell'intervallo di tempo indicato<br>tornate indietro e specificate un intervallo temporale differente</span>";
			echo "<br><br>";
			echo "<a href=\"javascript:history.back()\"> Torna indietro </a>";
        }
        else
        {
            // automezzi disponibili, li visualizzo



            $testo =  "";
            while( $riga = mysql_fetch_array($ris) )
            {
                $id=$riga['id'];
                $cod=$riga['targa'];
                $automezzo=$riga['descrizione'];
				$referente=$riga['referente'];
				$pr_inizio_old=$riga['pr_inizio'];
				$pr_fine_old=$riga['pr_fine'];
				$tabella=$_GET['prenotazioni'];
				
                $testo .= "<input name='id_auto' type='radio' value='$cod' class='scelta'><span class='voci'>$automezzo</span><span class=\"titoletti\">nome referente: <input name='referente' type='text' value='$referente' class='campo'>prenotazioni <input name='prenota' type='text' value='$tabella' class='campo'><br>$pr_inizio_old $pr_fine_old</span>";
            }
            FormScelta($inizio_richiesta, $fine_richiesta, $testo, $nome, $unita, $prenota);
        }
    }
    else
    {
        if( !empty($_POST['scegli']) )
        {
			
						
			
			
            // é stata confermata la prenotazione con la scelta dell'automezzo
			
			
            
            $id_auto=$_POST['id_auto'];
			$referente=$_POST['referente'];
            $inizio_richiesta=$_POST['ini'];
            $fine_richiesta=$_POST['fin'];
			$identifica=$_POST['identifica'];
			$unita=$_POST['unita'];
		    $nome=$_POST['nome'];
            $inizio_data = Data1($inizio_richiesta);
            $fine_data = Data1($fine_richiesta);			
			
			$inicanc = $_POST['inicanc'];
			$fincanc = $_POST['fincanc'];
			
			
			


		

			substr($stringa, 0, 10);
			
			// cancello 
			
			
	
			
			
			// inserisco i nuovi dati
			
			
			
			$sql = "INSERT INTO".$tabella." (targa, referente, utente, pr_inizio, pr_fine, pr_fineprud, conferma, nome, unita)
                VALUES ('$id_auto', '$referente', 'S', '$inizio_data', '$fine_data', '', '$identifica', '$nome', '$unita')";
            $result = mysql_query($sql);
            if (!$result)
            {
                die( "Errore nella query $sql: " . " // mysql_error()" );
            }
            echo '<span class=\"titoli\">prenotazione eseguita</span>';
			echo $prenota;
            echo "<br>";					
			


          


 $datamail1 = date_create($inizio_richiesta);
 $datamail2 = date_create($fine_richiesta);

$stampa1 = date_format($datamail1, 'd/m/Y H:i:s');
$stampa2 = date_format($datamail2, 'd/m/Y H:i:s');



        // invio la mail

// definisco mittente e destinatario della mail
$nome_mittente = "Gestione automezzi";
$mail_mittente = "[email protected]";
$mail_destinatario = "[email protected], [email protected]";




// definisco il subject ed il body della mail
$mail_oggetto = "Prenotazione automezzo ".$id_auto." DAL ".$stampa1." AL  ".$stampa2;
$mail_corpo = $nome." ".$unita." ha prenotato il mezzo nel periodo indicato in oggetto. Il referente della prenotazione: ".$referente;

// aggiusto un po' le intestazioni della mail
// E' in questa sezione che deve essere definito il mittente (From)
// ed altri eventuali valori come Cc, Bcc, ReplyTo e X-Mailer
$mail_headers = "From: " .  $nome_mittente . " <" .  $mail_mittente . ">\r\n";
$mail_headers .= "Reply-To: " .  $mail_mittente . "\r\n";
$mail_headers .= "X-Mailer: PHP/" . phpversion();

if (mail($mail_destinatario, $mail_oggetto, $mail_corpo, $mail_headers))
  echo "<span class=\"titoli\">Messaggio di prenotazione inviato con successo</span>";
else
  echo "<span class=\"titoli\">Errore. Nessun messaggio inviato.</span>";


       //


        }
        else
        {
            FormOrario();
        }
    }


    //qui metterie anche una pulizia in automatico della tabella prenotazioni
    //cancellando i record con data fine minore dell'odierna

    // $oggi=time();//o $oggi=date(formattazione) con la formattazione che usi
    // $query=mysql_query("DELETE prenotazioni WHERE fine < '$oggi'");


    function FormOrario()
    {
    ?>
    <span class="titoli">Inserisci la tua prenotazione completando i campi richiesti.</span><br><span class="titoletti">N.B.: i secondi indicati non vengono calcolati nelle prenotazioni</span>
    
    
        <form name="orario" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
        <span class="form">data di ritiro</span><br>
        <input type="text" value="<?php $data_in =  Data2($_GET['pr_inizio_old']);  echo $data_in; ?>" id="inizio" name="ini"/><br>
        <span class="form">data di consegna</span><br>
        <input type="text" value="<?php $data_out =  Data2($_GET['pr_fine_old']);  echo $data_out; ?>" id="fine" name="fin"/><br>
        <span class="form">unità operativa di appartenenza</span><br>
        <input type="text" value="<?php echo $_GET['unita_old']; ?>" name="unita" id="unita"><br>
        <span class="form">nome e recapito telefonico <strong>(in forma estesa)</strong></span><br>
        <input type="text" value="<?php echo $_GET['nome_old']; ?>" name="nome" id="nome"><br>
        <input type="text" value="<?php  echo $_GET['pr_inizio_old']; ?>" id="oldini" name="oldini"/><br>
        <input type="text" value="<?php  echo $_GET['pr_fine_old']; ?>" id="oldfin" name="oldfin"/><br>
        <input type="text" value="<?php  echo $_GET['targa_old']; ?>" id="oldtarga" name="oldtarga"/><br>
        <input type="text" value="<?php  echo $_GET['pr_fineprud']; ?>" id="oldprud" name="oldprud"/><br>
        <input type="text" value="<?php  echo $_GET['prenotazioni']; ?>" id="prenotazioni" name="prenotazioni"/><br>
        <input name="orario" type="submit" id="orario" value="prenota" class="fsSubmitButton">
    </form>
    <?php
    }


    function FormScelta( $inizio_richiesta, $fine_richiesta, $testo, $nome, $unita, $tabella )
    {
    ?>
        <br><span class="titoli">Scegli tra le auto disponibili:</span><br>
        <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="scegli_auto">
        <input name="ini" type="hidden" value="<?php echo $inizio_richiesta; ?>">
        <input name="fin" type="hidden" value="<?php echo $fine_richiesta; ?>">
        <input name="nome" type="hidden" value="<?php echo $nome; ?>">
        <input name="unita" type="hidden" value="<?php echo $unita; ?>">
        <input name="prenota" type="text" value="<?php echo $tabella ?>">
		<?php echo $testo; ?>
		<span class="form">numero di badge </span><br>
        <input type="text" name="identifica" id="identifica">
        <input name="scegli" type="submit" id="scegli" value="concludi prenotazione" class="fsSubmitButton">
        </form>
    <?php
    }


 
function Palmanova( $datain, $dataout, $tabella )

{

return "

SELECT distinct a.targa, a.descrizione, a.classe, a.referente

FROM (

SELECT

  targa

  FROM '".$tabella."'

 WHERE '".$datain."'  BETWEEN pr_inizio AND pr_fine

    OR '".$dataout."' BETWEEN pr_inizio AND pr_fine

UNION

SELECT

  targa

  FROM '".$tabella."'

 WHERE '".$datain."'<pr_inizio AND '".$dataout."'>pr_fine

) p

right join automezzi_palmanova a

on p.targa=a.targa

where p.targa is null

ORDER BY a.classe, a.descrizione

";

}

function Data1($DateTime, $formatIN='d-m-Y H:i:s', $formatOUT='Y-m-d H:i:s')
{
    $DateTime = DateTime::createFromFormat($formatIN, $DateTime);
    $DateTime = $DateTime->format($formatOUT);
    return $DateTime;
}  

function Data2($DateTime, $formatIN='Y-m-d H:i:s', $formatOUT='d-m-Y H:i:s')
{
    $DateTime = DateTime::createFromFormat($formatIN, $DateTime);
    $DateTime = $DateTime->format($formatOUT);
    return $DateTime;
}  



// $inizio_richiesta = myDateTime("20-02-2015 10:00:00");
// $fine_richiesta = myDateTime("20-02-2015 12:00:00");
    ?>

la variabile che contiene il nome della tabella la faccio passare al php in questo modo

PHP:
prenotazioni.php?prenotazioni=prenotazioni_palmanova

l'errore é
PHP:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /web/htdocs/www.friulisitiweb.it/home/21-dic/dettagli_modifica.php on line 63

ho cambiato per esigenze mie:

PHP:
function FunSelect( $datain, $dataout )

in
PHP:
  function Palmanova( $datain, $dataout, $tabella )

ma non credo sia quello il problema.

Ciao e grazie
 

Discussioni simili