Seite 1 von 1
w3concepts.alist.mod4 - Artikel werden doppelt gelistet
Verfasst: So 11. Jul 2004, 18:18
von tsommer
Hallo zusammen,
ich möchte das Modul "alist.mod4" einsetzen, um bei einer Artikelliste auch die Unterkategorien anzuzeigen.
Irgendetwas läuft jedoch schief, denn ich bekomme in der Liste jeden Artikel doppelt angezeigt.
Wenn ich zum Test das Modul "alist.mod3" einsetze werden alle Artikel nur einmal angezeigt.
Ich bin am verzweifeln, denn ich konnte den Fehler im Modul einfach nicht finden.
Hat jemand hierzu eine Idee oder vielleicht das selbe Problem?
Vielen Dank für eure Hilfe,
Thomas Sommer
Verfasst: Fr 23. Jul 2004, 06:46
von emergence
da sollte sich kummer zu wort melden da ich das modul nicht kenne..
Verfasst: Fr 23. Jul 2004, 08:03
von kummer
da bin ich auch schon. sorry for the delay.
ich kann allerdings das problem nicht ohne weiteres reproduzieren. am besten du nimmst mal den query am anfang des moduls (den der ebene -2) und setzt ihn in phpmyadmin ab. dann poste hier mal das resultat. vielleicht sieht man dann etwas mehr.
Verfasst: Fr 23. Jul 2004, 10:07
von tsommer
Hallo Andreas,
leider bin ich mir nicht ganz sicher, welchen Teil der Abfrage ich über phpmyadmin testen soll.
Ich habe jetzt mal folende Abfrage gestartet:
Code: Alles auswählen
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum
FROM {$cfg['tab']['cat']} AS a,
{$cfg['tab']['cat']} AS b,
{$cfg['tab']['cat']} AS c
LEFT JOIN {$cfg['tab']['cat_art']} AS d ON c.idcat = d.idcat
LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
LEFT JOIN {$cfg['tab']['cat_lang']} AS f ON f.idcat = d.idcat
WHERE
(
(
c.parentid = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.parentid = a.idcat
)
OR
(
c.idcat = b.idcat
AND b.idcat = a.idcat
)
)
AND a.idcat = $categorie
AND e.online = 1
AND e.redirect = 0
AND e.external_redirect = 0
AND e.idlang = $lang
$nurstartartikel
ORDER BY e.created DESC
LIMIT $limit, $angezeigte_anzahl
ERGEBNIS:
MySQL meldet:
#1064 - You have an error in your SQL syntax near '[ 'tab'][ 'cat']} AS a, {$cfg[ 'tab'][ 'cat']} AS b, {$cfg[ 'tab'][ 'cat']} AS c' at line 2
Verfasst: Fr 23. Jul 2004, 10:12
von kummer
das wäre schon der richtige query. aber du musst alle variablen von php durch richtige werte ersetzen (aus einem artikel).
das betrifft alle auftreten von $ und geschweiften klammern.
Verfasst: Mi 11. Aug 2004, 15:17
von Zardust
Bei mir ist der Fehler in der artlist.mod4 auch aufgetreten. Ich konnte den Fehler finden nur sind meine Kentnisse zu schwach um ihn schnell einmal selbst zu beheben.
Die Abfrage
Code: Alles auswählen
SELECT f.name, e.pagetitle, c.idcat, d.idart, e.idlang, e.idartlang, e.created, DATE_FORMAT( e.created, '%d.%m.%y' ) AS erstellungsdatum
FROM con_cat AS a, con_cat AS b, con_cat AS c
LEFT JOIN con_cat_art AS d ON c.idcat = d.idcat
LEFT JOIN con_art_lang AS e ON d.idart = e.idart
LEFT JOIN con_cat_lang AS f ON f.idcat = d.idcat
WHERE (
(
c.idcat = b.idcat AND b.idcat = a.idcat
)
) AND a.idcat = 113 AND e.online = 1 AND e.redirect = 0 AND e.external_redirect = 0 AND e.idlang = 1 LIMIT 0, 30
ergibt folgendes
Code: Alles auswählen
name pagetitle idcat idart idlang idartlang created erstellungsdatum
GALLERY Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
FOTOGALERIE Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
PHOTOGALLERY Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
GALLERY Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
GALLERY WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
FOTOGALERIE WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
PHOTOGALLERY WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
GALLERY WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
Ich habe in die Ausgabe noch "e.idlang" eingefügt. Ich verwende bei meiner Seite 4 Sprachen, bekomme aber bei dieser SQL-Syntax ein falsches Ergebnis bei "WHERE e.idlang = 1". In meinen Fall sind die Artikel nicht nur doppelt, sondern vierfach da.
Verfasst: Mi 11. Aug 2004, 16:03
von kummer
einfach nach SELECT ein DISTINCT einfügen sollte das problem lösen.
also: SELECT DISTINCT ...
Verfasst: Mi 11. Aug 2004, 16:13
von Zardust
Danke für die prompte Antwort, leider führt SELECT DISTINCT nicht zum gewünschten Ergebnis. Ich bekommen jetzt 3 anstatt der der zuvor 4 Einträge.
Hier noch das Ergebnis:
Code: Alles auswählen
name pagetitle idcat idart idlang idartlang created erstellungsdatum
GALLERY Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
FOTOGALERIE Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
PHOTOGALLERY Stephansplatz 113 67 1 262 2004-08-10 14:15:00 10.08.04
GALLERY WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
FOTOGALERIE WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
PHOTOGALLERY WCTE Lathi 2004 113 68 1 266 2004-08-11 10:18:22 11.08.04
Verfasst: Mi 11. Aug 2004, 17:22
von Zardust
Ich konnte jetzt das Problem lösen.
Ich habe bei der WHERE eine Zeile mit AND f.idlang = $lang hinzugefügt habe. Danach war DISTINCT auch nicht mehr notwendig.