PHP script di prenotazione automezzi

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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;
";
} 

?>
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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
"; 
}
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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 );
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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
"; 
}  
    ?>
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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;
}
?>
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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:

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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";
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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:

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
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" }
 

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
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
Autore Titolo Forum Risposte Data
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
P lanciare script asp (o php) da jquery Javascript 1
M Collegamento tra form html e script php PHP 4
felino PHP e script generazione file excel PHP 2
R Primo script in PHP / CSS PHP 4
felino Script PHP per leggere un file JSON. autenticazione? PHP 4
T [a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova Offerte e Richieste di Lavoro e/o Collaborazione 1
Max 1 [PHP] Script che funziona in locale e non online PHP 16
K Help: problema con uno script di booking in php! PHP 0
O [PHP] inviare dati da form e script ajax PHP 0
P [PHP] Aggiungere un mio script a prestashop? PHP 10
D [Javascript] inserire uno script in un file php Javascript 6
Gabriele15497514 php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente PHP 3
romeocharly [PHP] Script per rinominare in automatico le immagini inviate da ftp PHP 0
A [PHP] Script con array con numeri che iniziano per 00 PHP 2
TpD [PHP] Script per organizzazione presenza eventi PHP 3
D [PHP] script che invii una mail automatica dopo risposta ad una discussione di un forum PHP 0
T interpretare uno script php non fatto da me... PHP 3
O Script PHP e loro visibilità PHP 4
A [PHP] Script Ip camera su altervista senza sottocartelle PHP 6
M [PHP] Problema script ricezione e invio posta... PHP 1
Y Codice AdSense su script php PHP 4
L [PHP] Problema Script 'Not Found' PHP 4
webmachine [PHP] Script per censurare parole PHP 4
C richiamare una funzione in un altro script php PHP 1
M [PHP] Script per controllo disponibilitá negozio in citta PHP 4
B [PHP] hp script creare un utente diminuendo -1 e cosi via PHP 1
Y Modificare script php PHP 5
paloppa [PHP] script importati da internet o da file PHP 24
xone [Vendo] Script gestionale php-mysql gestione pratiche Altri Annunci 0
T mostrare il riultato di uno script php Ajax 2
K Script PHP per leggere array.txt Presentati al Forum 3
Punix [PHP] problema script invio e-mail PHP 2
R pagina html + script php PHP 12
M Script php funziona / non funziona in base all'hosting PHP 21
T [PHP] piccola modifica a script (non mio...) PHP 8
Trapano Script php che non va più' con Versione MySQL: 5.6 PHP 5
Mauro Guardiani [PHP] script per caricamento video PHP 0
matteoraggi Screenshot da script php PHP 0
F Richiesta script PHP PHP 1
giancadeejay Bloccare utente se non loggato con script php PHP 12
booklisa [PHP] Script nello script PHP 2
H [PHP] Script non vengono eseguiti PHP 2
elpirata [PHP] Script reminder email PHP 11
S Problema con script php-javascript PHP 2
9 inserire contenuto in un file pdf aperto sul browser tramite script php PHP 0
A [PHP] inserire paginazione su script php/mysql PHP 6
R [PHP] [HTML] Creare script invio modulo contatti PHP 2
elpirata [Risolto] Gestione Prenotazioni script php PHP 25
D [vendo] script php programmazione televisiva del giorno 33 canali Altri Annunci 0

Discussioni simili