|
|
Moderator: Moderatoren
von Holger » Fr 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

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
von oxpus » Fr 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!
-

oxpus
- Administrator

-
- Beiträge: 28979
- Registriert: Mo 27.Jan, 2003 23:13
- Wohnort: Bad Wildungen
-
von Holger » Fr 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

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
von oxpus » Fr 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!
-

oxpus
- Administrator

-
- Beiträge: 28979
- Registriert: Mo 27.Jan, 2003 23:13
- Wohnort: Bad Wildungen
-
von Holger » Mo 20.Feb, 2012 09:50 • Beitrag als PDF
- 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

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
von oxpus » Mo 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!
-

oxpus
- Administrator

-
- Beiträge: 28979
- Registriert: Mo 27.Jan, 2003 23:13
- Wohnort: Bad Wildungen
-
von Holger » Mo 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

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
von oxpus » Mo 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!
-

oxpus
- Administrator

-
- Beiträge: 28979
- Registriert: Mo 27.Jan, 2003 23:13
- Wohnort: Bad Wildungen
-
von Holger » Mo 20.Feb, 2012 16:18 • Beitrag als PDF
Hm, sorry, das habe ich nicht verstanden 
Real men don’t back up, they learn data recovery. ;-) http://www.mysqldumper.de http://www.mysqldumper.se
-
Holger
- User

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
von oxpus » Mo 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!
-

oxpus
- Administrator

-
- Beiträge: 28979
- Registriert: Mo 27.Jan, 2003 23:13
- Wohnort: Bad Wildungen
-
von Holger » Di 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

-
- Beiträge: 2253
- Registriert: Mi 17.Mär, 2004 19:09
Zurück zu phpBB 3 Support Board + Modifikationen
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste
|