Seite 1 von 1

Problem w3concepts_alist_v1 - doppelte Anzeige

Verfasst: So 24. Jul 2005, 16:12
von master111
PROBLEM GELÖST!!! Die Sprachen waren Schuld. Danke für den Tipp.

Hallo,

ich habe w3concepts_alist_v1 mit Contenido 4.4.5 laufen.

Doch leider werden die Artikel immer doppelt angezeigt. Warum??

BSP: http://www.malteser-graefelfing.de (im unteren Teil)

Modul output:

Code: Alles auswählen

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts_alist_v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-05-2004
* Modified    :     06-05-2004
************************************************/

    // konfiguration

    $categorie = "CMS_VALUE[0]";

    $angezeigte_anzahl = "CMS_VALUE[1]";
    if ($angezeigte_anzahl == '') $angezeigte_anzahl = 10;

    $startartikel = "CMS_VALUE[2]";
    if ($startartikel == '') $startartikel = false;

    $subheadline = "CMS_VALUE[3]";
    if ($subheadline == '') $subheadline = 200;

    $navigationslink['previous'] = "CMS_VALUE[4]";
    if ($navigationslink['previous'] == '') $navigationslink['previous'] = '[:: rückwärts ]';

    $navigationslink['next'] = "CMS_VALUE[5]";
    if ($navigationslink['next'] == '') $navigationslink['next'] = '[ vorwärts ::]';

    $ebene = "CMS_VALUE[6]";

    $limit = (isset($_GET['displaylimit']) && $_GET['displaylimit'] > 0)?($_GET['displaylimit']):(0);

    $db = new DB_Contenido;
    $db2 = new DB_Contenido;

    // wenn startartikel true ist, werden die startartikel dargestellt, sonst nicht
    $nurstartartikel = ($startartikel)?(''):('AND d.is_start = 0');

    // liest die anzahl betroffener artikel aus der datenbank
    switch ($ebene) {
        case -2:
            $sql_1 = "
                SELECT count(*) AS anzahl
                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
                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
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT f.name, 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 c.idcat = f.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
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                ";
            break;
        case -1:
            $sql_1 = "
                SELECT count(*) AS anzahl
                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 b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            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
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT f.name, 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 c.idcat = f.idcat
                WHERE
                    (
                        (
                            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
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
        case 0:
            $sql_1 = "
                SELECT count(*) AS anzahl
                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 b.idcat = d.idcat
                LEFT JOIN {$cfg['tab']['art_lang']} AS e ON d.idart = e.idart
                WHERE
                    (
                        (
                            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
                    $nurstartartikel
                ";
            $sql_2 = "
                SELECT f.name, 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.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
                    $nurstartartikel
                ORDER BY e.created DESC
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
    }

    $db->query($sql_1);
    $db->next_record();
    $anzahl_artikel = $db->f("anzahl");

    $db->query($sql_2);

    echo '<table width="396" border="0" align="center" cellpadding="0" cellspacing="0">';

    while ($db->next_record()) {
       
        $sql = "
            SELECT value FROM {$cfg['tab']['content']}
            WHERE
            idartlang = ".$db->f("idartlang")."
            AND idtype = 1
            ORDER BY typeid ASC
            ";

        $db2->query($sql);
        $db2->next_record();

        $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=".$db->f("idcat")."&idart=".$db->f("idart"));

/* URSPRÜNGLICH:<td width=\"290\" style=\"padding-top: 2px; padding-bottom: 2px; padding-left: 2px; padding-right: 2px;\">•• ".$db->f('name')." <br> */


	  echo "<tr valign=\"top\" class=\"content_main\">       
          <td width=\"369\">

            <img src=\"images/symbols/pfeil_art_liste.gif\" width=\"13\" height=\"10\" border=\"0\">	<a href=\"$link\" class=\"link_menue\" title=\"".$db->f('name')."\">".strip_tags(urldecode($db2->f("value")))."</a></td></tr>";



        // echo "<tr><td class=\"artlist_headline\"><a href=\"$link\" class=\"artlist_headlinelink\">".urldecode($db2->f("value"))." (".$db->f('name').")</a></td>";
        // echo "<td class=\"artlist_date\">".$db->f("erstellungsdatum")."</td></tr>";

        $db2->next_record();

        // die subheadline auf die gewünschte länge reduzieren (trennung nur
        // nach bzw. vor einem ganzen wort
        if (strlen($db2->f("value")) > $subheadline) {
            $newsubheadline = '';
            $worte = explode (" ",strip_tags(urldecode($db2->f("value"))));
            $zulang = false;
            foreach ($worte as $wort) {
                if (strlen($newsubheadline." ".$wort) >= $subheadline) $zulang = true;
                $newsubheadline = (!$zulang)?($newsubheadline." ".$wort):($newsubheadline);
            }
            $newsubheadline .= "";     // $newsubheadline .= "...";
        } else {
            $newsubheadline = strip_tags(urldecode($db2->f("value")));
        }


	 /* echo "<tr valign=\"top\" class=\"content_main\">
          <td colspan=\"0\" style=\"padding-top: 2px; padding-bottom: 10px; padding-left: 2px; padding-right: 2px; border-width:0px; border-color:#CC0033; border-bottom-style:none; border-left-style:none; border-top-style:none; border-right-style:none;\">$newsubheadline</td>
        </tr>"; */




        // echo "<tr><td class=\"content_main\" colspan=\"2\">$newsubheadline</td></tr>";

    }

    echo '</table>';

/*
    if ($limit > 0 || $anzahl_artikel > $limit + $angezeigte_anzahl) {
        echo '<table cellpadding="0" cellspacing="0" style="width:100%"><tr>';
        if ($limit > 0) {
            $displaylimit = ($limit - $angezeigte_anzahl >= 0)?($limit - $angezeigte_anzahl):(0);
            echo "<td style=\"text-align:left\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['previous']}</a></td>";
        } else {
            echo '<td>&nbsp;</td>';
        }
        if ($anzahl_artikel > $limit + $angezeigte_anzahl) {
            $displaylimit = $limit + $angezeigte_anzahl;
            echo "<td style=\"text-align:right\"><a href=\"".$sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat&idart=$idart&displaylimit=$displaylimit")."\">{$navigationslink['next']}</a></td>";
        } else {
            echo '<td>&nbsp;</td>';
        }
        echo '</tr></table>';
        echo '</p>';
    } */


?>
Vielen Dank!!

DoMi[/url]

Verfasst: Mo 25. Jul 2005, 20:42
von emergence
@kummer
immer diese komplizierten queries...

was soll bitte das query

Code: Alles auswählen

SELECT count(*) AS anzahl ...
bringen ?

keine tipps möglich?

Verfasst: Do 28. Jul 2005, 15:32
von master111
hi,

wisst ihr auch nicht was da los ist oder muss ich noch angaben liefern? welche?

vielen dank!!!
DoMi

Verfasst: Do 28. Jul 2005, 16:08
von emergence
sorry in diesem fall kann ich dir leider nicht helfen...
ich verwende die artikellisten leider nicht...

Verfasst: Fr 29. Jul 2005, 07:24
von kummer
emergence hat geschrieben:@kummer
immer diese komplizierten queries...

was soll bitte das query

Code: Alles auswählen

SELECT count(*) AS anzahl ...
bringen ?
damit wird die anzahl rückgabewerte ermittelt. das ist nötig für das blättern, da die datenbankklasse von contenido über die anzahl der rückgabewerte keine auskunft gibt. mindestens meines wissens. deshalb muss der query zweimal abgesetzt werden:

* einmal für die anzahl records herauszufinden
* und einmal für die daten dann tatsächlich zu erhalten

Re: keine tipps möglich?

Verfasst: Fr 29. Jul 2005, 07:26
von kummer
master111 hat geschrieben:wisst ihr auch nicht was da los ist oder muss ich noch angaben liefern? welche?
hast du mehr als eine sprache in verwendung? oder eventuell mehrere mandanten?

mandanten

Verfasst: Fr 29. Jul 2005, 12:20
von master111
ja es sind 2 mandanten im einsatz. liegt es daran? wie muss das angepasst werden?

schönen dank!!
DoMi

Re: keine tipps möglich?

Verfasst: Fr 7. Apr 2006, 08:42
von ViktorQ
kummer hat geschrieben:
master111 hat geschrieben:wisst ihr auch nicht was da los ist oder muss ich noch angaben liefern? welche?
hast du mehr als eine sprache in verwendung? oder eventuell mehrere mandanten?
Hallo kummer, ich habe das selbe Problem. jedoch mit 2 Sprachen und einem Mandanten. habe das Aktuellste Modul (w3concepts.alist.mod4) von deiner Seite eingebaut, jedoch ohne weiteren Erfolg.

Ich habe schon mehrere Forenbeiträge durchgeschaut und es kamm nur immer "ich hab das mit der Multilang hinbekommen" aber es schreibt niemand wie, und was sein Problem war. Vieleicht kannst du mir ja weiter Helfen oder die jenigen die es hinbekommen haben.

MfG
ViktorQ