Page 1 sur 1

Trie array_multisort

Posté : 11 mai 2012, 11:51
par fabrice88250
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.

Re: Trie array_multisort

Posté : 11 mai 2012, 13:45
par Mazarini
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.

Re: Trie array_multisort

Posté : 11 mai 2012, 15:51
par fabrice88250
pas dans mon xml tout est dans le désordre donc j'en suis toujours au même problème.

Re: Trie array_multisort

Posté : 11 mai 2012, 18:55
par fabrice88250
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