Seite 1 von 2

Show usernames starting with a certain letter

Verfasst: 26.01.2003 15:15
von camerino
###############################################
## Mod Title: Show usernames starting with a certain letter
## Mod Version: 1.0
## Author: Vincent Grouls (macology@gmx.net)
## Description: This enables people to search for users that have their name starting
## with a specific letter. You can also choose "others" (meaning non-alpha
## characters), and "all" (the regular list).
##
## This mod is based on phpBB2 v2.0.3, but might work on any phpBB2.
##
##
## Installation Level: Easy
## Installation Time: 4-5 Minutes
## Files To Edit: 3
## memberlist.php
## language/lang_english/lang_main.php
## templates/SubSliver/memberlist_body.tpl
##
## Included Files:
## None
##
## History
## None
##
###############################################
## This MOD is released under the GPL License.
## Intellectual Property is retained by the MOD Author(s) listed above
###############################################

#
#-----[ OPEN ]--------------------------------------------
#
./memberlist.php

#
#-----[ FIND ]--------------------------------------------
#
//
// End session management
//

#
#-----[ AFTER, ADD ]--------------------------------------
#
if(isset($HTTP_POST_VARS['letter']))
{
$by_letter = ($HTTP_POST_VARS['letter']) ? $HTTP_POST_VARS['letter'] : 'all';
}
else if(isset($HTTP_GET_VARS['letter']))
{
$by_letter = ($HTTP_GET_VARS['letter']) ? $HTTP_GET_VARS['letter'] : 'all';
}

#
#-----[ FIND ]--------------------------------------------
#
$order_by = "user_regdate $sort_order LIMIT $start, " . $board_config['topics_per_page'];
}

#
#-----[ AFTER, ADD ]--------------------------------------
#
//
// Set per-letter selection
//
$others_sql = '';
$select_letter = '';
for ($i = 97; $i <= 122; $i++)
{
$others_sql .= " AND username NOT LIKE '" . chr($i) . "%' ";
$select_letter .= ( $by_letter == chr($i) ) ? chr($i) : '<a href="' . append_sid("memberlist.$phpEx?letter=" . chr($i) . "&mode=$mode&order=$sort_order&start=$start") . '">' . chr($i) . '</a>&nbsp;';
}
$select_letter .= ( $by_letter == 'others' ) ? $lang['Others'] : '<a href="' . append_sid("memberlist.$phpEx?letter=others&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['Others'] . '</a>&nbsp;';
$select_letter .= ( $by_letter == 'all' ) ? $lang['All'] : '<a href="' . append_sid("memberlist.$phpEx?letter=all&mode=$mode&order=$sort_order&start=$start") . '">' . $lang['All'] . '</a>';

$template->assign_vars(array(
'L_SORT_PER_LETTER' => $lang['Sort_per_letter'],
'S_LETTER_SELECT' => $select_letter,
'S_LETTER_HIDDEN' => '<input type="hidden" name="letter" value="' . $by_letter . '">')
);

if($by_letter == 'all')
{
$letter_sql = "";
}
else if($by_letter == 'others')
{
$letter_sql = $others_sql;
}
else
{
$letter_sql = " AND username LIKE '$by_letter%' ";
}

#
#-----[ FIND ]--------------------------------------------
#
WHERE user_id <> " . ANONYMOUS . "
ORDER BY $order_by";

#
#-----[ REPLACE WITH ]------------------------------------
#
WHERE user_id <> " . ANONYMOUS . "$letter_sql
ORDER BY $order_by";

#
#-----[ FIND ]--------------------------------------------
#
$sql = "SELECT count(*) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS;

#
#-----[ REPLACE WITH ]------------------------------------
#
$sql = "SELECT count(*) AS total
FROM " . USERS_TABLE . "
WHERE user_id <> " . ANONYMOUS . "$letter_sql";

#
#-----[ FIND ]--------------------------------------------
#
generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order

#
#-----[ AFTER, ADD ]--------------------------------------
#
# (this is before the quote!)
#
&letter=$by_letter

#
#-----[ OPEN ]--------------------------------------------
#
# (make sure to edit this file for every language)
#
./language/lang_english/lang_main.php

#
#-----[ FIND ]--------------------------------------------
#
//
// That's all Folks!
// -------------------------------------------------

#
#-----[ BEFORE, ADD ]-------------------------------------
#
//
// Sort per letter
//
$lang['Sort_per_letter'] = 'Show only usernames starting with';
$lang['Others'] = 'others';
$lang['All'] = 'all';

#
#-----[ OPEN]--------------------------------------------
#
# (make sure to edit this file for every template)
#
./templates/subSilver/memberlist_body.tpl

#
#-----[ FIND ]--------------------------------------------
#
<input type="submit" name="submit" value="{L_SUBMIT}" class="liteoption" />
</span></td>
</tr>

#
#-----[ AFTER, ADD ]--------------------------------------
#
<tr>
<td colspan="2" align="right" nowrap="nowrap"><span class="genmed">{L_SORT_PER_LETTER}:&nbsp;{S_LETTER_SELECT}{S_LETTER_HIDDEN}</span></td>
</tr>

#
#-----[ SAVE & CLOSE ALL FILES ]--------------------------
#

Hallo zusammen,
habe ein Problem mit diesem MOD , er zeigt nur eine Seite an, dass heisst
zum Beispiel " zeige alle Members in alphabetischer Reihenfolge an" ,zeigt er eine von vier Seiten an, wenn ich auf eine andere Seite wechseln will, nix da.

Danke im voraus für die Hilfe

Verfasst: 26.01.2003 19:12
von saerdnaer
url deines boards bitte...

ah

Verfasst: 26.01.2003 19:15
von camerino

Verfasst: 26.01.2003 19:22
von PhilippK
Gibt's auch 'nen Anfangsbuchstaben, wo das Problem auftritt?

Gruß, Philipp

Verfasst: 26.01.2003 19:29
von saerdnaer
@PhilippK: klick einfach mal auf das tutti am schluss... und dann versuch eine seite weiter zu blättern ;-)

