Trie array_multisort

Mammouth du PHP | 620 Messages

11 mai 2012, 11:51

Bonjour,
je récupère des infos (actualités) depuis un xml externe à mon site.
J'arrive bien à afficher les infos qui sont dans le xml mais mon soucis est que je voudrai faire un tri par ordre croissant sur le date de "debut" afin d'avoir les actus chronologique et c'est la que je bloque depuis plusieurs jours.

voici mon code actuel :
foreach ($itemList as $item) 
{

    $titre = $item->getElementsByTagName('NOM');
	$titre = $titre->item(0)->nodeValue;

    $commune = $item->getElementsByTagName('ADRPROD_LIBELLE_COMMUNE');
	$commune = $commune->item(0)->nodeValue;

	$debut = $item->getElementsByTagName('DATE_DEBUT');
	$debut = $debut->item(0)->nodeValue;
	
    $fin = $item->getElementsByTagName('DATE_FIN');
	$fin = $fin->item(0)->nodeValue;
	
	$tel = $item->getElementsByTagName('ADRPROD_TEL');
	$tel = $tel->item(0)->nodeValue;
	
	$lien = $item->getElementsByTagName('ADRPROD_URL');
	$lien = $lien->item(0)->nodeValue;
	
	$mail = $item->getElementsByTagName('ADRPROD_EMAIL');
	$mail = $mail->item(0)->nodeValue;
	
	$desc = $item->getElementsByTagName('COMMENTAIRE');
	$desc = $desc->item(0)->nodeValue;
	
	$artitre = array($titre);
	$arcommune = array($commune);
	$ardebut = array($debut);
	$arfin = array($fin);
	$artel = array($tel);
	$arlien = array($lien);
	$armail = array($mail);
	$ardescription = array($desc);
	
	array_multisort($artitre, $arcommune, $ardebut, $arfin, $artel, $arlien, $armail, $ardescription);
		echo '<br/>---------------------------------------------------<br/>';
		$commune = implode("", $arcommune);
		echo $commune.' : ';
		$titre = implode("", $artitre);
		echo $titre.'<br/>';
		$debut = implode("", $ardebut);
		echo $debut.'<br/>';
		$fin = implode("", $arfin);
		echo $fin.'<br/>';
		$tel = implode("", $artel);
		echo $tel.'<br/>';
		$lien = implode("", $arlien);
		echo $lien.'<br/>';
		$mail = implode("", $armail);
		echo $mail.'<br/>';
		$description = implode("", $ardescription);
		echo $description.'<br/>';


}
dans array_multisort il semble d’après la doc que l'on peut faire ce genre de trie mais rien ne fonctionne chez moi.
j'ai essayé (c'est peut être là que je me trompe)
array_multisort($artitre, $arcommune, $ardebut, SORT_ASC, $arfin, $artel, $arlien, $armail, $ardescription);
et le résultat final ne change pas. Pas de trie.

ViPHP
ViPHP | 2577 Messages

11 mai 2012, 13:45

Bonjour,

En général, les enregistrements sont par date décroissante.
Lors de la lecture, tu stockes les enregistrements dans un tableau et tu relis le tableau à l'envers pour l'affichage.

Mammouth du PHP | 620 Messages

11 mai 2012, 15:51

pas dans mon xml tout est dans le désordre donc j'en suis toujours au même problème.

Mammouth du PHP | 620 Messages

11 mai 2012, 18:55

rebonjour,
j'ai essayé de faire également un trie par ordre alphabétique sur le nom e communes afin de voir si sa fonctionnait mais aucun trie ne fonctionne.

j'ai essayé sa :
foreach ($itemList as $item) 
{


    $titre = $item->getElementsByTagName('NOM');
	$titre = $titre->item(0)->nodeValue;

    $commune = $item->getElementsByTagName('ADRPROD_LIBELLE_COMMUNE');
	$commune = $commune->item(0)->nodeValue;

	$debut = $item->getElementsByTagName('DATE_DEBUT');
	$debut = $debut->item(0)->nodeValue;
	
    $fin = $item->getElementsByTagName('DATE_FIN');
	$fin = $fin->item(0)->nodeValue;
	
	$tel = $item->getElementsByTagName('ADRPROD_TEL');
	$tel = $tel->item(0)->nodeValue;
	
	$lien = $item->getElementsByTagName('ADRPROD_URL');
	$lien = $lien->item(0)->nodeValue;
	
	$mail = $item->getElementsByTagName('ADRPROD_EMAIL');
	$mail = $mail->item(0)->nodeValue;
	
	$desc = $item->getElementsByTagName('COMMENTAIRE');
	$desc = $desc->item(0)->nodeValue;

	$artitre = array($titre);
	$arcommune = array($commune);
	$ardebut = array($debut);
	$arfin = array($fin);
	$artel = array($tel);
	$arlien = array($lien);
	$armail = array($mail);
	$ardescription = array($desc);
	

    array_multisort(array_map('strtolower', $arcommune), SORT_ASC, $artitre,  $ardebut, $arfin, $artel, $arlien, $armail, $ardescription);
	
		echo '<br/>---------------------------------------------------<br/>';
		$commune = implode("", $arcommune);
		echo $commune.' : ';
		$titre = implode("", $artitre);
		echo $titre.'<br/>';
		$debut = implode("", $ardebut);
		echo $debut.'<br/>';
		$fin = implode("", $arfin);
		echo $fin.'<br/>';
		$tel = implode("", $artel);
		echo $tel.'<br/>';
		$lien = implode("", $arlien);
		echo $lien.'<br/>';
		$mail = implode("", $armail);
		echo $mail.'<br/>';
		$description = implode("", $ardescription);
		echo $description.'<br/>';

		 
}
mais toujours le même résultat. la demande de trie n'est pas prise en compte