requette sql (mysql) [RESOLU]

requette sql (mysql) [RESOLU] - SQL/NoSQL - Programmation

Marsh Posté le 10-12-2004 à 11:47:13    

Bonsoir,
 
Je suis entrain de developper un intranet en PHP / MySQL au sein de ma boite pour permettre aux utilisateurs de faire des réservations d'ordinateurs portables.
 
Ca fait une semaine que je galère avec les requêtes MySQL.
 
Dans la base de données, j'ai, entre autres 2 champs : Date sortie portable et Date retour portable.
 
Je voudrai écrire une requêtte me permettant de verifier si un portable est libre dans l'intervalle des dates entrées par l'utilisateur.
 
Comment faire SVP ?
 
Bonsoir,
 
J'ai trouvé tout seul comme un grand et comme je ne suis pas rancunier, je vous donne la réponse :
 
$query = "SELECT * FROM emprunt WHERE ('$date_sortie_user' = date_sortie_BD AND '$date_retour_user' = date_retour_BD OR '$date_sortie_user' < date_sortie_BD AND '$date_retour_user' > date_sortie_BD OR '$date_sortie_user' < date_retour_BD AND '$date_retour_user' >= date_retour_BD OR '$date_sortie_user' >= date_sortie_BD AND '$date_retour_user' <= date_retour_BD OR '$date_sortie_user' <= date_sortie_BD AND '$date_retour_user' >= date_retour_BD)";
 
$result = mysql_query($query) or die ("Execution de la requête impossible" );      
       
$num = mysql_num_rows($result);
       
if ($num == 0)  // aucune ligne ne contient ses intervalles donc la resa // peut se faire
 {
//insertion de la réservation  
}
 
else {
//Réservation impossible!  
}
 
 
Merci


Message édité par guiaero le 13-12-2004 à 00:57:22
Reply

Marsh Posté le 10-12-2004 à 11:47:13   

Reply

Marsh Posté le 10-12-2004 à 11:51:26    

select tes_champs  
from ta_table
where ta_date < date_sortie
and ta_date > date_retour
 
je vois pas a difficulté la.

Reply

Marsh Posté le 10-12-2004 à 12:06:01    

Sebastien a écrit :

select tes_champs  
from ta_table
where ta_date < date_sortie
and ta_date > date_retour
 
je vois pas a difficulté la.


 
C plus compliqué que ca. Je te donne un exemple :
 
dans ma base, il y a un 1er enregistrement (reservation)
Date sortie : 2004-12-14 13:00:00 Date retour : 2004-12-17 12:00:00
 
comment tu fais si tu as 8 cas différents je t'en cite que 6 :
 
1er utilisateur : Sa date de sortie 2004-12-09 12:00:00  sa date retour 2004-12-16 14:00:00
 
2e utilisateur : Sa date de sortie 2004-12-16 14:00:00  sa date retour 2004-12-20 10:00:00
 
3e utilisateur : Sa date de sortie 2004-12-15 12:00:00  sa date retour 2004-12-16 14:00:00
 
4e utilisateur : Sa date de sortie 2004-12-09 12:00:00  sa date retour 2004-12-22 10:00:00
 
5e utilisateur : Sa date de sortie 2004-12-09 12:00:00  sa date retour 2004-12-14 13:00:00
 
6e utilisateur : Sa date de sortie 2004-12-17 12:00:00  sa date retour 2004-12-22 10:00:00
 

Reply

Marsh Posté le 10-12-2004 à 12:06:49    

BETWEEN c'est reconnu par MySQL.
 
where tadate between date1 and date2
 
(c'est pas standard d'ailleurs :??:)
 
Edit : essaie de reformater les dates :D et de mieux détailler ta demande, je ne comprends pas trop le truc :o)


Message édité par Fred999 le 10-12-2004 à 12:07:42
Reply

Marsh Posté le 10-12-2004 à 12:08:59    

C'est quoi ca ? des demandes ? ou des enregistrements ?
Moi je vois pas trop la difficulte, premier qui demande, premier servit non ?
 
Si c'est des enregistrements j'espere que tu prends en compte le numero de portable.
mais emme je ne vois pas la difficulte tjs.

Reply

Marsh Posté le 10-12-2004 à 12:12:24    

Je vois pas le problème non plus... :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:28:56    

skeye a écrit :

Je vois pas le problème non plus... :??:


 
Ca ne marche pas j'ai utilisé votre requette et j'ai fais 2 reservation
 
$query1 = "SELECT * FROM emprunt WHERE '$date_sortie_user' < date_sortie_bd AND '$date_retour_user' > date_retour_bd";
 
1ere resa :
 
date sortie : 2004-12-15 13:00:00   date retour : 2004-12-20 12:00:00
ca a marché (c normal pas de resa dans la bd)
 
2e resa :
 
date sortie : 2004-12-10 12:00:00   date retour : 2004-12-16 14:00:00
 
et hop il me l'a prit c'est pas normal car le 1er user prend le portable  le 15/12 et le rend le 20/12 alors que le 2e lui le prend le 16/12 (pendant qu'il est preté au 1er ca ne va pas bien sur ? :??:  
 

Reply

Marsh Posté le 10-12-2004 à 12:35:13    

J'ai rien donné comme requête moi hein...:o
Ce qu'il faut vérifier c'est :
1) la date de début n'est pas entre la date de début et la date de fin d'une réservation existante
2) Idem pour la date de fin.
3) il n'y a pas de réservation dont les dates de début et de fin sont entre les dates de début et de fin demandées.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 12:42:27    

skeye a écrit :

J'ai rien donné comme requête moi hein...:o
Ce qu'il faut vérifier c'est :
1) la date de début n'est pas entre la date de début et la date de fin d'une réservation existante
2) Idem pour la date de fin.
3) il n'y a pas de réservation dont les dates de début et de fin sont entre les dates de début et de fin demandées.


 
Oui ca doit etre un truc ds le genre je vais refflichir si des fois qqun a une idee... Merci d'avance

Reply

Marsh Posté le 10-12-2004 à 13:14:30    

guiaero a écrit :

Oui ca doit etre un truc ds le genre je vais refflichir si des fois qqun a une idee... Merci d'avance


 
Pas d'idée ?

Reply

Marsh Posté le 10-12-2004 à 13:14:30   

Reply

Marsh Posté le 10-12-2004 à 13:15:35    

Si, plein. Mais on t'a donné toutes les pistes dont tu as besoin, et on va pas faire le boulot à ta place...:o


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 10-12-2004 à 14:10:56    

A ouais lol c'est pas la soluce que je t'ai donné mais un debut de logique.
Et je trouve que skeye t'as donné la réponse en entier.

Reply

Sujets relatifs:

Leave a Replay

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