IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

supprimer valeur d'un tableau par les valeurs d'un autre tableau


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut supprimer valeur d'un tableau par les valeurs d'un autre tableau
    Bnojour à tous,

    Voilà mon soucis c'est que j'ai deux tableaux, un contenant le nombre de chambre d'un hôtel $room_available_number et l'autre les chambres réservées $room_occupied_number.

    Je voudrai supprimer les chambre occupé , des chambre disponible de l'hôtel, pour pouvoir donner la chambre qui n'est pas occupé, et si il y en a plusieurs faire juste un random pour attribué une chambre aléatoirement ou dire "toute les chambre sont indisponible".

    Voici mon code

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    $sql='SELECT DISTINCT number FROM rooms AS o 
                    INNER JOIN resorts AS r 
                    INNER JOIN bookings AS b
                    ON b.resort_id=o.resort_id
                    WHERE b.arrival_date <= :arrival_date AND b.departure_date <= :departure_date AND b.resort_id = :resort_id ';
     
                $stmnt = $dbh->prepare($sql);
                $valueArrival = htmlspecialchars($_POST['arrival']);
                $valueDeparture = htmlspecialchars($_POST['departure']);
                $valueResortId = htmlspecialchars($_POST['resort']);
                $stmnt->bindParam(':arrival_date',  $valueArrival);
                $stmnt->bindParam(':departure_date', $valueDeparture);
                $stmnt->bindParam(':resort_id',$valueResortId);
                $stmnt->execute();
                $result = $stmnt->fetchAll(PDO::FETCH_ASSOC);
                var_dump($result);
                foreach($result AS $id)
                {
     
                    foreach($id AS $key => $value)
                    {
                        $room_occupied_number[] =$value;
                    }
                }
                var_dump($result);
                var_dump($room_occupied_number);
     
                $sql = 'SELECT number FROM rooms AS o
                        INNER JOIN resorts AS r
                        ON r.id=o.resort_id
                        WHERE r.id= :resort_id ';
                $stmnt = $dbh->prepare($sql);
                $valueResortId = htmlspecialchars($_POST['resort']);
                $stmnt->bindParam(':resort_id',$valueResortId);
                $stmnt->execute();
                $result = $stmnt->fetchAll(PDO::FETCH_ASSOC);
                var_dump($result);
                foreach($result AS $id)
                {
     
                    foreach($id AS $key => $value)
                    {
                        $room_available_number[] =$value;
                    }
                }
            var_dump(in_array($room_occupied_number,$room_available_number));

    C'est juste la dernière ligne de code qui me pose problème je sais pas quoi écrire.

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    quelle est la structure des deux tableaux ? tu peux nous montrer ce que ça donne le var_dump ?

  3. #3
    Membre émérite
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    433
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 433
    Par défaut
    Bonjour,

    Sauf erreur de ma part, tu devrais pouvoir utiliser array_diff pour récupérer les numéros de chambres disponibles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $room_occupied_number = [3,4,5];
    $room_available_number = [1,2,3,4,5,6];
     
    print_r(array_diff($room_available_number, $room_occupied_number)); // 1, 2, 6
    Néanmoins puisque tu récupères déjà les numéros des chambres occupées dans ta première requête sql, tu pourrais aussi utiliser ces numéros avec une clause NOT IN (...) dans ta 2e requête sql pour récupérer directement les numéros des chambres disponibles.

    Bonne journée,

  4. #4
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Nom : table_resort.jpg
Affichages : 202
Taille : 602,2 KoNom : table_rooms.jpg
Affichages : 209
Taille : 619,6 KoNom : table-bookings.jpg
Affichages : 216
Taille : 441,6 Ko

    Je vais essayé de mettre dans une seul requête le résultat

  5. #5
    Membre averti Avatar de XAVIERV
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2013
    Messages : 53
    Par défaut
    Je vous avoue que j'ai du mal à la construire

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 511
    Par défaut
    Bonjour,

    Avant tout, il faut d'abord vérifier les données s'ils sont correctes ou pas, car je vois que les room_id 1 et 2 de bookings n'existent pas dans la colonne id de la table rooms, j'imagine que c'est la clé étrangère qui relie les deux tables non ?

    Il vaut mieux éviter les réponses par des images, et donner plutôt le code sql à l'intérieur de [code]/*code sql....*/[/code], ça nous facilite un peu la tâche pour pouvoir t'aider..., nous sommes des fainéants

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 171
    Par défaut
    Bonjour

    Moi dans mes BDD je mets toujours un enum ('Y','N') que j'intitule "libre" et dans ma requête, je sélectionne que ce qui est libres et du coup jamais de soucis de savoir si cela est pris ou non.
    Que ce soit pour une flotte de véhicules ou de clés ou de chambres ou de tout ce qui te chante, le principe reste le même.

    Bon courage

Discussions similaires

  1. [PowerShell] Création d'un tableau et remplir une colonne par les valeurs d'un fichier
    Par Francky_bullet dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 22/03/2018, 14h14
  2. Réponses: 3
    Dernier message: 30/11/2009, 10h36
  3. Réponses: 1
    Dernier message: 16/01/2009, 05h41
  4. supprimer valeur par defaut
    Par subak dans le forum Oracle
    Réponses: 4
    Dernier message: 19/02/2007, 09h26
  5. [C#] Trier une Hashtable par les valeurs
    Par Joad dans le forum ASP.NET
    Réponses: 4
    Dernier message: 25/04/2005, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo