Bonjour à tous.
Petit exercices de boucle
J'ai 25 chambre repartie de façon identique entre 5 villes donc 5 villes X 5 chambres.

Pour le moment j'arrive à affecter une chambre différente pour des dates et ville identique.
Mais si deux clients veulent louer l'un après l'autre la première chambre n'est pas redevenue disponible.

exemple client 'un' loue la chambre 105 de Albi du 1 au 2 Si le client 'deux' veut louer du 3 au 4 il aura la chambre 104. Alors que la 105 est libre

je pense que la solution ce ferra dans ma seconde boucle ELSEIF mais je n'y arrive pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function verif($name, $choicecity, $datedebut, $datefin){
    $servername = 'localhost';
    $username = 'root';
    $password = '';
    $dbase = 'mabase';
    $today = date("Y-m-d"); 
 
    $chambre=100;
    while(++$chambre <=105){
      $mysqli = new mysqli ('127.0.0.1', 'root','', 'mabase');
      $result = $mysqli->query("SELECT nom, debut, fin, chambre FROM reservation WHERE choicecity ='$choicecity' and chambre='$chambre'");
      $row= $result->fetch_array();
 
      /*echo 'test pour la chambre' . $chambre .'<br>';*/
      if ((!isset ($row ['debut'])) and (!isset ($row ['fin']))) {/* aucune reservation pour cette ville */
        $pdo = new PDO("mysql:host=$servername;dbname=$dbase","$username","$password");                 
        $city = "UPDATE reservation SET debut='$datedebut', fin='$datefin', 
          choicecity='$choicecity', chambre='$chambre' WHERE nom='$name'";            
        $resultcity = $pdo->exec($city);  
      }
      elseif (($datedebut >= ($row ['fin'])) || ($datefin < ($row ['debut'])) ) {
 
        /* la solution est la mais ou ????*';
      } 
      
    }
    if (($datedebut >= ($row ['debut'])) && ($datedebut <= ($row ['fin']))){
      echo 'date de depart pour la ville de '. $choicecity .'déja prise';
    } 
    }
Table reservation:

id creation debut fin choicecity chambre nom mail
16 NULL 30/12/2020 31/12/2020 Albi 105 un un.free.fr
19 NULL 30/12/2020 31/12/2020 Albi 104 deux deux@free.fr
20 NULL 30/12/2020 31/12/2020 Auch 105 trois trois@free.fr
21 NULL 01/01/2021 02/01/2021 Auch 104 quatre quatre@free.fr