Spezielle Sortierung in speziellen Foren

Allgemeiner Support zum phpBB 3 Board und phpBB 3 Modifikationen.
Kein Support für die Download MOD!!
Dafür ist das eigens dafür eingerichtete Entwicklerforum auf http://phpbb3.oxpus.net da oder das Forum für die Version für das phpBB 2!!!

Moderator: Moderatoren

Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Fri 17.Feb, 2012 09:41 • Beitrag als PDF

Hallo,

ich möchte in einigen Foren eine alphabetische Sortierung als Standard haben.
Leider habe ich keinen Mod gefunden, aber dieses Snippet:

Code: Alles auswählen
// Sort topics alphabetically
if ($forum_id == 25)
{
    $sort_by_text = array('t' => $user->lang['TOPIC_TITLE']);
    $sort_by_sql = array('t' => 't.topic_title');
    $sort_dir = 'a';
}


Das soll in viewforum.php eingefügt werden vor:
Code: Alles auswählen
// Limit topics to certain time frame, obtain correct topic count


Also so:
Code: Alles auswählen
// Topic ordering options
$limit_days = array(0 => $user->lang['ALL_TOPICS'], 1 => $user->lang['1_DAY'], 7 => $user->lang['7_DAYS'], 14 => $user->lang['2_WEEKS'], 30 => $user->lang['1_MONTH'], 90 => $user->lang['3_MONTHS'], 180 => $user->lang['6_MONTHS'], 365 => $user->lang['1_YEAR']);

$sort_by_text = array('a' => $user->lang['AUTHOR'], 't' => $user->lang['POST_TIME'], 'r' => $user->lang['REPLIES'], 's' => $user->lang['SUBJECT'], 'v' => $user->lang['VIEWS']);
$sort_by_sql = array('a' => 't.topic_first_poster_name', 't' => 't.topic_last_post_time', 'r' => 't.topic_replies', 's' => 't.topic_title', 'v' => 't.topic_views');

$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir);

// Sort topics alphabetically
if ($forum_id == 25)
{
    $sort_by_text = array('t' => $user->lang['TOPIC_TITLE']);
    $sort_by_sql = array('t' => 't.topic_title');
    $sort_dir = 'a';
}

// Limit topics to certain time frame, obtain correct topic count


Es klappt gut, aber leider generiert es einen SQL-Fehler sobald ich die Sortierung im Seitenfuss ändere.

Wie könnte ich anders den Standard für die Sortierung in einzelnen Foren ändern?

Gruss
Holger
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09

Re: Spezielle Sortierung in speziellen Foren

Beitragvon oxpus » Fri 17.Feb, 2012 10:08 • Beitrag als PDF

Wie lautet denn der Fehler?
Vielleicht kann man darüber den Fehler finden...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!
Benutzeravatar
oxpus
Administrator
Administrator
 
Beiträge: 28981
Registriert: Mon 27.Jan, 2003 23:13
Wohnort: Bad Wildungen

Re: Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Fri 17.Feb, 2012 10:23 • Beitrag als PDF

General Error
SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ASC LIMIT 127' at line 7 [1064]

SQL

SELECT t.topic_id FROM phpbb3_topics t WHERE t.forum_id = 25 AND t.topic_type IN (0, 1) AND t.topic_approved = 1 ORDER BY t.topic_type DESC, ASC LIMIT 127

BACKTRACE

FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 224
CALL: dbal_mysqli->sql_query()

FILE: [ROOT]/includes/db/dbal.php
LINE: 170
CALL: dbal_mysqli->_sql_query_limit()

FILE: [ROOT]/viewforum.php
LINE: 462
CALL: dbal->sql_query_limit()
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09

Re: Spezielle Sortierung in speziellen Foren

Beitragvon oxpus » Fri 17.Feb, 2012 19:48 • Beitrag als PDF

Kannst du dann mal bitte die SQL-Anweisung posten, die in der viewtopic.php vor Zeile 462 steht?
Dort ist eine Variable eingetragen, die zum besagten Zeitpunkt nicht gesetzt ist, so dass der Fehler angezeigt wird...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!
Benutzeravatar
oxpus
Administrator
Administrator
 
Beiträge: 28981
Registriert: Mon 27.Jan, 2003 23:13
Wohnort: Bad Wildungen

Re: Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Mon 20.Feb, 2012 09:50 • Beitrag als PDF

:anbet

Code: Alles auswählen
// Grab just the sorted topic ids
$sql = 'SELECT t.topic_id
   FROM ' . TOPICS_TABLE . " t
   WHERE $sql_where
      AND t.topic_type IN (" . POST_NORMAL . ', ' . POST_STICKY . ")
      $sql_approved
      $sql_limit_time
   ORDER BY t.topic_type " . ((!$store_reverse) ? 'DESC' : 'ASC') . ', ' . $sql_sort_order;
$result = $db->sql_query_limit($sql, $sql_limit, $sql_start);

