Php tri de dates avec la fonction explode

ouafasuin Messages postés 26 Statut Membre -  
ouafasuin Messages postés 26 Statut Membre -
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";

?>
Configuration: Windows 2000
Internet Explorer 6.0

1 réponse

  1. croy Messages postés 457 Statut Membre 114
     
    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
    1. ouafasuin Messages postés 26 Statut Membre
       
      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