Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/04/2006, 03h57   #1
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
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 :
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..
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 09h07   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 17h25   #3
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
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 :
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..

:
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 17h58   #4
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je t'ai dit n'imp, désolé...

C'est mieux ainsi (optimise comme tu le veux) :
Code :
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 :
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";
      }
   }
}
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 19h12   #5
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
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 :
Citation:
Plus aucune chambre 2-3 personnes n'est disponible

Plus aucune chambre 1 personne n'est disponible
je n'arrive pas à comprendre pourquoi
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 19h28   #6
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
j'ai pensé à faire un truc comme ça :

Code :
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"; 
      } 
   }
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 19h34   #7
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
ah mais non ça va pas :s
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 21h35   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2006, 22h59   #9
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
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 :
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..
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2006, 18h42   #10
Membre éprouvé
 
Avatar de oceane751
 
Intégrateur Web
Inscription : novembre 2004
Messages : 988
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Intégrateur Web

Informations forums :
Inscription : novembre 2004
Messages : 988
Points : 434
Points : 434
j'ai un autre code
Code :
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
oceane751 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h46.


 
 
 
 
Partenaires

Hébergement Web