while ($row = $db->sql_fetchrow($result))
{
   $topic_list[] = (int) $row['topic_id'];
}
$db->sql_freeresult($result);
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09

Re: Spezielle Sortierung in speziellen Foren

Beitragvon oxpus » Mon 20.Feb, 2012 13:24 • Beitrag als PDF

Dort ist $sql_sort_order eingetragen, die du nicht in deinem Code definiert. Die ist dann klar nicht gesetzt und führt dann zum besten Fehler.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!
Benutzeravatar
oxpus
Administrator
Administrator
 
Beiträge: 28981
Registriert: Mon 27.Jan, 2003 23:13
Wohnort: Bad Wildungen

Re: Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Mon 20.Feb, 2012 14:29 • Beitrag als PDF

Sollte das dann so in diesem Stil sein?

Code: Alles auswählen
// Sort topics alphabetically
if ($forum_id == 25)
{
    $sort_by_text = array('t' => $user->lang['TOPIC_TITLE']);
    $sort_by_sql = array('t' => 't.topic_title');
    $sort_dir = 'a';
    $sql_sort_order = 'ASC';
}
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09

Re: Spezielle Sortierung in speziellen Foren

Beitragvon oxpus » Mon 20.Feb, 2012 14:51 • Beitrag als PDF

Schau doch mal in der viewtopic.php nach, was die Variable eigentlich beinhalten soll. Dort wäre doch eigentlich ein weiteres Feld genannt, nach dem sortiert werden soll.
Und genau das willst du ja mit deinem Code ändern.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!
Benutzeravatar
oxpus
Administrator
Administrator
 
Beiträge: 28981
Registriert: Mon 27.Jan, 2003 23:13
Wohnort: Bad Wildungen

Re: Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Mon 20.Feb, 2012 16:18 • Beitrag als PDF

Hm, sorry, das habe ich nicht verstanden :hh:
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09

Re: Spezielle Sortierung in speziellen Foren

Beitragvon oxpus » Mon 20.Feb, 2012 18:07 • Beitrag als PDF

Die Abfrage verwendet $sql_sort_order für die Sortierung nach irgend einem weiteren Feld neben dem Topic-Typ.
Und genau diese Variable hast du nicht in deinem Code verwendet, bzw. gefüllt.
Daher bleibt mit deiner Sortierung das Feld "leer" und die SQL-Anweisung führt zu Fehlern.

Also:
Code: Alles auswählen
if (is_array($sort_by_sql[$sort_key]))
{
   $sql_sort_order = implode(' ' . $direction . ', ', $sort_by_sql[$sort_key]) . ' ' . $direction;
}
else
{
   $sql_sort_order = $sort_by_sql[$sort_key] . ' ' . $direction;
}

So wird die Variable im Original gefüllt.
Mit deinem Code ist dann also etwas nicht in Ordnung, dass weder $direction oder $sort_by_sql korrekt gefüllt sind.
Somit bleibt $sql_sort_order leer und damit ein Fehler im SQL-Statement.

Code: Alles auswählen
$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir);

// Sort topics alphabetically
if ($forum_id == 25)
{
    $sort_by_text = array('t' => $user->lang['TOPIC_TITLE']);
    $sort_by_sql = array('t' => 't.topic_title');
    $sort_dir = 'a';
}

Das hast du so eingetragen.
Dabei ist die Reihenfolge falsch.
Wenn dann so:
Code: Alles auswählen
// Sort topics alphabetically
if ($forum_id == 25)
{
    $sort_by_text = array('t' => $user->lang['TOPIC_TITLE']);
    $sort_by_sql = array('t' => 't.topic_title');
    $sort_dir = 'a';
}

$s_limit_days = $s_sort_key = $s_sort_dir = $u_sort_param = '';
gen_sort_selects($limit_days, $sort_by_text, $sort_days, $sort_key, $sort_dir, $s_limit_days, $s_sort_key, $s_sort_dir, $u_sort_param, $default_sort_days, $default_sort_key, $default_sort_dir);

Denn so werden auch deine Elemente berücksichtigt und nicht mit allen anderen Parametern verwürfelt.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per ICQ, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per ICQ, Email or PM. Each unasked message will be ignored!
Benutzeravatar
oxpus
Administrator
Administrator
 
Beiträge: 28981
Registriert: Mon 27.Jan, 2003 23:13
Wohnort: Bad Wildungen

Re: Spezielle Sortierung in speziellen Foren

Beitragvon Holger » Tue 21.Feb, 2012 09:48 • Beitrag als PDF

Oha, das muss ich mir jetzt mal genau anschauen! Danke!
Real men don’t back up, they learn data recovery. ;-)
http://www.mysqldumper.de
http://www.mysqldumper.se
Holger
User
User
 
Beiträge: 2253
Registriert: Wed 17.Mar, 2004 19:09


Zurück zu phpBB 3 Support Board + Modifikationen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste