[mySQL] Problème de requête avec count(*) [résolu]

Problème de requête avec count(*) [résolu] [mySQL] - SQL/NoSQL - Programmation

Marsh Posté le 04-01-2003 à 11:48:47    

Bonjour,
 
J'ai un problème avec une requête. La voici :
 
SELECT count(*)
FROM `booking`
WHERE car_model="Peugeot 406"
AND ((start_booking<="2002-01-01" AND end_booking>="2002-01-29" ) OR (start_booking>="2002-01-01" AND start_booking<="2002-01-29" ) OR (end_booking>="2002-01-01" AND end_booking<="2002-01-29" ));
 
Ceci n'est qu'un exemple, mais en gros la requête permet de savoir combien de voitures du type Peugeot 406 sont indisponibles entre les dates du 1er janvier 2002 et 29 janvier 2002 (deux dates entrés par n'importe quel utilisateur).
Je l'ai testé la requête marche parfaitement, mais seul problème je n'arrive pas à stocker le résultat obtenu (par exemple "4", puisqu'il s'agit d'un count(*)) dans une variable. Voici mon script complet :
 
$requete="ma requête vue plus haut"
$nbr_booking=mysql_query($requete,$connect);
echo($nbr_booking);
 
Selon moi le nombre de résultats devraient être contenus dans la variable $nbr_booking non ? Au lieu de cela, l'écho me renvoie : "Resource id #2" quelque soit le résultat !?! :heink:


Message édité par f L Y le 04-01-2003 à 12:42:15
Reply

Marsh Posté le 04-01-2003 à 11:48:47   

Reply

Marsh Posté le 04-01-2003 à 12:17:10    

Code :
  1. SELECT count(*) AS nb_type
  2. FROM `booking`
  3. WHERE car_model="Peugeot 406"
  4. AND ((start_booking<="2002-01-01" AND end_booking>="2002-01-29" ) OR (start_booking>="2002-01-01" AND start_booking<="2002-01-29" ) OR (end_booking>="2002-01-01" AND end_booking<="2002-01-29" ));


 
Puis tu sort le nb_type dans un mysql_fetch_array ou otre :)

Reply

Marsh Posté le 04-01-2003 à 12:36:47    

J'ai suivi ton exemple mais là j'ai un autre problème incompréhensible  :heink:  
 
Voici mon script complet :
 
<?PHP
 
$model="Peugeot 406";
$date_start="2002-01-01";
$date_end="2002-12-01";
 
include ("connexion.php" );
$requete="SELECT count(*) AS nb".
         "FROM `booking`".
         "WHERE car_model=\"$model\"".
         "AND ((start_booking<=\"$date_start\" AND end_booking>=\"$date_end\" ) OR (start_booking>=\"$date_start\" AND start_booking<=\"$date_end\" ) OR (end_booking>=\"$date_start\" AND end_booking<=\"$date_end\" ))";
 
$result=mysql_query($requete,$connect);
$row=mysql_fetch_array($result);
$nb_booking=$row["nb"];
echo($nb_booking);
 
?>
 
Il me retourne comme erreur :
 
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\program files\easyphp\www\easycar\test_booking.php on line 11
 
?!


Message édité par f L Y le 04-01-2003 à 12:37:24
Reply

Marsh Posté le 04-01-2003 à 12:38:21    

"FROM `booking`"


        pk ces '   '?


Message édité par Profil supprimé le 04-01-2003 à 12:38:42
Reply

Marsh Posté le 04-01-2003 à 12:39:08    

a la fin de la requette rajoute : GROUP BY car_model

Reply

Marsh Posté le 04-01-2003 à 12:40:37    

Non c'est bon je viens de comprendre mon erreur...
j'avais juste oublié les quote autour de nb :
 
"SELECT count(*) AS `nb`"
 
Merci à tous :)

Reply

Marsh Posté le 04-01-2003 à 12:41:38    

chacal_one333 a écrit :

"FROM `booking`"


        pk ces '   '?


 
J'ai toujours été obligé d'entourer les noms de tables ou de champs par des quotes sans quoi ça marche pas.

Reply

Marsh Posté le 04-01-2003 à 12:43:58    

f L Y a écrit :


 
J'ai toujours été obligé d'entourer les noms de tables ou de champs par des quotes sans quoi ça marche pas.  

[:cybersonic]

Reply

Marsh Posté le 04-01-2003 à 12:51:15    

Et si tu l'écrit comme ca : :??:
 

Code :
  1. $requete="
  2. SELECT count(*) AS nb
  3. FROM booking
  4. WHERE car_model= '$model'
  5. AND ((start_booking<='$date_start'
  6. AND end_booking>='$date_end')
  7. OR (start_booking>='$date_start'
  8. AND start_booking<='$date_end')
  9. OR (end_booking>='$date_start'
  10. AND end_booking<='$date_end'))";

Reply

Marsh Posté le 04-01-2003 à 13:01:44    

Kyle a écrit :

Et si tu l'écrit comme ca : :??:
 

Code :
  1. $requete="
  2. SELECT count(*) AS nb
  3. FROM booking
  4. WHERE car_model= '$model'
  5. AND ((start_booking<='$date_start'
  6. AND end_booking>='$date_end')
  7. OR (start_booking>='$date_start'
  8. AND start_booking<='$date_end')
  9. OR (end_booking>='$date_start'
  10. AND end_booking<='$date_end'))";




 
Ouais je viens de comprendre... comme ça ça marche, mais comme j'utilise toujours la concaténation pour mieux m'y retrouver là je suis obligé de mettre des quotes.

Reply

Marsh Posté le 04-01-2003 à 13:01:44   

Reply

Marsh Posté le 04-01-2003 à 13:23:29    

f L Y a écrit :


 
Ouais je viens de comprendre... comme ça ça marche, mais comme j'utilise toujours la concaténation pour mieux m'y retrouver là je suis obligé de mettre des quotes.


 
Moi aussi j'utilise la concaténation pour les variables et au final ce me donne ca :
 

Code :
  1. $requete="
  2. SELECT count(*) AS nb
  3. FROM booking
  4. WHERE car_model= '".$model."'
  5. AND ((start_booking<='".$date_start."'
  6. AND end_booking>='".$date_end."')
  7. OR (start_booking>='".$date_start."'
  8. AND start_booking<='".$date_end."')
  9. OR (end_booking>='".$date_start."'
  10. AND end_booking<='".$date_end."'))";

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed