Geänderte Einträge (German / Deutsch)

by RaHa, Tuesday, December 20, 2016, 20:36 (2655 days ago)

Hallo Auge,
wie bewerkstellige ich es, dass in der Sidebar auch die Einträge angezeigt werden, die nachträglich geändert wurden.
Kann ja nur eine zusätzliche Datenbankabfrage sein ;-)
Kannst Du mir bitte Script und Zeile nennen.

Danke!!

Avatar

Geänderte Einträge

by Auge ⌂, Wednesday, December 21, 2016, 07:40 (2655 days ago) @ RaHa

Hallo

wie bewerkstellige ich es, dass in der Sidebar auch die Einträge angezeigt werden, die nachträglich geändert wurden.

Soll es eine zweite Reihung von zuletzt geänderten Einträgen geben oder sollen sich die zuletzt geänderten Einträge in die Liste der neuesten Einträge einreihen? Ich persönlich halte eine Einreihung in die vorhandene Listung mit einer Markierung "neu/bearbeitet" für sinnvoll.

Kann ja nur eine zusätzliche Datenbankabfrage sein ;-)

Je nachdem, welcher der oben erfragten Fälle zutrifft, gibt es eine weitere oder nur eine geänderte Abfrage.

Kannst Du mir bitte Script und Zeile nennen.

Wenn es soweit ist, ja. Falls es eine Einreihung gibt, gilt es, die vorhandene Abfrage anzupassen. Ich weiß nur noch nicht bis in den letzten Winkel, wie.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Geänderte Einträge

by RaHa, Wednesday, December 21, 2016, 09:02 (2655 days ago) @ Auge
edited by RaHa, Wednesday, December 21, 2016, 09:13

oder sollen sich die zuletzt geänderten Einträge in die Liste der neuesten Einträge einreihen? Ich persönlich halte eine Einreihung in die vorhandene Listung mit einer Markierung "neu/bearbeitet" für sinnvoll.

genau so!

Meine Nutzer sagten, dass abhängig von der Kategorieauswahl nicht alle neusten Einträge (aus allen Kategorien) angezeigt werden. Hat man z.B. die Katagorie "meine Auswahl" bekommt man garnicht mit, dass es in einer anderen Kategorie einen neuen Eintrag gibt.

Inzwischen habe ich die Stelle und das Script gefunden, komme aber immo mit der Syntax der Abfrage nicht zurecht.
Habe es aber schon mal so eingerichtet, dass unbahängig von der Kategorieauswahl immer alle neusten Einträge angezeigt werden, man kann zwar auch die Auswahl "Alle Kategorien" wählen, um zum Ergebnis zu kommen aber so sieht man es sofort.

