Question recherche SQL/PHP

Julien.t
Invité n'ayant pas de compte PHPfrance

30 janv. 2011, 14:13

Bonjour à tous !

J'ai une petite question, sur un problème qui me bloque depuis un certain temps.
Je suis entrain de mettre en place un script de réservation en ligne pour un hôtel.

Coté SQL, j'ai deux tables ;
- Une 'prix' contenant les prix des chambres par période :
ID - DATEDEB - DATEFIN - PRIX1 ( = prix de la première chambre ) - PRIX2 ( = prix de la deuxième chambre )

- Une deuxième table qui contient les réservations.

Ensuite, coté PHP;
Une formulaire de résa classique, avec un input pour la date de début de location et un autre pour la date de fin.

Mes questions sont ;
Tout d'abord, comment faire pour que mon script recherche dans la table SQL 'prix' les dates entrées par le client soient comprises entre les datedeb & datefin de la table, et au final me retourne le prix correspondant ?
( ex. le client choisit une résa du 12/02 au 19/02, et dans ma table 'prix' j'ai : datedeb: 10/02; datefin: 20/02; prix: 400; , alors on affiche 400)

De plus, je souhaiterai, que suivant si le client choisit " Chambre 1 " ou "Chambre 2", le 'PRIX1' ou le 'PRIX2' s'affiche.

Enfin le petit bonus, la cerise sur le gâteau, serait que le prix s'affiche automatiquement après que le client ait entré ses dates, si vous avez une piste je suis plus que preneur ^^


Voilà sur quoi je bloque depuis un certain temps, je ne sais pas trop si il faut agir niveau php, sql, comment agir, sur quoi agir, etc...

J'espère que vous arriverez à m'aider car là je sèche... :/

Merci d'avance pour vos réponses !

ViPHP
xTG
ViPHP | 7331 Messages

30 janv. 2011, 15:10

La sélection des données se fait avec la clause WHERE d'une requête SQL.
SELECT id FROM maTable WHERE dateDebut >= '12/10/2010' AND dateFin <= '31/10/2010'
Pour le tri (prix1, prix2 ou autre) tu peux le faire plus facilement en PHP avec de simples conditions if.
Enfin, pour un affichage instantané il faut passer par de l'Ajax. ;)

Julien.t
Invité n'ayant pas de compte PHPfrance

30 janv. 2011, 17:45

Super, je vais essayer ça je vous tiens au courant ;)

Julien.t
Invité n'ayant pas de compte PHPfrance

30 janv. 2011, 18:38

Alors, j'ai essayer de faire un code tout simple pour tester la requête et apparemment ça ne fonctionne pas, j'ai du faire une erreur :/

Je vous laisse le code ;
$query = "SELECT prix FROM $T_prix WHERE datedeb >= '2011-01-13' AND datefin <= '2011-01-13'";  
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result);

echo $row['prix'];

( nb. : la connexion à la base se fait par "require" d'un fichier au début )

Et sur ma table prix;
ID - datedeb - datefin - prix - prix 2
2 - 2011-01-12 - 2011-01-14 - 240 - 400

Donc logiquement je devrais voir afficher " 240 " alors que là je n'ai rien :/

Julien.t
Invité n'ayant pas de compte PHPfrance

31 janv. 2011, 19:05

Bonjour,
Personne n'aurait une idée d’où peut venir ce problème ?? :/

Julien.t
Invité n'ayant pas de compte PHPfrance

01 févr. 2011, 19:31

Toujours personne ?
Mon problème est si compliqué que ça ? :/
C'est vraiment important, si quelqu'un peut se pencher sur le sujet ça serait super... :/

ViPHP
ViPHP | 5462 Messages

01 févr. 2011, 19:47

les dates dans ta base sont au quel format ? sinon pour c'est BETWEEN qu'il faut utiliser, et il faut toujours tester tes requêtes dans phpmyadmin (ou autre) avant de les mettre dans un code, sinon tu code a l'aveuglette et tu vas jamais t'en sortir