probleme comparaison date

num
Invité n'ayant pas de compte PHPfrance

20 sept. 2007, 16:49

Bonjour,

Bon tout d'abord jai bien regarder les poste et les tuto qui traitais de se sujet mais je vois pas mon probleme.

Voila pour savoir si je dois faire executer ma requete je doi savoir si 2 dates qui sont afficher de ma requete sont superieur ou inferieur a la date du jour.

Donc pour mon code cela donne :
if ((((date($row[1]))<(date($date))) and (((date($row[1]))!=(date('00/00/0000')))) or (((date($row[2]))<(date($date))) and ((((date($row[2]))!=((date('00/00/0000')))))) {
j'ai essayé aussi avec strtotime a la place de date mais cela ne fonctionne pas.

cela ne m'affiche pas le bon resultat.

merci d'avance

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

20 sept. 2007, 17:07

vache.... ça c'est du code lisible, on comprend de suite les conditions à remplir pour rentrer dans le if :)

A noter que le forum FAQ contient des explications détaillées sur les dates :
:arrow: Quelques petites manipulations avec les dates (PHP/MySQL)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
AB
ViPHP | 5818 Messages

20 sept. 2007, 17:16

vache.... ça c'est du code lisible, on comprend de suite les conditions à remplir pour rentrer dans le if :)
ça me rappelle les vieilles macros que je faisais avec Excel :lol:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 sept. 2007, 19:40

Bonsoir.

Alors, j'ai essayé de réindenter ton code pour comprendre ce que tu essayais de faire et :
1/ tu mets beaucoup trop de parenthèses.
(date($row[1]))
et
date($row[1])
sont équivalents

2/ tu as un décalage dans les parenthèses, une bonne indentation le montre clairement
if 
(
	(
		(
			(date($row[1])) < (date($date))
		) and 
		(
			( 
				(date($row[1])) != (date('00/00/0000'))
			)
		) or 
		(
			( 
				(date($row[2])) < (date($date))
			) and 
			(
				(
					(
						(date($row[2]))!=((date('00/00/0000')))
					)
				)
			)
En supprimant toutes les parenthèses inutiles, j'arrive à
if 
(
	(
		( date($row[1]) < date($date) ) 
		and 
		( date($row[1]) != date('00/00/0000') ) 
		or 
		(
			( date($row[2]) < date($date) ) 
			and 
			( date($row[2]) != date('00/00/0000') )
3/ tes conditions sont bizarre
Comment une date peut être vide si elle est inférieure à aujourd'hui ?

Si j'ai bien compris ce que tu cherches à faire, tu devrais avoir un truc du genre

Code : Tout sélectionner

SI ( (row1 < date) et (row1 non renseigné) ) ou ( (row2 < date) et (row2 non renseigné) )
Essaye de partir de mon algo pour reconstruire tes conditions ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

num
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 10:09

SI
(
(row1 < date)
et (row1 non renseigné)
)
ou
(
(row2 < date)
et (row2 non renseigné)
)
c'est bien ça sauf que c'est row1 renseigné et row2 renseigné


quand je met
 ( date($row[1]) != NULL ) 
cela ne marche pas j'ai essayé :
 ( date($row[1]) != '' ) 
y a t il un autre moyen ?

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

25 sept. 2007, 11:21

Hum... et bien évidement, tu as regardé la documentation pour voir comment fonctionnait la fonction date() et quelles paramètes il fallait lui passer, avant de l'utiliser ? :roll:

On peut donc être assuré que ta variable $row[1] contient "Le format de la date désirée, en fonction des options de formattage." et que ton but est de retourner la date du jour formatée selon ce paramètre.
Et cela en dépit de ce que pourrait laisser penser cet usage de la fonction : date('00/00/0000') qui n'a pour effet que de retourner la chaine '00/00/0000' :?:
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

num
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 11:28

la franchement je comprend pas tout.
Mes dates, $row[1], $row[2] et date sont au format jj/mm/aaaa
je ne peux pas comparé plusieurs date a ce format ?

merci

ViPHP
AB
ViPHP | 5818 Messages

25 sept. 2007, 11:38

Vas faire un tour dans la rubrique Tutauriaux de ce site. Ensuite tu cliques sur "liste des tutauriaux" et il doit y avoir quelque chose sur les dates (comparaison etc.)

num
Invité n'ayant pas de compte PHPfrance

25 sept. 2007, 14:06

bon j'ai changer mon code mais ça me donne pas du tout les bonne dates
<?php
			$datenull='00/00/0000';
	  echo $row[1].' date arr '.$row[2]. ' date '.$date.' datenull '.$datenull; 
			$datedem = Array('annee'=>date('Y', strtotime($row[1])), 'mois'=>date('m', strtotime($row[1])), 'jour'=>date('d', strtotime($row[1])));
			$datedem = mktime(0, 0, 0, $datedem['mois'], $datedem['jour'], $datedem['annee']);
			$datedem = date('Y-m-d', $datedem);
			$datearr = Array('annee'=>date('Y', strtotime($row[2])), 'mois'=>date('m', strtotime($row[2])), 'jour'=>date('d', strtotime($row[2])));
			$datearr = mktime(0, 0, 0, $datearr['mois'], $datearr['jour'], $datearr['annee']);
			$datearr = date('Y-m-d', $datearr);
			$datejrs = Array('annee'=>date('Y', strtotime($date)), 'mois'=>date('m', strtotime($date)), 'jour'=>date('d', strtotime($date)));
			$datejrs = mktime(0, 0, 0, $datejrs['mois'], $datejrs['jour'], $datejrs['annee']);
			$datejrs = date('Y-m-d', $datejrs);
			$datejrs = Array('annee'=>date('Y', strtotime($datenull)), 'mois'=>date('m', strtotime($datenull)), 'jour'=>date('d', strtotime($datenull)));
			$datenull = mktime(0, 0, 0, $datenull['mois'], $datenull['jour'], $datenull['annee']);
			$datenull = date('Y-m-d', $datenull);
	  if 
(
    (
        ( $datedem < $datejrs ) 
        and 
        ( $datedem != $datenull ) 
	)
    or 
    (
        ( $datearr < $datejrs ) 
         and 
        ( $datearr != $datenull )
	)
)  { 
	  echo $datedem.' date arr '.$datearr. ' date '.$datejrs.' datenull '.$datenull; ?>
pour mon premier echo cela me donne :
date dem=00/00/0000
datearr=&8/10/2007
date du jour=25/09/2007
date null=00/00/0000

sur mon deuxieme cela me donne
date dem=1999-11-30
date arr=1970-01-01
date du jour=array
date null=1999-11-30


voila
je n'ai pas trouver + d'aide que ça dans les tutos

merci

num
Invité n'ayant pas de compte PHPfrance

26 sept. 2007, 15:07

donc je n'ai pas changer mon code mais mes date sont toute au format aaaa/mm/jj, donc comme ça ça marche mais pas avec les dates 0000/00/00
vous auriez une idee ou faut que je filtre toute mes dates (vu quelle pe être null ou pas)

merci