Moteur de recherche sur dates

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:08

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 ?
oui, t'arranger pour que $date_sql sois du format AAAA-MM-JJ HH:MM:SS :wink:
comme ca pas besion de STR_TO_DATE

Mammouth du PHP | 620 Messages

24 juin 2010, 13:25

ok j'ai fai dans mon formulaire pour avoir le format date Y-m-d:
	<label>Date
	<select name="Date" id="Date">
	<?php for($i = 0; $i <= 30; $i++) { ?> 
	<option value="<?PHP echo date('Y-m-d',strtotime('-'.$i.' days'));?>">
	<?PHP 	echo date('d-m-Y',strtotime('-'.$i.' days'));?>
	</option>
	<?PHP } ?> 
	</select>
	</label>
se qui donne :
Vous recherchez un titre qui est passé le 2010-06-08 vers 16:30

et la requete j'ai remis :
	$requete = "SELECT * FROM wintitres WHERE heure_diff BETWEEN ('$date_sql'  - INTERVAL 30 MINUTE) AND ('$date_sql' + INTERVAL 30 MINUTE)";  	
mais toujours aucuns resultats ne ressort !

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:29

fais un (juste avant ton mysql_query)
echo $requete;
EDIT : et ca c'est pas bon
  <?php for($i = 0; $i <= 30; $i++) { ?>
        <option value="<?PHP echo date('Y-m-d',strtotime('-'.$i.' days'));?>">
y'a pas forcement 30 jours dans 1 mois :wink:

Mammouth du PHP | 620 Messages

24 juin 2010, 13:33

j'ai fait :
    <?PHP 
    $date = $_POST['Date'];
    $heure = $_POST['heure'];
    $minutes = $_POST['minutes'];
	echo 'Vous recherchez un titre qui est passé le ' .$date. ' vers ' .$heure. ':' .$minutes. '<br/>';
	
	$date_sql = $date . '  '  . $heure .  ':' . $minutes;
	echo '$date_sql = ' .$date_sql. '<br/>';
	$requete = "SELECT * FROM wintitres WHERE heure_diff BETWEEN ('$date_sql'  - INTERVAL 30 MINUTE) AND ('$date_sql' + INTERVAL 30 MINUTE)";  	
	echo $requete;
	//requete en fonction de 'heure_diff' qui est au format datetime dans la base de donnée
	mysql_query($requete) or die('Erreur SQL !'.$requete.' '.mysql_error()); 
	
		while($result = mysql_fetch_array($requete))
		{
		echo $result['artist']. ' - ' .$result['title'].' - ' .$result['duree'].'<br/>';
		} ?>
et en resultat j'ai :
Vous recherchez un titre qui est passé le 2010-06-08 vers 16:30
$date_sql = 2010-06-08 16:30
SELECT * FROM wintitres WHERE heure_diff BETWEEN ('2010-06-08 16:30' - INTERVAL 30 MINUTE) AND ('2010-06-08 16:30' + INTERVAL 30 MINUTE)

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:41

t'as rien ce jour la essaye le 2010-06-30 a 16:30

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:43

pour creer ta liste de date fais
$start 	= strtotime('2010-10'); // AAAA-MM
$end 	= strtotime('+1 month', $start);
	
$date   = $start;
	
while($date < $end)
{
    echo date('Y-m-d', $date);		
    $date = strtotime('+1 day', $date);
}

Mammouth du PHP | 620 Messages

24 juin 2010, 13:46

en fait j'ai ajouté des dates pour faire des essais mais même si je prend un date qui est dedans j'ai rien qui sort.

j'ai mis dans la base :
INSERT INTO `wintitres` VALUES (1, 'InfoWeb88', '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-06-08 16:32:20', '04:02:00');
INSERT INTO `wintitres` VALUES (4, 'Marc', 'je suis là', '2010-06-09 16:32:20', '04:02:00');
INSERT INTO `wintitres` VALUES (5, 'Sandrine', 'vive les chats', '2010-06-10 16:32:20', '04:02:00');
INSERT INTO `wintitres` VALUES (6, 'Sylvain', 'j''aime les voiture', '2010-06-11 16:32:20', '04:02:00');
INSERT INTO `wintitres` VALUES (7, 'Vanessa', 'le violet c''est beau', '2010-06-12 16:32:20', '04:02:00');
INSERT INTO `wintitres` VALUES (8, 'Natacha', 'bien le bonjour', '2010-06-13 16:32:20', '04:02:00');

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 13:49

sous phpmyadmin j'ai

Code : Tout sélectionner

3 Enzo Dure dure d'être un bébé 2010-06-08 16:32:20 04:02:00
pour
SELECT * FROM wintitres WHERE heure_diff BETWEEN ('2010-06-08 16:30' - INTERVAL 30 MINUTE) AND ('2010-06-08 16:30' + INTERVAL 30 MINUTE)

Mammouth du PHP | 620 Messages

24 juin 2010, 13:57

oh c'est bon j'ai réécris la requete et sa fonctionne mais je comprend pas pourquoi sa ne fonctionnait pas avant (si vous trouvez se qui était faux avant je veu bien une explication).
j'ai donc réécris comme celà :
	$requete = mysql_query("SELECT * FROM wintitres WHERE heure_diff BETWEEN ('$date_sql'  - INTERVAL 30 MINUTE) AND ('$date_sql' + INTERVAL 30 MINUTE)"); 

		while($result = mysql_fetch_array($requete))
		{
		echo $result['artist']. ' - ' .$result['title'].' - ' .$result['duree'].'<br/>';
		} 
et du coup j'ai les resultats correct qui s'affichent.
Une grand merci a vous !!!!!

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 14:00

cool :D

t'as aussi changé la fonction pour créer ta liste de date ?

Mammouth du PHP | 620 Messages

24 juin 2010, 14:06

Pour la liste de date j'ai fais en sorte d'avoir 30 jours en arrière qui s'affichent dans mon formulaire a partir d'aujourd'hui.
	<label>Date
	<select name="Date" id="Date">
	<?php for($i = 0; $i <= 30; $i++) { ?> 
	<option value="<?PHP echo date('Y-m-d',strtotime('-'.$i.' days'));?>">
	<?PHP 	echo date('d-m-Y',strtotime('-'.$i.' days'));?>
	</option>
	<?PHP } ?> 
	</select>
	</label>

ViPHP
ViPHP | 5462 Messages

24 juin 2010, 14:08

ah oki, je pensais que tu affichais le mois :wink:

petit conseil t'es pas obligé d'utilisé les accolades

tu peux faire
<label>Date
    <select name="Date" id="Date">
        <?php for($i = 0; $i <= 30; $i++): ?>
            <option value="<?php echo date('Y-m-d',strtotime('-'.$i.' days'));?>">
                <?php echo date('d-m-Y',strtotime('-'.$i.' days'));?>
            </option>
        <?php endfor; ?>
    </select>
</label>
EDIT : tu peux aussi afficher ta date du style JJ/MM/AAAA, et dans ton value mettre AAAA-MM-JJ
<option value="<?php echo date('Y-m-d',strtotime('-'.$i.' days'));?>">
        <?php echo date('d/m/Y',strtotime('-'.$i.' days'));?>
</option>