Moteur de recherche sur dates

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Moteur de recherche sur dates

Re: Moteur de recherche sur dates

par stealth35 » 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>

Re: Moteur de recherche sur dates

par fabrice88250 » 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>

Re: Moteur de recherche sur dates

par stealth35 » 24 juin 2010, 14:00

cool :D

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

Re: Moteur de recherche sur dates

par fabrice88250 » 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 !!!!!

Re: Moteur de recherche sur dates

par stealth35 » 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)

Re: Moteur de recherche sur dates

par fabrice88250 » 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');

Re: Moteur de recherche sur dates

par stealth35 » 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);
}

Re: Moteur de recherche sur dates

par stealth35 » 24 juin 2010, 13:41

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

Re: Moteur de recherche sur dates

par fabrice88250 » 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)

Re: Moteur de recherche sur dates

par stealth35 » 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:

Re: Moteur de recherche sur dates

par fabrice88250 » 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 !

Re: Moteur de recherche sur dates

par stealth35 » 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

Re: Moteur de recherche sur dates

par fabrice88250 » 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 ?

Re: Moteur de recherche sur dates

par stealth35 » 24 juin 2010, 13:02

bizarre
STR_TO_DATE() est disponible depuis MySQL 4.1.1.

Re: Moteur de recherche sur dates

par fabrice88250 » 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 ?