rss für eigene module

Begonnen von Musicman75, 19 Februar 2006, 18:34:12

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Musicman75

Hallo,

wie binde ich eigene Module in die rss feeds ein?
mit sql programmierung hab ich noch nen bisschen Probleme.

Man müsste aus 3 Tabellen Daten holen:

1. Tabelle: ID und Name
2. Tabelle: ID des Namens, ID des Titels, Titel
3. Tabelle: ID des Titels, Kommentare

Wie kann man das am einfachsten machen, bzw wie ist der Befehl um die jeweils zugehörigen Daten zu holen?

Danke und Gruß
Steff
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

jubilee

Zitatwie binde ich eigene Module in die rss feeds ein?
mit sql programmierung hab ich noch nen bisschen Probleme.
Du musst die backend.php ändern.

ZitatMan müsste aus 3 Tabellen Daten holen:
1. Tabelle: ID und Name
2. Tabelle: ID des Namens, ID des Titels, Titel
3. Tabelle: ID des Titels, Kommentare
Um zu wissen, wie die 3 Tabellen miteinander verknüpft werden müssen, müsste man die Tabellenstruktur kennen und welche Daten aus den Tabellen gebraucht werden.

MfG
jubilee

Musicman75

Tabelle 1 von den Alben:
idalbum (Zahl), idartist (Zahl), title (String)

Tabelle 2 vom Künstler:
idartist (Zahl), name (String)

Tabelle 3 Kommentar zum Album:
idalbum (Zahl), comments (String)

idalbum und idartist sind jeweils die gleiche Zahl, anhand derer die Daten zugeordnet werden.

Das sind auch die Felder die benötigt werden.
Ich hab schon in der backend geschaut und hab da sowas gefunden was passen könnte:

AS b ON a.fid =b.fid

Denke mal so muss man das irgendwie machen, 1. Tabelle Daten lesen, mit 2ter vergleichen und die Namen dazu lesen, mit 3. vergleichen und die Kommentare dazu lesen.

Ist das Topmusic Modul.
Ich kann Dir ja mal die sql Datei schicken.

Danke schon mal.

Gruß
Steff
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

jubilee

Hallo !
Die Abfrage sollte so (der so ähnlich) lauten.
Zitat
SELECT a.title, b.name, c.comments from Tabelle_1 AS a LEFT JOIN Tabelle_2 AS b ON a.idartist=b.idartist LEFT JOIN Tabelle_3 AS c ON a.idalbum=c.idalbum

MfG
jubilee

Musicman75

#4
Merci, das werde ich dann mal probieren.


Ok, hab das soweit hinbekommen, allerdings hab ich jetzt noch nen kleines Problem.

- Titel müsste so aussehen: Name - Titel , angezeigt wird nur der Titel, den Namen bekomm ich irgendwie nicht dazu.

Ich habe die music Option oben in die Liste und unten bei den Case eingefügt, der Code sieht grad so aus:

function topmusic ($version)
{
    global $rss, $limit, $prefix, $itemdescriptiontrunk, $modcheck ;
    $result = sql_query("SELECT a.idalbum, a.idartist, a.title, b.name, c.comments from " . $prefix . "_topmusic_album AS a LEFT JOIN " . $prefix . "_topmusic_artist AS b ON a.idartist=b.idartist LEFT JOIN " . $prefix . "_topmusic_album_lang AS c ON a.idalbum=c.idalbum order by idalbum DESC limit " . $limit);
    if (!$result) {
        echo "An error occured";
    } else {
        if ((mxModuleAllowed("topMusic")) && ($modcheck['topMusic'])) {
            while ($data_down = sql_fetch_object($result)) {
                if (($version == "RSS1.0")or($version == "RSS2.0")) {
                    $data_down->name = rss_bbencode($data_down->name);
                    $data_down->title = rss_bbencode($data_down->title);
                    $data_down->comments = rss_bbencode($data_down->comments);
                }
                $item = new FeedItem();
                $item->descriptionTruncSize = $itemdescriptiontrunk;
                $item->title = strip_tags(rss_bbencode($data_down->title));
                $item->link = MX_HOME_URL . "/modules.php?name=topMusic&op=album&idartist=" . $data_down->idartist . "&idalbum=" . urlencode(trim($data_down->idalbum));
                $item->description = strip_tags(rss_bbencode($data_down->name));
                $item->description = strip_tags(rss_bbencode($data_down->comments));
                $item->source = MX_HOME_URL . "/modules.php?name=topMusic";
                $rss->addItem($item);
            }
        } else {
            moduleerror("topMusic");
        }
    }
    unset ($result, $data_down);
}