@camerino: also zeig mir doch mal die zeile die mit

Code: Alles auswählen

generate_pagination("memberlist.$phpEx
anfängt...

ah

Verfasst: 26.01.2003 19:29
von camerino
Fängt schon bei "tutti" = alle und unten auf der Seite wird angezeigt ,dass 4 vorhanden sind, ich weiss nicht welche Buchstabe dafür reichen würde.

Verfasst: 26.01.2003 19:34
von camerino
Hier die gewünschte Zeile:
$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&&letter=$by_letter,order=$sort_order", $total_members, $board_config['topics_per_page'], $start). '&nbsp;';
Danke für die Hilfe

Re: Show usernames starting with a certain letter

Verfasst: 26.01.2003 19:39
von saerdnaer
du hast nicht genau das gemach was in der anleitung stehn:
#
#-----[ FIND ]--------------------------------------------
#
generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order

#
#-----[ AFTER, ADD ]--------------------------------------
#
# (this is before the quote!)
#
&letter=$by_letter
also musst du jetzt

Code: Alles auswählen

$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&&letter=$by_letter,order=$sort_order", $total_members, $board_config['topics_per_page'], $start). '&nbsp;'; 
durch

Code: Alles auswählen

$pagination = generate_pagination("memberlist.$phpEx?mode=$mode&order=$sort_order&letter=$by_letter", $total_members, $board_config['topics_per_page'], $start). '&nbsp;'; 
dann sollte die sache funktioneren...

ah

Verfasst: 26.01.2003 19:52
von camerino
Bingo....vielen Dank Euch beiden , jetzt funzt es :)

Verfasst: 11.04.2003 19:06
von MacDanEl
Hi der Hack funzt wunderbar,
ich hab nur noch ein kleines kosmetisches Anliegen:
Wenn ich einen Buchstaben ausgewählt habe (z.B. "p"), dann fehlt hinter diesem Buchstaben ein Leerzeichen. Wo muss ich das in den Code einfügen?
Was muss ich als Start und Endwert ins Array reinschreiben um Grossbuchstaben zu bekommen?

Grüße MacDanEl