// latest postings:
if($settings['latest_postings']>0)
 {
 
//print_r($category_ids_query);
//exit;
 
      $latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category
                                              FROM ".$db_settings['forum_table']."
                                              LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id=".$db_settings['forum_table'].".user_id
                                              WHERE spam=0
                                              ORDER BY time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error',mysqli_error($connid));
 
/* rahadeactive
  if($categories == false)
   {
    $latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category
                                            FROM ".$db_settings['forum_table']."
                                            LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id=".$db_settings['forum_table'].".user_id
                                            WHERE spam=0
                                            ORDER BY time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error',mysqli_error($connid));
   }
  else
   {
    if($category>0)
     {
      $latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category
                                              FROM ".$db_settings['forum_table']."
                                              LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id=".$db_settings['forum_table'].".user_id
                                              WHERE spam=0 AND category IN (".$category_ids_query.")
                                              ORDER BY time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error',mysqli_error($connid));
     }
    else
     {
      $latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category
                                              FROM ".$db_settings['forum_table']."
                                              LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id=".$db_settings['forum_table'].".user_id
                                              WHERE spam=0 AND category IN (".$category_ids_query.")
                                              ORDER BY time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error',mysqli_error($connid));
     }
   }
*/
 


Danke!!

Avatar

Geänderte Einträge

by Auge ⌂, Thursday, December 22, 2016, 11:46 (2654 days ago) @ RaHa
edited by Auge, Thursday, December 22, 2016, 11:52

Hallo

Meine Nutzer sagten, dass abhängig von der Kategorieauswahl nicht alle neusten Einträge (aus allen Kategorien) angezeigt werden. Hat man z.B. die Katagorie "meine Auswahl" bekommt man garnicht mit, dass es in einer anderen Kategorie einen neuen Eintrag gibt.

Warum schließen deine Benutzer Kategorien aus ihrer Auswahl aus, wenn sie doch über Aktivitäten in diesen Kategorien informiert sein wollen? Das ist widersinnig. Die Auswahlmöglichkeit ist genau dazu da, die einen nicht interessierenden Kategorien auszuschließen, um nicht mit deren Inhalt belästigt zu werden. Wer das nicht will, soll das nicht nutzen.

Für deine Auflistung geänderter Beiträge in der Liste der letzten Postings habe ich einen neuen Query gebaut, den ich erst einmal in der Rohform zeige.

SELECT
 ent.id,
 entries.pid,
 entries.tid,
 entries.user_id,
 entries.name,
 (SELECT user_name FROM mlf2_userdata WHERE mlf2_userdata.user_id = entries.user_id), entries.name) AS user_name,
 UNIX_TIMESTAMP(entries.TIME) AS TIME,
 UNIX_TIMESTAMP(entries.edited) AS edited,
 UNIX_TIMESTAMP(entries.last_reply) AS last_reply,
 entries.subject,
 entries.category,
 (IF(entries.edited IS NOT NULL, entries.edited, entries.TIME)) AS orderTime
FROM ((
 SELECT id FROM mlf2_entries WHERE spam = 0 ORDER BY TIME DESC LIMIT 6)
  UNION (
 SELECT id FROM mlf2_entries WHERE spam = 0 ORDER BY edited DESC LIMIT 6))
 AS ent
 INNER JOIN mlf2_entries AS entries
  ON ent.id = entries.id
 ORDER BY orderTime DESC
 LIMIT 6

Dabei ist folgendes zu beachten.

1. Der Query berücksichtigt den Fall, dass es keine Kategorien gibt, nicht.
2. Der Query berücksichtigt den Fall, dass der Zugriff auf bestimmte Kategorien auf registrierte Benutzer oder Admins und Mods beschränkt ist, nicht.
3. Der Query berücksichtigt eine durch den Nutzer erfolgte Auswahl von Kategorien (über die wir oben schrieben) nicht.
4. Der Query berücksichtigt die eventuell eingeschaltete Einstellung, dass Bearbeitungen von Beiträgen durch Admins oder Mods nicht öffentlich angezeigt werden, nicht.

Es werden alle neuen oder bearbeiteten Beiträge, die von der eingestellten Begrenzung der Anzeige neuer Postings erfasst werden, angezeigt. Die Sortierung erfolgt zeitlich absteigend, wobei sich bearbeitete Beiträge mit dem Zeitstempel der letzten Bearbeitung in die Liste einreihen. Es gibt in der Liste momentan keine Hervorhebung des Umstands der Bearbeitung. Das sieht man erst, wenn man den Beitrag öffnet. Grundsätzlich ist eine Markierung aber möglich, da der Wert von edited im Falle der Bearbeitung ein Zeitstempel und ohne Bearbeitung NULL ist.

Es wären weitere Optimierungen möglich, da ich bezweifle, dass in diesem Fall (Liste der aktuellesten Beiträge) alle ermittelten Werte des Ergebnisses in der Ausgabe benutzt werden. Zudem kann der Name eines postenden Besuchers gemeinsam mit dem Namen eines registrierten Benutzers im Feld user_name ermittelt werden. Das zu benutzen, erforderte aber größere Änderungen im PHP- und Smarty-Code. Die Baustellen wollte ich jetzt aber nicht auch noch aufmachen.

