Artikelliste alphabetisch

Gesperrt
evok
Beiträge: 19
Registriert: Mo 21. Jun 2004, 03:45
Kontaktdaten:

Artikelliste alphabetisch

Beitrag von evok »

Hallo,

Kann mir jemand sagen, was ich ändern muß um die Artikelliste von kummer "w3concepts_alist" zu einer alphabetisch geordneten Ausgabe zu überreden? Da scheinen ja noch andere Änderungen als bei der mitgelieferten Artikellisten-Version nötig zu sein. Ich seh da nicht ganz durch, muß es aber für nen Lexikon auf die Reihe bekommen :(
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Du hast den Link zum Modul nicht angegeben, und ich habe jetzt keine Lust, danach zu suchen. Ich habe aber an anderer Stelle (http://www.contenido.de/forum/viewtopic ... phabetisch) angegeben, wie fuer eine andere Liste die SQL-Anweisung geaendert werden muss. So aehnlich wird's bei Dir auch sein, vielleicht genau so. Nur wie gesagt, ohne das Modul zu kennen kann ich Dir auch nicht die genaue Anweisung sagen, sorry.

Gruss
Christa
evok
Beiträge: 19
Registriert: Mo 21. Jun 2004, 03:45
Kontaktdaten:

Beitrag von evok »

Hallo Halchteranerin,

Danke. Aber genau nach den Zeilen in diesem Thread habe ich bei dem modul von kummer ja auch gesucht. Leider erfolglos :( Deswegen frage ich ja auch hier nach.

Der Link zu dem Modul welches ich nutze:
http://www.contenido.de/front_dev/uploa ... ist_v1.txt

Würde mich freuen, wenn Du mir helfen könntest.
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Haettest Du gleich den Link mit angegeben, haette es im Forum zwei Postings weniger gegeben. :wink:

Es ist zu kompliziert, zu erklaeren, was alles geaendert werden muss, deswegen poste ich Dir gleich das geaenderte Modul. Es reicht in diesem Fall nicht aus, die Angabe bei ORDER BY zu aendern. Ich hab's aber nicht getestet und nur auf die Schnelle geaendert, also melde Dich bitte nochmal, falls es nicht gleich klappt.

Gruss
Christa

EDIT: es haette doch gereicht, das ORDER BY zu aendern, ich habe nicht darauf geachtet, dass das Erstellungsdatum mit ausgegeben wird. Hier also die richtige Version:

Code: Alles auswählen

Modulname    : w3concepts_alist
Beschreibung : 
w3concepts_alist erstellt eine Artikelliste mit dem Titel, der Headline sowie der
Subheadline der selektierten Artikel. Der Anwender hat folgende Einstellungsmöglichkeiten:

- Kategorie, die angezeigt werden soll
- Anzahl Artikel, die je Seite angezeigt werden sollen
- Startartikel mit anzeigen oder ausblenden
- Anzahl angezeigte Zeichen der Subheadline (Trennung erfolgt vor dem Wort, das nicht mehr dargestellt werden kann)
- Text, der für den Previous-Link angezeigt werden soll (kann auch eine Graphik sein)
- Text, der für den Next-Link angezeigt werden soll (kann auch eine Graphik sein)
- Anzahl zu berücksichtigende Ebenen
  (0 = nur gewählte Kategorie, -1 = gewählte Kategorie sowie enthaltene Kategorien, -2 = gewählte Kategorie sowie
   enthaltene Kategorien und deren Subkategorien.)


C-Version    : 4.4.0



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


$selected = "CMS_VALUE[0]";

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\"><tr valign=\"top\"><td>Kategorie wählen:</td><td><select name=\"CMS_VAR[0]\">";

if($selected!="0" && $selected!=""){
    echo"<option value=\"0\">--- kein ---</option>";
} else {
    echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>";
}

$sql = "
    SELECT a.idcat, a.level, c.name
    FROM {$cfg['tab']['cat_tree']} AS a,
         {$cfg['tab']['cat']} AS b,
         {$cfg['tab']['cat_lang']} AS c
    WHERE
        a.idcat = b.idcat
        AND b.idcat = c.idcat
        AND c.idlang='$lang'
        AND b.idclient='$client'
        AND c.visible = 1
    ORDER BY a.idtree
    ";

$db->query($sql);

while ($db->next_record()) {
    $spaces = "|";
    $levels = $db->f("level");
    for ($i = 0; $i < $levels; $i ++) {
        $spaces = $spaces . "--";
    }
    $spaces .= ">";

    if ($selected == $db->f("idcat")) {
        echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
    } else {
        echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>";
    }
}

echo "</select></td></tr>";

echo "<tr><td>Anzahl Artikel je Seite:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\" size=\"3\" /></td>";

echo "<tr><td>Startartikel anzeigen?</td>";
$startartikel = "CMS_VALUE[2]";
if ($startartikel != '') {
    echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\" checked=\"checked\"/></td>";
} else {
    echo "<td><input type=\"checkbox\" name=\"CMS_VAR[2]\" value=\"true\" size=\"3\"/></td>";
}

echo "<tr><td>Anzahl angezeigte Zeichen der Subheadline:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[3]\" value=\"CMS_VALUE[3]\" size=\"5\" /></td>";

echo "<tr><td>Text für Previous-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[4]\" value=\"CMS_VALUE[4]\" size=\"15\" /></td>";

echo "<tr><td>Text für Next-Link:</td>";
echo "<td><input type=\"text\" name=\"CMS_VAR[5]\" value=\"CMS_VALUE[5]\" size=\"15\" /></td>";

echo "<tr><td>Artikel anzeigen bis:</td>";
echo "<td><select name=\"CMS_VAR[6]\">";
$ebene = "CMS_VALUE[6]";
for ($i=0;$i>-3;$i--) {
    if ($i == $ebene) {
        echo"<option value=\"$i\" selected=\"selected\">Ebene $i</option>";
    } else {
        echo"<option value=\"$i\">Ebene $i</option>";
    }
}

echo "</table>";



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

<?php
/***********************************************
* CONTENIDO MODUL - OUTPUT
*
* Modulname   :     w3concepts_alist_v1
* Author      :     Andreas Kummer
* Copyright   :     mumprecht & kummer w3concepts
* Created     :     06-05-2004
* Modified    :     27-06-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 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
                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.title 
                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 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
                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.title
                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 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
                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.title
                LIMIT $limit, $angezeigte_anzahl
                    ";
            break;
    }

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

    $db->query($sql_2);

    echo '<p><table cellpadding="0" cellspacing="0" style="width:100%">';

    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"));

        echo "<tr><td class=\"artlist_headline\"><a href=\"$link\" class=\"artlist_headlinelink\">".urldecode($db2->f("value"))."</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 .= "...";
        } else {
            $newsubheadline = strip_tags(urldecode($db2->f("value")));
        }

        echo "<tr><td class=\"artlist_subheadline\" 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></p>';
    }
?>
Zuletzt geändert von Halchteranerin am So 27. Jun 2004, 23:00, insgesamt 1-mal geändert.
evok
Beiträge: 19
Registriert: Mo 21. Jun 2004, 03:45
Kontaktdaten:

Beitrag von evok »

Halchteranerin, ich werd es mir merken künftig gleich die Links mit zu posten :)

Jedenfalls tausend Dank!!!!

Es funktioniert soweit. Lediglich stört es, daß nun statt des Datum der Seitentitel mit angezeigt wird. Also irgendwo scheint da noch ein kleiner Fehler zu sein. Beispiellink: http://www.rezeptino.de/front_content.php?idcat=41 (Du siehst, ich lerne ;) )
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

Ups, das war etwas zu viel des Guten. :lol: Versuch's mal mit der oben geaenderten Version. Sollte das auch nicht klappen (ich habe da naemlich einen Verdacht!), muesstest Du die SELECT-Anweisungen so aendern, dass Du vor dem e.created noch ein e.title einfuegst, also z.B. aus

Code: Alles auswählen

SELECT c.idcat, d.idart, e.idartlang, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
wird

Code: Alles auswählen

SELECT c.idcat, d.idart, e.idartlang, e.title, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
Sollte diese letzte Version richtig sein, melde Dich bitte nochmal, damit ich den Code oben wieder aendern kann, sonst hagelt's spaeter Beschwerden von anderen. :wink:

Gruss
Christa
evok
Beiträge: 19
Registriert: Mo 21. Jun 2004, 03:45
Kontaktdaten:

Beitrag von evok »

Absolut perfekt :D

Danke, Danke, Danke,....

Brauchst nichts ändern. Es läuft in deiner abgeänderten Version.

PS: Wie kann man grundsätzlich die Datumangabe entfernen? Möchte da jetzt nicht herumfummeln, da ich nicht wirklich die Ahnung von php habe.
Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin »

evok hat geschrieben:PS: Wie kann man grundsätzlich die Datumangabe entfernen? Möchte da jetzt nicht herumfummeln, da ich nicht wirklich die Ahnung von php habe.
Am schnellsten geht es, wenn Du

Code: Alles auswählen

echo "<td class="artlist_date">".$db->f("erstellungsdatum")."</td></tr>"; 
durch

Code: Alles auswählen

echo "<td class="artlist_date">&nbsp;</td></tr>"; 
ersetzt. Eigentlich koennte man die komplette Zelle entfernen, aber dann muesste das in der ganzen Tabelle passieren, und ich hatte jetzt keine Lust, die Stellen zu suchen. :lol: Dann haettest Du aber auch meine erste Version nehmen koennen mit dieser letzten Aenderung zusammen. :-) Denn wenn Du das Datum nicht dargestellt haben willst, kannst Du auch ueberall

Code: Alles auswählen

, e.created, DATE_FORMAT(e.created,'%d.%m.%y') AS erstellungsdatum 
raushauen (einschliesslich dem fuehrenden Komma!), das wird dann nicht mehr benoetigt und wuerde nur ueberfluessigerweise selektiert.

Gruss
Christa
evok
Beiträge: 19
Registriert: Mo 21. Jun 2004, 03:45
Kontaktdaten:

Beitrag von evok »

Halchteranerin hat geschrieben:Dann haettest Du aber auch meine erste Version nehmen koennen mit dieser letzten Aenderung zusammen. :-)
Nene Christa, ich brauche alle Versionen. Habe das Modul nämlich mehrmals laufen (nach Datum für die Startseite, alphabetisch ohne Datum für das Lexikon usw) Aber zugegeben... die Idee hatte ich auch erst vorhin :roll:

Na jedenfalls vielen Dank.
baumpaul
Beiträge: 346
Registriert: Mo 1. Mär 2004, 12:59
Kontaktdaten:

Beitrag von baumpaul »

Was muss denn geändert werden um nach Sortierschlüssel absteigend zu sortieren?

Danke schon mal...
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

ORDER BY xxxx DESC
Gruß
Florian
baumpaul
Beiträge: 346
Registriert: Mo 1. Mär 2004, 12:59
Kontaktdaten:

Beitrag von baumpaul »

Beleuchtfix hat geschrieben:ORDER BY xxxx DESC
Gruß
Florian
ja genau um das xxxx ging es mir.
Beleuchtfix
Beiträge: 1082
Registriert: Di 22. Jul 2003, 10:14
Wohnort: Hessen
Kontaktdaten:

Beitrag von Beleuchtfix »

Sorry :oops: ich glaube artsort
Viel Erfolg
Florian
Gesperrt