[RISOLTO]Problema gestione prenotazioni

di il
1 risposte

[RISOLTO]Problema gestione prenotazioni

Ciao a tutti,
ho un problema con una funzione per la gestione delle prenotazioni.
La mia funzione riceve come input la data di arrivo e partenza e la tabella corrispondente nel database ha i seguenti campi: id_prenotazione,data arrivo e data partenza.

La mia funzione è la seguente:

public static function ricercaDisponibilità($a,$b)
{
  self::$arrivo = $a;
  self::$partenza = $b;
  
  $connessione = connessioneDB::getInstance();
  $c = $connessione->getConnessione();

  //numero totale di ombrelloni
  $ombrelloni = array();
  for($i=1; $i<=30;$i++)
      {
        $ombrelloni[] = $i;
      }



  $sql = "SELECT * FROM prenotazioni WHERE (:arrivo BETWEEN arrivo AND partenza) OR (:partenza BETWEEN arrivo AND partenza)
                                           OR ((arrivo BETWEEN :arrivo AND :partenza) AND (partenza BETWEEN :arrivo AND :partenza))";
  $risultato = $c->prepare($sql);
  $risultato->bindValue(":arrivo",self::$arrivo);
  $risultato->bindValue(":partenza",self::$partenza);
  $risultato->execute();

  echo  "ombrelloni occupati: <br>";
    foreach ($risultato as $r)
       {
          $occupati[]=$r['numero_ombrellone'];

       }
      print_r($occupati);
       echo " <br>";


  /*----la funzione array_diff confronta due array e ritorna i valori del primo array
  ------che non sono presenti nel secondo array------------------------------*/
  echo "<br> ombrelloni liberi: <br>";

  $liberi = array_diff($ombrelloni,$occupati);
  print_r($liberi);
}

Dalle prove effettuate sembra funzionare tranne in un caso: quando la data di arrivo dell'utente è posteriore a tutte le date di partenza presenti nel DB.
Cioè ipotizziamo che nel DB, tra tutte le prenotazioni, l'ultima data di partenza è il 28 agosto(ultima non nel senso di ultima prenotazione inserita, ma di partenza più lontana), oltre questa data tutti gli ombrelloni sono quindi liberi,
però ottengo questo errore:


ombrelloni occupati:

Notice: Undefined variable: occupati in C:\Users\public_html\progetto7\foundation\Fprenotazioni.php on line 217



ombrelloni liberi:

Notice: Undefined variable: occupati in C:\Users\public_html\progetto7\foundation\Fprenotazioni.php on line 228

Warning: array_diff(): Expected parameter 2 to be an array, null given in C:\Users\Kira\public_html\progetto7\foundation\Fprenotazioni.php on line 228



Se invece inserisco una data di arrivo che precede la data di partenza più lontana, come ad esempio il 25 agosto e ipotizzando che il 28 agosto è sempre l'ultima data di partenza nel DB, il sistema funziona e mi restituisce l'elenco degli ombrelloni occupati e di quelli liberi:



ombrelloni occupati:
Array ( [0] => 8 [1] => 3 [2] => 5 )


ombrelloni liberi:
Array ( [0] => 1 [1] => 2 [3] => 4 [5] => 6 [6] => 7 [8] => 9 [9] => 10 [10] => 11 [11] => 12 [12] => 13 [13] => 14 [14] => 15 [15] => 16 [16] => 17 [17] => 18 [18] => 19 [19] => 20 [20] => 21 [21] => 22 [22] => 23 [23] => 24 [24] => 25 [25] => 26 [26] => 27 [27] => 28 [28] => 29 [29] => 30 )

Non riesco a capire dove sbaglio.

1 Risposte

  • Re: [RISOLTO]Problema gestione prenotazioni

    Ho risolto, il problema dipendeva dal fatto che quando l'array degli ombrelloni occupati era vuoto, la funzione array_diff dava errore perchè uno dei due parametri gli risultava vuoto.
Devi accedere o registrarti per scrivere nel forum
1 risposte