// latest postings:
if($settings['latest_postings']>0)
{
 
$latest_postings_result = @mysqli_query($connid, "SELECT id, pid, tid, name, user_name, ".$db_settings['forum_table'].".user_id, UNIX_TIMESTAMP(time) AS time, UNIX_TIMESTAMP(time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(last_reply) AS last_reply, subject, category
FROM ".$db_settings['forum_table']."
LEFT JOIN ".$db_settings['userdata_table']." ON ".$db_settings['userdata_table'].".user_id=".$db_settings['forum_table'].".user_id
WHERE spam=0
ORDER BY time DESC LIMIT ".$settings['latest_postings']) or raise_error('database_error',mysqli_error($connid));

Ersetze den vorhandenen Query mit dem folgenden.

$latest_postings_result = @mysqli_query($connid, "SELECT ent.id, entries.pid, entries.tid, entries.user_id, entries.name, (SELECT user_name FROM ".$db_settings['userdata_table']." WHERE ".$db_settings['userdata_table'].".user_id = entries.user_id) AS user_name, UNIX_TIMESTAMP(entries.time) AS time, UNIX_TIMESTAMP(entries.edited) AS edited, UNIX_TIMESTAMP(entries.time + INTERVAL ".intval($time_difference)." MINUTE) AS timestamp, UNIX_TIMESTAMP(entries.last_reply) AS last_reply, entries.subject, entries.category, (IF(entries.edited IS NOT NULL, entries.edited, entries.time)) AS orderTime
FROM ((SELECT id FROM ".$db_settings['forum_table']." WHERE spam = 0 ORDER BY time DESC LIMIT ".$settings['latest_postings'].") UNION (SELECT id FROM ".$db_settings['forum_table']." WHERE spam = 0 ORDER BY edited DESC LIMIT ".$settings['latest_postings'].")) AS ent
INNER JOIN ".$db_settings['forum_table']." AS entries ON ent.id = entries.id
ORDER BY orderTime DESC LIMIT ".$settings['latest_postings']);

Erstelle aber bitte vorher ein Backup der betroffenen Dateien. Ich habe den Query zwar bei mir getestet, dabei aber nicht das Forum sondern phpMyAdmin genutzt. Falls ich beim anpassen der Tabellennamen irgenwo einen Fehler gemacht habe, und du das unbesehen und ohne Backup einbaust, würde dein Forum hinterher nicht mehr funktionieren.

Bitte gib hier eine Rückmeldung über das Ergebnis deiner Arbeiten ab.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

Geänderte Einträge

by RaHa, Thursday, December 22, 2016, 18:05 (2653 days ago) @ Auge

Funktioniert super :-) :-) :-)

Danke!!!!

Meine Nutzer sagten, dass abhängig von der Kategorieauswahl nicht alle neusten Einträge (aus allen Kategorien) angezeigt werden. Hat man z.B. die Katagorie "meine Auswahl" bekommt man garnicht mit, dass es in einer anderen Kategorie einen neuen Eintrag gibt.


Warum schließen deine Benutzer Kategorien aus ihrer Auswahl aus, wenn sie doch über Aktivitäten in diesen Kategorien informiert sein wollen?

Vielleicht weil sie eine Hauptkategorie haben und und allen anderen selten was neu ist, aber wenn, dann möchte man es lesen. Vielleicht wollen sie auch nicht soviel auf dem Bildschirm haben.

Avatar

Geänderte Einträge

by Auge ⌂, Friday, December 23, 2016, 07:52 (2653 days ago) @ RaHa

Hallo

Funktioniert super :-) :-) :-)

Schön. Denke daran, dass die Änderung bei einem Softwareupdate verloren geht und von dir wieder händisch eingepflegt und eventuell auch angepasst werden muss.

Warum schließen deine Benutzer Kategorien aus ihrer Auswahl aus, wenn sie doch über Aktivitäten in diesen Kategorien informiert sein wollen?

Vielleicht weil sie eine Hauptkategorie haben und und allen anderen selten was neu ist, aber wenn, dann möchte man es lesen. Vielleicht wollen sie auch nicht soviel auf dem Bildschirm haben.

Naja, dafür ist die Funktion nicht da. Mit der Auswahl, beziehungsweise mit dem Ausschluss von Kategorien aus der eigenen Auswahl, werden Kategorien für den betreffenden Benutzer stumm geschaltet. Dann sind sie halt auch stumm – und zwar richtig stumm.

Tschö, Auge

--
Trenne niemals Müll, denn er hat nur eine Silbe!

RSS Feed of thread