Liste alphabétique utilisateurs [Résolu]

Bonjour,

je souhaite utiliser ce code pour établir une liste alphabetique des membres de mon site.

exemple: afficher les utilisateurs dont les noms commencent par 'a' mais je ne vois pas ou je pourrais mettre cet argument.

<?php
// Compile a list of fields to show.
$fields = array();

$result = db_query('SELECT name , title, type, weight FROM {profile_fields} WHERE visibility = %d ORDER BY category , weight', PROFILE_PUBLIC_LISTINGS);

while ($record = db_fetch_object($result)) {
     
$fields[] = $record;
}

// v.fid = 1 is the include in member gallery checkbox
// If the field contains integer values use ORDER BY ABS(v.value) to force numeric sorting

//Change the 50 to display more or less users per page
$result = pager_query("SELECT u.uid , u.access  FROM {users} u INNER JOIN {profile_values} v ON u.uid = v.uid WHERE v.fid = 1 ORDER BY u.name , v.value ASC ", 20, 0, NULL);

$output = '<div id="profile">';
while (
$account = db_fetch_object($result)) {
$account = user_load(array('uid' => $account->uid));
$profile = _profile_update_user_fields($fields, $account);
$output .= theme('profile_listing', $account, $profile);
}
$output .= '</div>';
$output .= theme('pager', NULL, 20);

return $output;
?>

merci de votre aide

Version de Drupal : 

je ne sais pas si c'est ta demande mais voici le moyen de restreindre a "a" dans ton listing
$result = db_query('SELECT name , title, type, weight FROM {profile_fields} WHERE visibility = %d AND name LIKE "a%" ORDER BY category , weight', PROFILE_PUBLIC_LISTINGS);

AND name LIKE 'a%' <-- tu peux le faire pour toutes les lettres et même le faire en fonction d'un argument dans ton url (c'est ce que tu cherche je suppose)

genre avec une url de ce type : http://monserveur/monSite/?q=maListe/a
tu pourrais récupérer l'argument 2 de ton url avec arg(1) dans ton code et donc faire

$result = db_query('SELECT name , title, type, weight FROM {profile_fields} WHERE visibility = %d AND name LIKE "'.arg(1).'%" ORDER BY category , weight', PROFILE_PUBLIC_LISTINGS);

Richard lascols
www.ideia.fr

Bonjour,

Apparement la modification avec ton code ne change pas la liste. J'ai toujours tous les membres de mon site qui apparaissent dans l'ordre chronologique mais il n'y a pas de entre les noms (commencant par a, b ,. . . )

J'ai suivi tes conseils -> Utilisation des views et toujours le meme probleme - en fait ici la vue affiche bien les utilisateurs mais proportionnellement au contenu créé.
C a dire : exemple un utilisateur(dans l exemple: admin) a créé 5pages de contenu , ma view va afficher 5fois le noeud author name.
J'ai essayé de jouer avec la fonction Distinct mais cela ne fonctionne pas.

voici le code généré par la view:

$view = new stdClass(); $view->name = 'tri_artistes'; $view->description = ''; $view->access = array ( ); $view->view_args_php = ''; $view->page = TRUE; $view->page_title = ''; $view->page_header = ''; $view->page_header_format = '1'; $view->page_footer = ''; $view->page_footer_format = '1'; $view->page_empty = ''; $view->page_empty_format = '1'; $view->page_type = 'table'; $view->url = 'view/profile'; $view->use_pager = TRUE; $view->nodes_per_page = '30'; $view->sort = array ( ); $view->argument = array ( ); $view->field = array ( array ( 'tablename' => 'users', 'field' => 'uid', 'label' => '', ), array ( 'tablename' => 'users', 'field' => 'name', 'label' => '', 'sortable' => '1', 'defaultsort' => 'ASC', ), array ( 'tablename' => 'profile_biographie', 'field' => 'value', 'label' => '', 'sortable' => '1', ), array ( 'tablename' => 'profile_statut', 'field' => 'value', 'label' => '', 'sortable' => '1', ), array ( 'tablename' => 'profile_hypertext', 'field' => 'value', 'label' => '', 'sortable' => '1', ), ); $view->filter = array ( ); $view->exposed_filter = array ( ); $view->requires = array(users, profile_biographie, profile_statut, profile_hypertext); $views[$view->name] = $view;

cf : pieces jointes

en fait j'etais sous drupal 5 donc j'etais obligé de migrer vers la version 6 qui propose ces améliorations. Concernant l'opérateur "starts with" seul il ne fonctionnait pas donc j'ai résolu le problème en ajoutant un champ de texte(qui correspond aux lettres de l'alphabet) dans la conception du profil utilisateur. Avec cette option je peux aisément faire mon tri.

probleme resolu

merci