Moteur de recherche sur dates

Mammouth du PHP | 620 Messages

24 juin 2010, 10:46

oui y'a bien les infos.
pour le moment y'a ca (j'ai fait un export pour vous montrer.
CREATE TABLE `wintitres` (
  `ID` int(6) NOT NULL auto_increment,
  `artist` varchar(50) collate latin1_general_ci NOT NULL,
  `title` varchar(50) collate latin1_general_ci NOT NULL,
  `heure_diff` datetime NOT NULL,
  `duree` time NOT NULL,
  PRIMARY KEY  (`ID`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=4 ;

-- 
-- Contenu de la table `wintitres`
-- 

INSERT INTO `wintitres` VALUES (1, 'Paul', 'A la recherche d''un titre', '2010-06-17 15:15:25', '14:55:40');
INSERT INTO `wintitres` VALUES (2, 'Laetitia', 'Un autre essai', '2010-06-30 16:12:01', '03:54:00');
INSERT INTO `wintitres` VALUES (3, 'Enzo', 'Dure dure d''être un bébé', '2010-07-08 16:32:20', '04:02:00');

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 10:59

c'est pas les bon quotes autour du nom de ta table

c'est
`heure_diff`
et pas
'heure_diff'

Mammouth du PHP | 620 Messages

24 juin 2010, 11:09

ah ok. j'ai modifié ça mais maintenant comme j'ai changé mon formulaire il faut que je decompose la date mais comment je fait ?

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:12

ah ok. j'ai modifié ça mais maintenant comme j'ai changé mon formulaire il faut que je decompose la date mais comment je fait ?

a quoi ressemble :

$date
$heure
$minutes

Mammouth du PHP | 620 Messages

24 juin 2010, 11:27

et bien par exemple sa affiche : Vous recherchez un titre qui est passé le 17/06/2010 vers 15 : 15

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:32

et bien par exemple sa affiche : Vous recherchez un titre qui est passé le 17/06/2010 vers 15 : 15
ca serait mieux si c'était de la forme 17-06-2010 15:15

ducoup si vraiement tu veux garder les /, tu fais un coup de str_replace pour changer les / en -

Mammouth du PHP | 620 Messages

24 juin 2010, 11:35

ok j'ai changé les / par des - j'ai donc :
	echo 'Vous recherchez un titre qui est passé le ' .$date. ' vers ' .$heure. ':' .$minutes;
qui donne :
Vous recherchez un titre qui est passé le 24-06-2010 vers 15:15

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:38

donc
$date_sql = $date . '  '  . $heure .  ' : ' . $minutes;
$requete = "SELECT * FROM wintitres WHERE heure_diff BETWEEN ('$date_sql'  - INTERVAL 30 MINUTE) AND ('$date_sql' + INTERVAL 30 MINUTE)"; 
EDIT : pas sur que ca marche marche en SQL faut que ca soit du format AAAA-MM-JJ et la c'est JJ-MM-AAAA

Mammouth du PHP | 620 Messages

24 juin 2010, 11:45

j'ai toujours aucuns résultat qui s'affiche pour un recherche sur Date 17-06-2010 heure 15 minute 15
alors que dans la base j'ai bien 'Paul' 'A la recherche d'un titre' '2010-06-17 15:15:25' '14:55:40'

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:46

finalement on peux garder les / si tu veux

donc pareil
$date_sql = $date . '  '  . $heure .  ' : ' . $minutes;
ensuite
$requete = "SELECT * FROM wintitres WHERE heure_diff BETWEEN (STR_TO_DATE('$date_sql', '%d/%m/%Y %H:%i')  - INTERVAL 30 MINUTE) AND (STR_TO_DATE('$date_sql', '%d/%m/%Y %H:%i')  + INTERVAL 30 MINUTE)";  

Mammouth du PHP | 620 Messages

24 juin 2010, 11:50

j'ai toujours pas de resultats qui resort. je comprend pas.
l'affichage de la requete donne :
La requete sql : SELECT * FROM wintitres WHERE heure_diff BETWEEN (STR_TO_DATE('17/06/2010 15 : 15', '%d/%m/%Y %H:%i') - INTERVAL 30 MINUTE) AND (STR_TO_DATE('17/06/2010 15 : 15', '%d/%m/%Y %H:%i') + INTERVAL 30 MINUTE) 
un echo de l'affichage de la date $date_sql:
17/06/2010 15 : 15
Modifié en dernier par fabrice88250 le 24 juin 2010, 11:53, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 11:53

essaye dans phpmyadmin, moi j'ai

1 Paul A la recherche d'un titre 2010-06-17 15:15:25 14:55:40

Mammouth du PHP | 620 Messages

24 juin 2010, 11:58

sa marche pas. depuis phpmyadmin j'ai rentré :
SELECT * FROM wintitres WHERE heure_diff BETWEEN (STR_TO_DATE('17/06/2010 15:15', '%d/%m/%Y %H:%i')  - INTERVAL 30 MINUTE) AND (STR_TO_DATE('17/06/2010 15:15', '%d/%m/%Y %H:%i')  + INTERVAL 30 MINUTE)
et j'ai un message d'erreur :
#1305 - FUNCTION dbxxxxxx.STR_TO_DATE does not exist
ma base est hebergé par 1&1 et c'est une version MySQL5.0
Je pensai pas que sa serai si compliqué de faire un systeme de recherche sur des dates.
Peut etre une autre solution ?
Modifié en dernier par fabrice88250 le 24 juin 2010, 13:03, modifié 1 fois.

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:02

bizarre
STR_TO_DATE() est disponible depuis MySQL 4.1.1.

Mammouth du PHP | 620 Messages

24 juin 2010, 13:06

oui j'ai vue ça c pour ca que je precisait ma version.
apres, le fait de mettre de / ou des - m'importe peu. Pensez vous qu'il y ai une autre solution pour que sa fonctionne ?