Php tri de dates avec la fonction explode

Fermé
ouafasuin Messages postés 26 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 19 novembre 2008 - 16 juil. 2008 à 09:50
ouafasuin Messages postés 26 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 19 novembre 2008 - 16 juil. 2008 à 10:27
Bonjour,

Je veux faire un tri de dates de création de fichiers en php en utilisant la date sous forme de "d/m/Y H:i:s".
J'ai essayé avec la fonction explode() mais je n'ai pas le résultat que je veux. Est-ce que vous pouvez
m'indiquer l'erreur
Voila mon code et merci d'anvance!!

<?php

function cmpdate($var, $var2)
{

$tab_date1= explode(" ",$var);
$part1= $tab_date1[1];
$part2= $tab_date1[2];

$dar1= explode("/",$part1);
$date1 = $dar1[2] . $dar1[1] . $dar1[0];


$tab_date2= explode(" ",$var2);
$part3= $tab_date2[1];
$part4= $tab_date2[2];

$dar2= explode("/",$part1);
$date2 = $dar2[2] . $dar2[1] . $dar2[0];

if ($date1>$date2) return $var;
else if ($date2>$date1) return $var2;

else
{

$far1= explode(":", $part2);
$heure1= $far1[0] . $far1[1] . $far1[2];

$far2= explode(":", $part4);
$heure2= $far2[0] . $far2[1] . $far2[2];

if($heure1>$heure2) return $var;
else return $var2;

}

}
$map1= "26/10/2008 12:50:40";
$map2= "27/09/2008 11:59:12";
$res= cmpdate($map1, $map2);
echo "la date $res est la date superieure";

?>
A voir également:

1 réponse

croy Messages postés 453 Date d'inscription samedi 19 janvier 2008 Statut Membre Dernière intervention 23 octobre 2012 114
16 juil. 2008 à 10:16
Ton erreur provient des indices utilisés pour les tableaux dans la fonction cmpdate. Voir ci-dessous script modifié :
<?php

function cmpdate( $var, $var2 )
	{
	$tab_date1= explode(" ",$var);
	$part1= $tab_date1[0];		//	1 --> 0
	$part2= $tab_date1[1];		//	2 --> 1
	
	$dar1= explode( "/", $part1 );
	$date1 = $dar1[2] . $dar1[1] . $dar1[0];
	
	$tab_date2= explode(" ", $var2);
	$part3= $tab_date2[0];		//	1 --> 0
	$part4= $tab_date2[1];		//	2 --> 1
	
	$dar2= explode("/",$part1);
	$date2 = $dar2[2] . $dar2[1] . $dar2[0];
	
	if ($date1>$date2)
		return $var;
	else if ($date2>$date1)
		return $var2;
	else
		{
		$far1= explode(":", $part2);
		$heure1= $far1[0] . $far1[1] . $far1[2];
		
		$far2= explode(":", $part4);
		$heure2= $far2[0] . $far2[1] . $far2[2];
		
		if($heure1>$heure2)
			return $var;
		else
			return $var2;
		}

	}

$map1= "26/10/2007 12:50:40";
$map2= "27/09/2008 11:59:12";
$res = cmpdate( $map1, $map2 );
echo "la date $res est la date superieure";
?>


Une recommandation, utiliser les fonctions proposées par php pour décoder une date. Le code que tu as fait marche mais est vulnérable à un mauvais formattage des dates $map1 et $map2.
0
ouafasuin Messages postés 26 Date d'inscription mercredi 4 juin 2008 Statut Membre Dernière intervention 19 novembre 2008
16 juil. 2008 à 10:27
merci bcp pour ton aide, mais concernant les fonctions proposées par php pour décoder une date est-ce que tu peux me les indiquer stp, j'ai cherché mais j'ai rien trouvé.
0