Trier des liens par ordre alphabétique

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Trier des liens par ordre alphabétique

Re: Trier des liens par ordre alphabétique

par sirakawa » 11 août 2013, 20:27

On peut très bien créer une fonction qui trie des données au fur à mesure qu'elle les lit:
Création d'un tableau vide:
$z= array();
Si le nouvel élément est avant le premier ou après le dernier il est ajouté au début (array_unshift()) ou à la fin (array_push), sinon il faut chercher où l'insérer déplacer insérer...

Il y a un moyen en utilisant un tableau dont les clefs sont des chaînes inspirées la CDU: 0.1, 0.11
<
?PHP
$z = array ();
$z['0.1'] = "Chateau";
$z['0.11'] = "Chateaub";
$z['0.01'] = "Aristote";
ksort($z);
print_r($z);
?>
insérer entre 0.1 et 0.11 c'est insérer 0.10, 0.101...

Re: Trier des liens par ordre alphabétique

par Fana » 11 août 2013, 16:18

Tu veux dire la fonction link_to_item?

Re: Trier des liens par ordre alphabétique

par moogli » 11 août 2013, 06:01

Le plus simple étant de trier dans la fonction ;)

Sinon oui tu peux imaginer plein de truc.


@+

Re: Trier des liens par ordre alphabétique

par Fana » 11 août 2013, 04:17

Je vois.

Si je veux trier avant j'ai besoin de revoir tout le code? Si c'est le cas, il faut trier avant le foreach. Mais je trie quoi exactement? Parce que moi ce que je veux trier c'est les liens obtenus.

Est ce qu'on peut par exemple affecter un chaque lien a une variable avant le echo et par la suite faire le 'sort' sur cette variable la?

Merci moogli...

Re: Trier des liens par ordre alphabétique

par moogli » 09 août 2013, 22:24

ah wé c'est un objet que retourne loop() va falloir revoir ton code la tu va pas pouvoir trier, soit tu trie avant soit tu récupère un tableau mais la c'est pas gagné :)


@+

Re: Trier des liens par ordre alphabétique

par Fana » 09 août 2013, 18:22

Merci pour ces précisions moogli. Je n'avais pas pensé a modifié la boucle.

J'ai fais comme tu as dis
<?php $list = loop('item');
sort($list);
foreach($list as $item): ?>

<div class="item hentry">
    

<h2><?php echo link_to_item(metadata('item', array('Dublin Core', 'Title')), array('class'=>'permalink')); ?></h2>
Mais j'ai le message d'erreur suivant : Warning: sort() expects parameter 1 to be array, object given in /path/browse.php on line 30

Re: Trier des liens par ordre alphabétique

par moogli » 08 août 2013, 23:01

commence par sortir ta fonction loop du foreach et tu pourras appliquer le sort sur le résultat.
<?php

$list = loop('item');
sort($list);
foreach($list as $item) {}

?>

@+

Re: Trié des liens par ordre alphabétique

par Fana » 08 août 2013, 20:34

Salut moogli,

En fait j'ai vu la fonction sort et j'ai essayé de la placer un peu partout mais sans résultat.

Je pense que j'ai pas très bien compris son utilisation.

Dois je mettre le sort entre le for each et echo link_to ou après echo link_to?

Les deux options ci dessous ne marchent pas.
<h2><?php echo $link =link_to_item(metadata('item', array('Dublin Core', 'Title')), array('class'=>'permalink'));
sort($link);
 ?></h2>
<h2><?php echo sort array (link_to_item(metadata('item', array('Dublin Core', 'Title')), array('class'=>'permalink')));
sort($link);
 ?></h2>

Re: Trié des liens par ordre alphabétique

par moogli » 08 août 2013, 20:21

salut,

la fonction sort est ton amie.

Globalement php.net est une bonne source d'info :)


@+

Trier des liens par ordre alphabétique

par Fana » 08 août 2013, 20:08

Bonjour à tous,


J'ai une fonction qui me retourne des liens
<?php foreach (loop('items') as $item): ?>
<div class="item hentry">
    

<h2><?php echo link_to_item(metadata('item', array('Dublin Core', 'Title')), array('class'=>'permalink')); ?></h2>
Les liens sont sous la forme auteur, titre, dates. Exemple: Victor Hugo Les Misérables, 1862. ou encore Guy de Maupassant, Une vie, 1883.

Je veux que les liens affichés soient triés par ordre alphabétique.

C'est a dire

Guy de Maupassant, Une vie, 1883.
Victor Hugo Les Misérables, 1862.
etc...

Quel serait le code à rajouter pour réaliser cela?

Merci.