Willkommen Gast.
Um die volle Funktionalität des Forums nutzen zu können,
müssen Sie sich einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

 
Erweiterte Suche

31.110 Beiträge in 6.475 Themen- von 6.477 Mitglieder - Neuestes Mitglied: Frideborg

03-04-2020 11:04:54
JOOM::GALLERY::FORUMJoomGallery 2.x ACL - ErweiterungenModuleAnzeige von Bilder die noch nicht oder wenig kommentiert wurde
Seiten: [1]
Drucken
Autor Thema: Anzeige von Bilder die noch nicht oder wenig kommentiert wurde  (Gelesen 2122 mal)
0 Mitglieder und 1 Gast betrachten dieses Thema.
fotolehrling
Newbie
*
Offline Offline

Beiträge: 2


WWW
« am: 14-02-2012 00:16:40 »

Hallo Team, Hallo Nutzer,

erst mal Danke für die tolle Arbeit die ihr leistet und dann gleich zu meiner Frage.

Ich betreibe eine kleine FC und möchte Bilder mit wenigen oder keinen Kommentaren anzeigen lassen, es funktioniert ja auch über joomimage über die Einstellung "Anzahl Kommentare aufsteigend", allerdings werden da die gänzlich unkommentierten Bilder ausgeschlossen, ich vermute, weil nur in der j17_joomgalery_comments gelesen wird (j17 weil konvertiert)

ich habe mir in Mysql eine Query zusammengebastelt die mir auch das Ergebnis bringt, das ich möchte. Hier als Beispiel alle Bilder mit weniger als 3 Kommentaren:

SELECT j17_joomgallery.id, Count( j17_joomgallery_comments.cmtpic ) AS anzahl
FROM j17_joomgallery
LEFT JOIN j17_joomgallery_comments ON j17_joomgallery.id = j17_joomgallery_comments.cmtpic
GROUP BY j17_joomgallery.id
HAVING Count( j17_joomgallery_comments.cmtpic ) <3


Aber jetzt kommts :) Wie kann ich das integrieren? oder könnte es so nützlich sein, das ihr das mit einbauen könnt.

Danke im Voraus für Bemühungen und Antworten.

Micha
Gespeichert
aHa
Entwickler-Team
Hero Member
*****
Offline Offline

Beiträge: 2.367


WWW
« Antworten #1 am: 18-02-2012 13:40:35 »

Hallo Micha,
danke für Deine Anregung.
Zitat
...ich vermute, weil nur in der j17_joomgalery_comments gelesen wird...
Ich vermute, wir denken das gleiche. Dein Vorschlag deutet darauf hin.
Es werden in diesem Fall der Sortierung auch die Tabellen der Bilder und der Kategorien hinzugejoined.

Die Abfrage sieht im Prinzip so aus:
Code
SELECT 
p.id AS id, p.catid, p.imgthumbname, p.imgfilename, p.imgtitle,
c.cid AS ccid, c.catpath AS catpath,
co.cmtdate AS cmtdate,
count(co.cmtid) AS cmtcount
FROM `#_joomgallery_comments` co
LEFT JOIN `#_joomgallery` p ON co.cmtpic=p.id
LEFT JOIN `#_joomgallery_catg` c ON c.cid=p.catid
GROUP BY p.id
ORDER BY cmtcount ASC

Wie von Dir vermutet, ist die Tabelle der Kommentare der 'Master', das erste LEFT [OUTER] JOIN ist deshalb auch überflüssig.
Ein normales JOIN würde auch funktionieren.

Anders gesagt, Bilder ohne Kommentare werden nicht berücksichtigt.
Im Gegensatz zu Deiner Lösung mit der Bildertabelle als 'Master' würde ich diese schnelle Lösung vorschlagen.
Nämlich diese per RIGHT JOIN zu verbinden:
Code
SELECT 
p.id AS id, p.catid, p.imgthumbname, p.imgfilename, p.imgtitle,
c.cid AS ccid, c.catpath AS catpath,
co.cmtdate AS cmtdate,
count(co.cmtid) AS cmtcount
FROM `#_joomgallery_comments` co
RIGHT JOIN `#_joomgallery` p ON co.cmtpic=p.id
LEFT JOIN`#_joomgallery_catg` c ON c.cid=p.catid
GROUP BY p.id
ORDER BY cmtcount ASC
In diesem Fall werden alle Bilder berücksichtigt. Wenn kein Kommentar vorhanden ist, werden die Felder für die Kommentare mit NULL gefüllt.

Das funktioniert auch in meinen ersten Tests.
Den Code findest Du in der helper.php des Moduls, im Bereich der Zeilen 402. Suche nach diesem Code:
Code
// *** Assemble the join clauses ***
if($this->cmtTest(1))
{
 $query->join('LEFT',_JOOM_TABLE_IMAGES.' AS p ON co.cmtpic = p.id');
}

und ändere ihn:
Code
// *** Assemble the join clauses ***
if($this->cmtTest(1))
{
 $query->join('RIGHT',_JOOM_TABLE_IMAGES.' AS p ON co.cmtpic = p.id');
}

Nebeneffekt: Die Bilder ohne Kommentare werden nach der id aufsteigend sortiert ausgegeben.
Die ältesten Bilder ohne Kommentare werden also zuerst angezeigt.
Ich hoffe, es hilft ein wenig. Möglicherweise könnte man bei dieser Sortieroption den 'RIGHT JOIN' immer durchführen.

Wahrscheinlich würde dies zu Kosten der DB-Performance gehen, wie auch Deine Lösung.
Immerhin werden jetzt alle Bilder betrachtet.

Aber einen Versuch wäre es wert..
Eine Option 'Zeige Bilder mit weniger als x Kommentaren' halte ich für ein nettes Feature.

Gruß
Andreas
Gespeichert
fotolehrling
Newbie
*
Offline Offline

Beiträge: 2


WWW
« Antworten #2 am: 18-02-2012 23:58:20 »

Hallo Andreas,

Danke für die schnelle und perfekte Hilfe, es funktioniert wie gewünscht.

Gruß

Micha
Gespeichert
Seiten: [1]
Drucken
Gehe zu:  

HOSTED BY SCHWARZKÜNSTLER ®

PROTECTED BY  ZB BLOCK  AND Project Honey Pot
Theme orange-lt created by panic

Bad Behavior has blocked 1832 access attempts in the last 7 days.