Alfabetisk sortering (av medlemslistan)

Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på sidan.

Moderatorer: Moderatorgrupp, Supportgrupp

Kategoriregler
Här kan du ställa frågor om problem med och drift av phpBB 3 (3.0.0 eller senare). Det är här du bör skapa en tråd om du har ett problem, vill ställa en fråga och vill ha ett svar. Gäller det något annat, var vänlig bläddra nedåt på forumindex.

Klicka här för att se våra allmänna forumregler.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

Nu har jag tittat i memberlist.php. Här är min lösning på problemet.

Öppna memberlist.php
Leta upp

Kod: Markera allt

$order_by .= $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC');  
ersätt med

Kod: Markera allt

$order_by .= (($sort_key != 'd' && $sort_key != 'm') ? 'LOWER(' : '') . $sort_key_sql[$sort_key] . (($sort_key != 'd') ? ') ' : ' ') . (($sort_dir == 'a' && $sort_key != 'm') ? 'ASC' : 'DESC');
Det hjälper antagligen inte för egna profilfält, men du kan säkert lägga samma fix där dom letas upp.
Senast redigerad av tumba25 den 2009-03-04 12:27, redigerad totalt 1 gång.
Anledning: Fixat en bugg
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Jag tror att din lösning kommer att fungera även för profilfält. Just nu är det dock något fel på din syntax:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /forum/memberlist.php on line 1188

Peter.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

Inget fel med syntaxen. Jag använder exakt samma på två (snart 3) forum, utan några problem. Däremot kan det vara phpbb's php-BBCode som har problem med något. Jag ändrad mitt inlägg så det inte tolkas som php. Prova igen.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Nu fungerar det precis som det ska men jag kan inte se vad du ändrade i ditt inlägg. Märkligt! Den förtydligande förgkodningen är ju borta men jag har svårt att tro att den följde med in i min kod. Nåja, det fungerar ju så jag ska väl inte gräva för djupt i det. :-P

Fixen fungerar precis som jag trodde även för mitt profilfält. Det är implementerat på ett bra sätt med en egen sort_key och egen rad i $sort_key_sql och kommer därför in i SQL-koden via samma $order_by.

Stort tack! Du är en klippa!

Peter.
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Jag har inte testat men jag antar att ÅÄÖ fortfarande kommer i fel ordning och jag antar vidare att det går att åtgärda genom att ändra kollationeringen från uft8_bin till utf8_swedish_ci. Använder phpBB genomgående utf8_bin eller går detta att ställa in någonstans i ACP eller måste jag ändra direkt i databasen?

Peter.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

ÅÄÖ kommer i fel ordning med dom flesta teckentabeller. Det är inte något stort problem tycker jag. Men om du ska ändra så måste du ändra direkt i databasen. Tänk på att ändra headern också. Dessutom förutsätter många funktioner i phpBB att det är utf-8 så jag föreslår att du inte lägger märke till att ä råkar komma före å.

Angående ändringen i mitt inlägg så var det just den förtydligande färgkodningen som ställde till problem.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Marcus
Hedersmedlem
Hedersmedlem
Inlägg: 4321
Blev medlem: 2004-01-07 22:12
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Marcus »

ÅÄÖ ligger i fel ordning i alla teckentabeller.

Alla tecken baserade på A ligger samlade, och den ordningen tar inte hänsyn till att vi i Sverige har två tecken i en viss ordning.

/marcus
Marcus Farrington - Administratör på phpBB Sverige
OBS! På förekommen anledning ges ingen support via PM.

Webb- & Drupalutvecklare på Webbyrå Grebban.
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

tumba25 skrev:Lösningen är nog att betrakta detta som en bugg.
Den är nu rapporterad som Ticket #42085.

Peter.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

Tack för credden.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Tack för lösningen!

Peter.
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Jag har nu märkt att vissa fält inte mår så bra av LOWER() så man måste villkora det till att bara gälla text-fält. Av någon obegriplig anledning blev sortering på antal inlägg helt galet. Kanske returnerar LOWER() inget eller odefinierat svar om man matar den med tal.

Peter.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

Jag sorterar på antal inlägg och reg-datum utan problem med just denna lösning. Fält som bara innehåller siffror passerar lower() utan att ändras.

Det kan varar något med din databas? Vad har du för databas?
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Jag kör på MySQL 5.0.45 och hade inga problem med datumfälten men antal inlägg blev i oordning.
Användarens profilbild
tumba25
Hedersmedlem
Hedersmedlem
Inlägg: 2097
Blev medlem: 2007-04-18 10:38
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av tumba25 »

Jag ser problemet. LOWER() returnerar ju alltid text. Alltså hamnar 18 före 2. Ska ordna en fix för det.
Bild
Developer @ phpBB MOD Team

Behöver du en modifikation skriven/installerad för ditt phpBB-forum? Eller kanske annan specialanpassad kod och/eller en server-administratör? https://tumba25.net/
Användarens profilbild
Michanek
Aktiv medlem
Aktiv medlem
Inlägg: 68
Blev medlem: 2008-12-15 19:54
Svar: 0

Re: Alfabetisk sortering (av medlemslistan)

Inlägg av Michanek »

Min egen lösning är att testa vilket fält som ska sorteras och bara använda LOWER() på de fält som behöver det.

Kod: Markera allt

if ($sort_key == 'b' or $sort_key == 'q')
{
	$order_by .= 'LOWER(' . $sort_key_sql[$sort_key] . ') ' . (($sort_dir == 'a') ? 'ASC' : 'DESC');
}
else
{
	$order_by .= $sort_key_sql[$sort_key] . ' ' . (($sort_dir == 'a') ? 'ASC' : 'DESC');
}
Fält 'q' är ett eget profilfält som är det som jag oftast vill sortera på.

Peter.
Skriv svar

Vilka är online

Användare som besöker denna kategori: 2 och 0 gäster