Condition pour une date dans mysql

Fermé
Lol - 29 déc. 2008 à 22:23
 Lol - 30 déc. 2008 à 15:05
Bonjour,

j'ai le tableau suivant:

`reservation_ID` NUMBER ( 20) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`booking_date`DATE NOT NULL ,
`customer_ID` VARCHAR( 100 ) NOT NULL ,
`room_id` VARCHAR( 100 ) NOT NULL ,
`start_date` DATE NOT NULL ,
`end_date` DATE NOT NULL ,
`smoking allowed` VARCHAR( 10 ) NULL ,
`floor_range` VARCHAR( 100 ) NULL ,
`no_of_beds` INT( 100 ) NULL ,
`no_of_guests` INT( 100 ) NOT NULL ,
`additionnal_guests` VARCHAR( 200 ) NULL,
`cc_number` number ( 16 ) NOT NULL ,
`exp_date ` date ( 100 ) NOT NULL ,
foreign Key (room_ID) references room (room_ID),
foreign Key (customer_ID) references customer(customer_ID));

je voudrais faire en sorte que la start date ne puisse pas etre inferieure a la booking date ( qu'on ne puisse pas reserver une chambre a une date passee)

Quelqu'un sait comment faire svp?

Merci d'avance

3 réponses

Utilisateur anonyme
30 déc. 2008 à 13:33
Oui comme je te l'ai di, perso je pense plutôt que tu devrais faire ces vérif en php avant d'exécuter ta requête (ce qui te permettra en plus d'afficher des messages d'erreurs ;)
1
Merci!

et pour mon type de donnee pour cc_number c'est aussi un truc que je dois regler en PHP ou il y a moyen de regler ca a l'etape mysql?
0
Utilisateur anonyme
30 déc. 2008 à 01:01
Bonsoir

je pense que c'est à toi de le gérer lorsque tu fait tes requetes SQL
0
Bonjour,

ca peut se faire, mais l'idee est de relier ma base de donnee a un site web
Et je voudrais eviter que l'utilisateur puisse reserver une date anterieure a celle ou il fait sa reservation.

Je pense que personne ne ferait un truc pareil consciemment mais ca peut arriver...

J'ai un autre souci dans la ligne CC_number:

je voudrais que Mysql accepte seulement un integer de 16 chiffre.
j'ai essaye avec CHAR, number, INT, ca hne change rien il accepte toujours des 14 ou des 18 chiffres...

Quelqu'un sait comment faire?
0
Je suis en train de me dire il faut peut etre que je l'ecrive en PHP pour y arriver.....
0
Utilisateur anonyme
30 déc. 2008 à 14:43
Tu peut peut être le regler par mysql,

mais attention à ne pas confondre nombre de bits et nombre de chiffre, quand tu vois INT (32) ce n'est pas un chiffre à 32 chiffres, mais un nombre à 32bits ;) (soit 4 octets (4x8))

le mieux est de le faire via php, après ca dépend de pourquoi tu veux 16chiffre maximum, car si c'est un code d'identification par exemple, tu peux le faire avec un VARCHAR (16) ;)
0
En fait je voudrais m'assurer qu'on puisse entrer seulement un no de carte baquaire valide= a 16 chiffres.

du coup j'ai essaye avec char (16), varchar (16), int (16), apparemment c'est faux d'ailleurs-
et puis number (16) je suis meme pas sure que ca existe-

il me semble qu'il y a un moyen de regler ca au niveau mysql mais quoi que j'utilise il accepte n'importe quel no de carte quel que soit le nombre . Simplement il m'affiche un nombre a 10 chiffres a chaque fois

et je viens de me rendre compte que c'est toujours le meme nombre quelque soit ce que j'insere dans ma requete...

au secours!
0