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 :

[SQL] Gérer la disponibilité de plusieurs types de chambres d'hôtels


Sujet :

PHP & Base de données

  1. #1
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut [SQL] Gérer la disponibilité de plusieurs types de chambres d'hôtels
    re bonsoir

    je ne savais pas trop comment expliquer en un titre mon autre soucis.



    j'explique

    l'utilisateur a choisi precedement une date d'arrivée et de départ ainsi qu'un type de chambre (chambre 1 personne, 2-3 personnes..)

    la personne peut choisir 1 chambre 1 personne et 1 chambre 2-3 personnes (par exemple)

    on va partir du cas où il n'y a plus de chambres disponibles.

    donc à partir de ma requete j'affiche un message " plus de chambre 1 personne de disponible " "plus de chambre 2-3 personnes de disponible"

    là ca va
    mais s'il reste des chambres par exemple pour 2-3 personne, j'aimerais qu'il m'affiche juste qu'il n'y a pas de chambre 1 pers de dispo.

    je voudrais que ça m'affiche soit l'un soit l'autre ou soit els 2 en fonction du nbre de chambre dispo.

    voici ce que j'ai délà, en tout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $tab_com = mysql_query("SELECT COUNT(num_chambre) FROM appartenir where num_chambre NOT IN (select num_chambre from reserver where date_arrivee = '".$date."' and date_depart = '".$date1."' ) and num_categorie = '".$personne."' and num_categorie = '".$personne1."' ", $base);
     
    $dispo=mysql_num_rows($tab_com);
     
     
    if($dispo ) 
    {
     echo "Aucune chambre $personne personne de disponible pour cette date";
    }
    $personne = 1
    $personne1 = 2-3

    j'espere que j'ai réussi à me faire comprendre, car il est tôt et j'ai un peu de mal à m'exprimer clairement

    merci beaucoup d'avoir pris le temps de tout lire..

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut


  3. #3
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    ok merci
    mais si dans le cas il n'y aurait plus de chambre dispo pour els chambres 1 et 2-3 personnes?
    dans le cas où l'utilisateur aurait voulu reserver =
    ==> 1 chambre 1 personne
    ==> 1 chambre 2-3 personnes

    je peux faire :
    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
    if($dispo) 
    { 
       if($dispo['num_categorie'] == '1'){ 
          echo "Il n'y a plus aucune chambre 1 personne de disponibles"; 
       } 
       else{ 
          echo "Il y a des chambres pour 1 personne de disponible"; 
       } 
     
    if($dispo['num_categorie'] == '2'){ 
          echo "Il n'y a plus aucune chambre 2-3 personne de disponibles"; 
       } 
       else{ 
          echo "Il y a des chambres pour 2-3 personne de disponible"; 
       } 
    }
    et peut être que le OR dans la requete, il faut l'enlever?
    étant donné que l'utilisateur peut choisir les 2 types de chambres..

    :

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Je t'ai dit n'imp, désolé...

    C'est mieux ainsi (optimise comme tu le veux) :
    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
    SELECT COUNT(num_chambre) AS single
    FROM appartenir
    WHERE num_categorie = '".$personne."'
       AND num_chambre NOT IN (
          SELECT num_chambre
          FROM reserver
          WHERE date_arrivee = '".$date."'
             AND date_depart = '".$date1."' )
    UNION
    SELECT COUNT(num_chambre) AS multiple
    FROM appartenir
    WHERE num_categorie = '".$personne1."'
       AND num_chambre NOT IN (
          SELECT num_chambre
          FROM reserver
          WHERE date_arrivee = '".$date."'
             AND date_depart = '".$date1."' )
    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
    if(empty($dispo)){
       echo "La requête a foiré";
    }
    else{
       if(!empty($dispo['single']) and !empty($dispo['multiple'])){
          echo "Au moins une chambre 1 personne et au moins une chambre de 2-3 personnes sont disponibles";
       }
       else{
          if(empty($dispo['multiple'])){
             echo "Plus aucune chambre 2-3 personnes n'est disponible";
          }
     
          if(empty($dispo['single'])){
             echo "Plus aucune chambre 1 personne n'est disponible";
          }
       }
    }

  5. #5
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    re
    dans ma base de données j'ai mis tous les numeros de chambre dans la table reserver (chambre de type 1 et de type 2-3)
    sauf une chambre de type 1.

    donc il reste une chambre de type 1 qui est diponible.

    mais ça m'affiche quand meme :
    Plus aucune chambre 2-3 personnes n'est disponible

    Plus aucune chambre 1 personne n'est disponible
    je n'arrive pas à comprendre pourquoi

  6. #6
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    j'ai pensé à faire un truc comme ça :

    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
    if(($dispo['single']) != '0')
       {
          echo "Au moins une chambre 1 personne ";
       }
       echo "<br><br>";
          if  (($dispo['multiple']) != '0')
          {
            echo "au moins une chambre de 2-3 personnes est disponible";
       } 
     
       else
       {
          if(($dispo['multiple']) == '0')
          {
             echo "Plus aucune chambre 2-3 personnes n'est disponible"; 
          } 
          echo "<br><br>";
     
          if(($dispo['single']) == '0')
          {
             echo "Plus aucune chambre 1 personne n'est disponible"; 
          } 
       }

  7. #7
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    ah mais non ça va pas :s

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Si tu balances la requête dans phpMyAdmin, que te donne-t-il ?
    Tu devrais avoir systématiquement un tuple composé de deux champs : `single` et `multiple`. Dans ton cas, `single` devrait être égal à 1.


    [Edit] Et flûte, je dis vraiment des bêtises aujourd'hui :/
    Évidemment qu'il ne retournera jamais un seul tuple mais un deux vu qu'il y a UNION...
    Peux-tu faire des sous-requêtes avec ta version de MySQL ? Si non, nous allons le faire en deux requêtes.
    Désolé pour les fausses pistes successives...

  9. #9
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    oui j'ai easyphp 1.8
    mysql 4.1.9

    c'est pas grave si tu te trompes, tu m'aide à eclaircir ce problème et c'est tres gentil

    mais on peux essayer de faire 2 requetes :
    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
     
    $tab_com = mysql_query("SELECT COUNT(num_chambre) FROM appartenir where num_chambre NOT IN (select num_chambre from reserver where date_arrivee = '".$date."' and date_depart = '".$date1."' ) and num_categorie = '".$personne."'  ", $base);
     
    $dispo=mysql_num_rows($tab_com);
     
     
    if($dispo ) 
    {
     echo "il y a des chambres $personne personne de disponible pour cette date";
     echo "<br><br>";
     echo "Aucune chambre $personne personne de disponible pour cette date";
     
     
    $tab_com1 = mysql_query("SELECT COUNT(num_chambre) FROM appartenir where num_chambre NOT IN (select num_chambre from reserver where date_arrivee = '".$date."' and date_depart = '".$date1."' ) num_categorie = '".$personne1."' ", $base);
     
     
    $dispo1=mysql_num_rows($tab_com1);
     
     
    if($dispo1 ) 
    {
     echo "il y a des chambres $personne1 personne de disponible pour cette date";
     echo "<br><br>";
     echo "Aucune chambre $personne1 personne de disponible pour cette date";
    mais le problème c'est que ça va m"afficher un message pour les 2 types de chambres, et c'est embetant dans le cas où le client ne choisi qu'une chambre pour une personne. le message concernant la disponibilité des chambres 2-3 personnes est inutile dans ce cas..

  10. #10
    Membre éprouvé Avatar de oceane751
    Profil pro
    Intégrateur Web
    Inscrit en
    Novembre 2004
    Messages
    1 280
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Intégrateur Web

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 280
    Par défaut
    j'ai un autre 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
     
     
    $tab_com = mysql_query("SELECT num_chambre
    FROM appartenir
    WHERE num_categorie = '".$personne."'
    AND num_chambre NOT IN 
    (
    SELECT num_chambre 
    FROM reserver 
    WHERE date_arrivee = '".$date."' 
    AND date_depart = '".$date1."')");
     
     
    $tab_com1 = mysql_query("SELECT num_chambre
    FROM appartenir
    WHERE num_categorie = '".$personne1."'
    AND num_chambre NOT IN
    (
    SELECT num_chambre 
    FROM reserver
    WHERE date_arrivee = '".$date."' 
    AND date_depart = '".$date1."')");
     
    $dispo=mysql_fetch_row($tab_com);
    $dispo1=mysql_fetch_row($tab_com1);
     
    if($dispo[0] =0 )
    {
    echo " Plus aucune chambre ".$personne." personne n'est disponible ";
    }
    else {
    echo " il y a des chambres ".$personne." personne de libres" ;
    echo"<br><br> ";
    }
     
    echo "<br><br>";
     
     
    if($dispo1[0]=0 )
    { 
    echo " Plus aucune chambre ".$personne1." personne n'est disponible ";
    }
    else {
    echo " il y a des chambres ".$personne1." personne de libres";
    }
    mais ça me met qu'il y a des chambres de disponible alors que dans ma bdd il n'y en a pa :s

    je commence à desesperer

Discussions similaires

  1. Gérer plusieurs types d'affichage d'erreurs
    Par ginkas31 dans le forum JSF
    Réponses: 2
    Dernier message: 27/07/2011, 10h27
  2. [Observateur] Gérer plusieurs événements/ plusieurs types d'observateurs
    Par nanou2002 dans le forum Design Patterns
    Réponses: 1
    Dernier message: 27/10/2009, 10h50
  3. Renvoyer un OUTPUT de plusieurs types
    Par omlip dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 13/08/2004, 10h44
  4. [SQL] supprimer le "not null" à un type
    Par AnestheziE dans le forum SQL
    Réponses: 10
    Dernier message: 27/11/2003, 13h56

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