Encore une comparaison de date

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 : Encore une comparaison de date

par Florent » 29 juil. 2006, 15:50

Merci pour l'info, je vais regerder ça.

par Truc » 29 juil. 2006, 14:58

Le résultat est celui attendu donc ça parait correct. :)
Toutefois le timestamp du jour s'obtient aussi par time() tout simplement.

par Florent » 29 juil. 2006, 13:30

A force de faire des essais dans tous les sens j'ai viré le mysql_fetch_array()

Bon voilà c'est fait.

J'ai donc le mktime d'aujourd'hui, celui de la date d'inscription, j'ai fais une soustraction des deux que je divise par 86400 pour avoir le nombre de jour.
Comme ceci :
$r = mysql_fetch_array($rep);
	$inscription = $r['date'];
		
	$d = explode("-", $inscription);
	
	$resultat = mktime(0, 0, 0, $d[1], $d[2], $d[0]);
	echo $resultat.'<br>';
	
	/* On crée un timestamp de la date en cours */
	$maintenant = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
	echo $maintenant.'<br>';
	
	// 86400 s/j
	$diff = intval(($maintenant - $resultat)/86400) ;
	echo $diff;
J'obtiens 132 jours pour la date du 2006-03-18

J'espère juste que le principe utilisé est bon.
Si vous me confirmez ça, je met "résolu" et vous remercie beaucoup de votre aide et patiente avec ces questions basiques.

par Truc » 29 juil. 2006, 11:46

Tu as oublié une étape après l'exécution... la lecture avec un mysql_result() ou mysql_fetch_assoc() ou autre.

par Florent » 29 juil. 2006, 10:48

Salut
C'est le "explode" que je ne connaissais pas. Et j'en ai compris le principe.
$sql = "SELECT la_date FROM membre WHERE login='$login' ";
	$rep = mysql_query($sql);
	$inscription = $rep['la_date'];
		
	$d = explode("-", $inscription);
	
	echo $d[0] . '<br />';
	echo $d[1] . '<br />';
	echo $d[2] . '<br />';
	$resultat = mktime(0, 0, 0, $d[1], $d[2], $d[0]);
	echo $resultat;
La, je bloque car mon array avec mes echos ne m'affichent rien, je n'ai que $resultat qui donne -1

Dans ma table ma date est bien de ce style : 2006-03-31
Donc avec $d[0] je devrais avoir 2006 mais suite à mon echo il n'y a rien, donc le problème semble venir d'avant, mais je cherche....

par Cyrano » 28 juil. 2006, 20:08

Première chose, "date" est un mot réservé en SQL, l'utiliser pour nommer un champ est une mauvaise idée.

Ceci dit, une fois la date récupérée, il faut en extraire les éléments pour créer un nouveau mktime. Le séparateur dans la date au format SQL est en principe le "-" et tu as donc des dates qui sont de la forme 2006-07-29 : avec explode(), tu peux avoir chaque élément:
$d = explode("-", $inscription);
Tu sais donc maintenant que le jour correspond à $d[2]. le mois à $d[1] et l'année à $d[0].

Je te laisse continuer, tu devrais pas avoir trop de mal en partant de là.

Encore une comparaison de date

par Florent » 28 juil. 2006, 19:34

Bonjour
Mon but est une fois la date d'inscription lue, dire : "Vous êtes inscrit depuis x jours".
// je crée un timestamp de la date en cours 
$maintenant = mktime(0, 0, 0, date("m"), date("d"), date("Y"));

// prendre date dans la table
$sql = "SELECT date FROM membre WHERE login='$login' ";
$rep = mysql_query($sql);
$inscription = $rep['date'];
Le problème c'est que je n'arrive pas à comparer $maintenant et $inscription.
J'ai donc fait mktime avec $maintenant mais avec la date sortie de la table, je ne vois pas trop ?

Une petite aide serait bienvenue. Merci d'avance.