Kannst mir bei den letzten Problemchen bitte noch nen Tip geben.

Hier noch der Link: http://www.gothic-online.de/backend.php?op=music

Danke und Gruß
Steff
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

jubilee

Hallo !
Zitat
$item->description = strip_tags(rss_bbencode($data_down->name));
$item->description = strip_tags(rss_bbencode($data_down->comments));
2x hintereinander bringt nix. wird nur das letzte Angezeigt.
Wenn Du beides drinhaben möchtest, musst Du das aneinanderhängen --->
$item->description = strip_tags(rss_bbencode("".$data_down->name." ".$data_down->comments.""))
Dito gilt dasselbe bei $item->title
$item->title = strip_tags(rss_bbencode("".$data_down->name."-".$data_down->title.""))

MfG
jubilee




Musicman75

Merci, jetzt gehts wunderbar, so wie es soll.

Besten Dank.
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!

Musicman75

Ok, für alle Anderen, hier nochmal die komplette Anpassung:

Zeile 95
$actions = array("news", ...,  "music", "all");

Die Funktion:
function topmusic ($version)
{
    global $rss, $limit, $prefix, $itemdescriptiontrunk, $modcheck ;
    $result = sql_query("SELECT a.idalbum, a.idartist, a.title, b.name, c.comments from " . $prefix . "_topmusic_album AS a LEFT JOIN " . $prefix . "_topmusic_artist AS b ON a.idartist=b.idartist LEFT JOIN " . $prefix . "_topmusic_album_lang AS c ON a.idalbum=c.idalbum order by idalbum DESC limit " . $limit);
    if (!$result) {
        echo "An error occured";
    } else {
        if ((mxModuleAllowed("topMusic")) && ($modcheck['topMusic'])) {
            while ($data_down = sql_fetch_object($result)) {
                if (($version == "RSS1.0")or($version == "RSS2.0")) {
                    $data_down->name = rss_bbencode($data_down->name);
                    $data_down->title = rss_bbencode($data_down->title);
                    $data_down->comments = rss_bbencode($data_down->comments);
                }
                $item = new FeedItem();
                $item->descriptionTruncSize = $itemdescriptiontrunk;
                $item->title = strip_tags(rss_bbencode("".$data_down->name." - ".$data_down->title.""));
                $item->link = MX_HOME_URL . "/modules.php?name=topMusic&op=album&idartist=" . $data_down->idartist . "&idalbum=" . urlencode(trim($data_down->idalbum));
                $item->description = strip_tags(rss_bbencode($data_down->comments));
                $item->source = MX_HOME_URL . "/modules.php?name=topMusic";
                $rss->addItem($item);
            }
        } else {
            moduleerror("topMusic");
        }
    }
    unset ($result, $data_down);
}


Zeile 333 beginnt die Funktionsauswahl, das kommt da rein, ganz unten gibt es nochmal cases, da auch:
            case "music":
                topmusic($version);
                break;


Und bei dem case all nicht zu vergessen:
        topmusic($version);

Und schließlich, damit man die Funktion auch als Auswahl bekommt in der includes/myheader.php:
<link rel="alternate" type="application/rss+xml" title="' . htmlspecialchars($GLOBALS['sitename']) . ' - ' . _MUSIC . '" href="backend.php?op=music">

Hoffe es hilft nen paar Usern.

Gruß
Steff
Unaufgeforderte Support PMs & Emails werden ignoriert

Immer erst die Boardsuche verwenden und gegebenenfalls einen neuen Threat eröffnen, wenn das Problem noch nicht behandelt wurde!