Clause where sur une différence de date ?

Eléphanteau du PHP | 25 Messages

08 août 2012, 08:28

Bonjour,

Sur un moteur de recherche, je comptabilise le mots clefs recherchés pour y afficher le top des mots-clefs.

Donc, je souhaiterais "UPDATER" que les mots clefs qui n'on pas été recherché les 2 dernières minutes... c'est à dire qui si le mot clef à été recherché il y a moins de deux minutes,
l'update ne doit pas se faire... (pour le moment l'update se fait dans tous les cars..)

Je pense qu'il faudrait une clause sur le where qui indique que si la date de l'instant à moins de 2 minutes de différence avec la date de la bd (champ 'time')

Je sais pas comment faire.... J'ai regardé la fonction date_diff mais j'ai capitulé..

mon champs 'time' est ainsi : 2012-08-06 22:04:36

$selectKeyword = "SELECT * FROM motclefs WHERE keyword = '$keywordClean'";
		IF(mysql_fetch_row(mysql_query($selectKeyword)) === false) {
		$keywordQuery = sprintf("INSERT INTO `motclefs` (`keyword`, `count`, `time`, `valide`, `orig`, `hot`) VALUES ('%s', '1', NOW(), '1', '', '$hot')", mysql_real_escape_string($keywordClean));
		mysql_query($keywordQuery); 
		} 

// ajouter la clause where sur cette requête ??
else {
		$keywordQuery = sprintf("UPDATE `motclefs` SET `count` = `count` + 1, time = NOW() WHERE keyword = '%s'", mysql_real_escape_string($keywordClean));
		mysql_query($keywordQuery);
		} 
Avez-vous une idée ?
D'avance merci et bonne journée
Yule

ViPHP
ViPHP | 2577 Messages

08 août 2012, 10:37

tu peux faire une comparaison avec ADDTIME(date(), "00:02:00.000000")
Pour contrôle ajoute ADDTIME(date(), "00:02:00.000000") dans les résultats affiché pour tester.

Eléphanteau du PHP | 25 Messages

08 août 2012, 13:39

Re,

Ok avec php 5.3 je peux utilser ceci
<?php
$debut = new DateTime('2012-08-08 13:04:36'); 
$fin = new DateTime("now");
$interval = $debut->diff($fin);
$z = $interval->format('%i');
echo"$z";
// $z me donne la différence en minute
?>
Mais comment l'intégrer dans ma requête "update" , à savoir que je peux updater uniquement si $z est = ou supérieur à 2 ?

D'avance merci
Yule

ViPHP
ViPHP | 2577 Messages

08 août 2012, 16:01

En fait je pensais utiliser ADDTIME(now(), "00:02:00.000000") dans la clause where pour faire une comparaison avec la date de ta table - j'ai remplacé date() par now().

Fais select now(),ADDTIME(now(), "00:02:00.000000") from une_table limit 1 dans phpmyadmin pour valider les fonctions utiliser avec de mettre ca sans une clause where.