• Home
  • Forum
  • Fare Web
  • PHP

PHP script di prenotazione automezzi

  • Creatore Discussione Creatore Discussione Marco Luigia
  • Data di inizio Data di inizio 19 Nov 2015
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 27 Nov 2015
  • #21
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;
";
} 

?>
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 27 Nov 2015
  • #22
prova a darmi il codice del file
PHP:
Config_testDB.php
, cosi' lo provo a testare con il tuo metodo.
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 27 Nov 2015
  • #23
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
"; 
}
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 27 Nov 2015
  • #24
Marco Luigia ha scritto:
prova a darmi il codice del file
PHP:
Config_testDB.php
, cosi' lo provo a testare con il tuo metodo.
Clicca per allargare...

potresti trovarti di fronte ad altri problemi, io farei un passo per volta cercando di far funzionare lo script
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 28 Nov 2015
  • #25
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 );
 
M

Marco Luigia

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

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 28 Nov 2015
  • #27
questo,
PHP:
$ris->setFetchMode( PDO::FETCH_ASSOC );
non riguarda mysql, devi toglierlo
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 29 Nov 2015
  • #28
grazie 1000 ora va
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 29 Nov 2015
  • #29
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.205
207
63
Lombardia
  • 30 Nov 2015
  • #30
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: 30 Nov 2015

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 30 Nov 2015
  • #31
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";
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 30 Nov 2015
  • #32
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.205
207
63
Lombardia
  • 30 Nov 2015
  • #33
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
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 3 Dic 2015
  • #34
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.205
207
63
Lombardia
  • 4 Dic 2015
  • #35
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
Clicca per allargare...
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 14 Dic 2015
  • #36
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: 14 Dic 2015

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 14 Dic 2015
  • #37
ciao,
si, credo che la modifica sia corretta,
ciao
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 19 Dic 2015
  • #38
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 = "intranet@ass5.sanita.fvg.it";
$mail_destinatario = "marco.luigiano@aas2.sanita.fvg.it, intranet@aas2.sanita.fvg.it";




// 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.205
207
63
Lombardia
  • 20 Dic 2015
  • #39
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" }
Clicca per allargare...
 
M

Marco Luigia

Nuovo Utente
16 Mag 2014
28
0
1
  • 22 Dic 2015
  • #40
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 = "intranet@ass5.sanita.fvg.it";
$mail_destinatario = "marco.luigiano@aas2.sanita.fvg.it, intranet@aas2.sanita.fvg.it";




// 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
 
Prec.
  • 1
  • 2
Primo Prec. 2 di 2
Devi accedere o registrarti per poter rispondere.

Discussioni simili

G
[PHP] Creare script di prenotazione con controllo disponibilità.
  • Gabriele_04
  • 3 Set 2021
  • PHP
Risposte
7
Visite
4K
PHP 8 Set 2021
Rikk73
N
Passare array da php a javascript
  • Namaste!
  • 12 Lug 2022
  • PHP
Risposte
5
Visite
3K
PHP 13 Lug 2022
WmbertSea
P
lanciare script asp (o php) da jquery
  • psicona
  • 2 Feb 2022
  • Javascript
Risposte
1
Visite
2K
Javascript 7 Feb 2022
otto9due
M
Collegamento tra form html e script php
  • Mollichina
  • 24 Mag 2021
  • PHP
Risposte
4
Visite
2K
PHP 25 Mag 2021
Mollichina
M
I
Eecuzione di javascript in ciclo foreach php.
  • inftecnica
  • 25 Ott 2020
  • PHP
Risposte
7
Visite
2K
PHP 28 Ott 2020
inftecnica
I
PHP e script generazione file excel
  • felino
  • 3 Lug 2020
  • PHP
Risposte
2
Visite
1K
PHP 3 Lug 2020
felino
P
Passaggio id php a javascript
  • Peterrey76
  • 12 Giu 2020
  • PHP
Risposte
6
Visite
1K
PHP 12 Giu 2020
Peterrey76
P
R
Confrontare il dominio di una mail con una stringa contenente un dominio personalizzato, tutto ciò in php o javascript
  • Rametto
  • 10 Giu 2020
  • PHP
Risposte
0
Visite
600
PHP 10 Giu 2020
Rametto
R
M
Chiamare pagina php da javascript
  • mauriziom79
  • 19 Apr 2020
  • Javascript
Risposte
8
Visite
4K
Javascript 21 Apr 2020
mauriziom79
M
R
Primo script in PHP / CSS
  • robertodimolfetta
  • 17 Mar 2020
  • PHP
Risposte
4
Visite
2K
PHP 17 Mar 2020
robertodimolfetta
R
M
Errore JavaScript per php [objeto HTMLParagraphElement]
  • manoodin
  • 14 Mar 2020
  • PHP
Risposte
0
Visite
1K
PHP 14 Mar 2020
manoodin
M
Script PHP per leggere un file JSON. autenticazione?
  • felino
  • 6 Mar 2020
  • PHP
Risposte
4
Visite
2K
PHP 10 Mar 2020
felino
T
[a pagamento] programmatore PHP che mi aiuti a migrare gli script da vecchia versione PHP a nuova
  • theseo
  • 28 Feb 2020
  • Offerte e Richieste di Lavoro e/o Collaborazione
Risposte
1
Visite
1K
Offerte e Richieste di Lavoro e/o Collaborazione 28 Feb 2020
pippuccio76
P
[PHP] [JAVASCRIPT] Form strano in HTML PHP
  • webmachine
  • 15 Feb 2020
  • PHP
Risposte
1
Visite
1K
PHP 15 Feb 2020
macus_adi
[PHP] Script che funziona in locale e non online
  • Max 1
  • 12 Nov 2019
  • PHP
Risposte
16
Visite
3K
PHP 18 Nov 2019
borgo italia
K
Help: problema con uno script di booking in php!
  • kathe
  • 28 Ott 2019
  • PHP
Risposte
0
Visite
707
PHP 28 Ott 2019
kathe
K
O
[PHP] inviare dati da form e script ajax
  • oxTise\
  • 25 Ott 2019
  • PHP
Risposte
0
Visite
2K
PHP 25 Ott 2019
oxTise\
O
P
[PHP] Aggiungere un mio script a prestashop?
  • Phelps
  • 16 Ott 2019
  • PHP
Risposte
10
Visite
3K
PHP 17 Ott 2019
Phelps
P
D
[Javascript] inserire uno script in un file php
  • diabolik71
  • 27 Set 2019
  • Javascript
Risposte
6
Visite
5K
Javascript 27 Set 2019
diabolik71
D
php testo errato durante la lettura del file txt quando lo script viene eseguito contemporaneamente
  • Gabriele15497514
  • 10 Set 2019
  • PHP
Risposte
3
Visite
1K
PHP 10 Set 2019
macus_adi
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Fare Web
  • PHP
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?