Seite 1 von 2

Letzte besuchte Seiten und haeufigste besuchte Seiten

Verfasst: Di 29. Jun 2004, 10:58
von Halchteranerin
Noch zwei kleine Module: die letzten besuchten Seiten (Artikel) und die haeufigsten besuchten Seiten samt Anzahl der Aufrufe. Die Anzahl der Artikel ist in der Konfiguration einstellbar.

Bei mir funktionieren sie, allerdings habe ich im errorlog Eintraege mit Invalid SQL gefunden, die ich noch nicht nachvollziehen konnte. Ich werd's im Auge behalten, bzw. vielleicht faellt jemandem auch so etwas auf.

Input fuer beide Module:

Code: Alles auswählen

/*********************************************** 
* CONTENIDO MODUL - INPUT 
* 
* Modulname   :     Übersicht häufigste/zuletzt besuchte Seiten
* Author          :     Christa Tabara 
* Copyright     :      Christa Tabara 
* Created        :     25-06-2004 
* Modified       :      12-07-2004 
************************************************/ 

echo "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">
        <tr>
           <td>Wieviele Artikel sollen aufgelistet werden?</td>
           <td><input type=\"text\" name=\"CMS_VAR[0]\" value=\"CMS_VALUE[0]\"></td>
           </tr></table>";
Output fuer haeufigste besuchte Seiten:

Code: Alles auswählen

<?php
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     Übersicht häufigste besuchte Seiten
* Author          :     Christa Tabara 
* Copyright     :      Christa Tabara 
* Created        :     25-06-2004 
* Modified       :      12-07-2004 
************************************************/ 
$anzahl='CMS_VALUE[0]';
$db = new DB_Contenido;
$sql = "SELECT ARTLANG.title, ARTLANG.idart, CAT.idcat, STAT.visited
           FROM {$cfg['tab']['art_lang']} AS ARTLANG, 
                    {$cfg['tab']['cat_art']} AS CATART,
                    {$cfg['tab']['cat']} AS CAT,
                    {$cfg['tab']['stat']} AS STAT
           WHERE ARTLANG.online = '1' 
                      AND ARTLANG.idart = CATART.idart 
                      AND ARTLANG.idlang = STAT.idlang
                      AND CATART.idcatart = STAT.idcatart
                      AND CATART.idcat = CAT.idcat 
                      AND STAT.idlang= '$lang' 
                      AND STAT.idclient = '$client'
           ORDER BY STAT.visited desc
           LIMIT 0,".$anzahl;
$db->query($sql);

              echo '<table width="290" border="0" cellspacing="0" cellpadding="2" style="border: 1px; border-color: #4779a0; border-style: solid">
               <tr><td width="90%" style="border: 1px; border-right: 0px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Am häufigsten besuchte Seiten</td>
<td width="10%" style="border: 1px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Aufrufe</td>
               </tr>';
for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
     {
       $db->next_record();
       $title = $db->f("title");
       $idcat_mfv = $db->f("idcat");//mfv=most frequently visited
       $idart_mfv = $db->f("idart");
       $aufrufe = $db->f("visited");
       $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat_mfv&idart=$idart_mfv");
       echo '<tr>
                <td width="90%" style="border: 1px; border-top:0px; border-right:0px; border-color: #4779a0; border-style: solid; padding-left:10px"><a href="'.$link.'">'.$title.'</a></td>
<td width="10%" style="border: 1px; border-top:0px; border-color: #4779a0; border-style: solid; padding-left:10px" class="subheadline">'.$aufrufe.'</a></td>
                </tr>';
      }
echo '</table>';
?>
Output zuletzt besuchte Seiten:

Code: Alles auswählen

<?php
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     Übersicht zuletzt besuchte Seiten
* Author          :     Christa Tabara 
* Copyright     :      Christa Tabara 
* Created        :     25-06-2004 
* Modified       :      12-07-2004 
************************************************/ 
$anzahl='CMS_VALUE[0]';
$db = new DB_Contenido;
$sql = "SELECT ARTLANG.title, ARTLANG.idart, CAT.idcat, STAT.visitdate
           FROM {$cfg['tab']['art_lang']} AS ARTLANG, 
                    {$cfg['tab']['cat_art']} AS CATART,
                    {$cfg['tab']['cat']} AS CAT,
                    {$cfg['tab']['stat']} AS STAT
           WHERE ARTLANG.online = '1' 
                      AND ARTLANG.idart = CATART.idart 
                      AND ARTLANG.idlang = STAT.idlang
                      AND CATART.idcatart = STAT.idcatart
                      AND CATART.idcat = CAT.idcat 
                      AND STAT.idlang= '$lang' 
                      AND STAT.idclient = '$client'
           ORDER BY STAT.visitdate desc
           LIMIT 0,".$anzahl;
$db->query($sql);

              echo '<table width="290" border="0" cellspacing="0" cellpadding="2" style="border: 1px; border-color: #4779a0; border-style: solid">
               <tr><td style="border: 1px; border-right: 0px; border-color: #4779a0; border-style: solid; background-color: #EEEEEE; padding-left:10px" class="subheadline">Zuletzt besuchte Seiten</td>
               </tr>';
for ($zeilen = 0; $zeilen<$anzahl; $zeilen++)
     {
       $db->next_record();
       $title = $db->f("title");
       $idcat_lv = $db->f("idcat");//lv=last visited
       $idart_lv = $db->f("idart");
       $link = $sess->url("front_content.php?client=$client&lang=$lang&idcat=$idcat_lv&idart=$idart_lv");
       echo '<tr>
                <td width="50%" style="border: 1px; border-top:0px; border-right:0px; border-color: #4779a0; border-style: solid; padding-left:10px"><a href="'.$link.'">'.$title.'</a></td>
                </tr>';
      }
echo '</table>';
?>
Konfiguration nicht vergessen, sonst ist die Maximalanzahl der Artikel, die dargestellt werden sollen, nicht bekannt.

Verfasst: Mo 12. Jul 2004, 11:08
von emergence
habs mir gerade mal angesehen... nett ;-)

Verfasst: Mo 12. Jul 2004, 13:17
von Halchteranerin
danke, danke :)
Ich muss mir das mal bei Gelegenheit in Ruhe wieder anschauen, ob es hier auch Probleme mit anderen Modulen gibt (s. auch http://www.contenido.de/forum/viewtopic ... c&start=15) und den Code ggf. etwas anpassen.

Verfasst: Mo 12. Jul 2004, 13:29
von emergence
outch... bin da gerade auf was drauf genagelt...
du solltest keinenfalls in deinem output modul die variablen
$idcat und $idart umdefinieren...
nachfolgende module die sich dieser werte bedienen hätten dann die falsche $idart oder $idcat zur verfügung... habs gerade beim comments modul bemerkt...

am besten für eigene module bei den variablen etwas wie $tempVar... verwenden... (besonders in schleifen...)

Verfasst: Mo 12. Jul 2004, 15:51
von Halchteranerin
emergence hat geschrieben:du solltest keinenfalls in deinem output modul die variablen $idcat und $idart umdefinieren...
Das sagst Du mir jetzt? :lol:
emergence hat geschrieben: nachfolgende module die sich dieser werte bedienen hätten dann die falsche $idart oder $idcat zur verfügung... habs gerade beim comments modul bemerkt...

am besten für eigene module bei den variablen etwas wie $tempVar... verwenden... (besonders in schleifen...)
ja ja, JETZT haben wir das auch festgestellt. :) ich habe ja nun in dem anderen Modul idcat und idart um _lc (wie last changed) erweitert, das werde ich bei diesen Modulen analog auch gleich tun. Bis der naechste Seiteneffekt auftritt. :twisted: Aber je mehr Leute das einsetzen, desto eher faellt so etwas auf ... :wink:

Verfasst: Mo 12. Jul 2004, 16:43
von emergence
Halchteranerin hat geschrieben:Das sagst Du mir jetzt?
lieber jetzt als gar nicht :wink:

Verfasst: So 16. Jan 2005, 00:27
von i-fekt
Kann man das "Häufigste Aufrufe"-Modul nicht beschränken auf eine bestimmte Kategorie? :?

Verfasst: So 16. Jan 2005, 00:48
von Halchteranerin
Craxx hat geschrieben:Kann man das "Häufigste Aufrufe"-Modul nicht beschränken auf eine bestimmte Kategorie? :?
sicher doch, und da du auf dem besten Weg zum PHP-Experten bist, kannst du das bestimmt schon selbst machen. :lol:
Ich habe gerade keine Zeit zum Umschreiben, aber du muesstest entweder die Nr. der Kategorie "hart codiert" in die SQL-Abfrage der Ausgabe schreiben, oder du machst es eleganter, fragst im Input-Bereich die Kategorie ab und uebergibst die Eingabe an die SQL-Abfrage im Output-Bereich.

Verfasst: So 16. Jan 2005, 02:13
von i-fekt
Geb mir mal nen Tipp, ich komme ned drauf. ;)

Verfasst: So 16. Jan 2005, 02:20
von Halchteranerin
Aehm ... das waren sogar zwei Tipps!
Halchteranerin hat geschrieben:du muesstest entweder die Nr. der Kategorie "hart codiert" in die SQL-Abfrage der Ausgabe schreiben, oder du machst es eleganter, fragst im Input-Bereich die Kategorie ab und uebergibst die Eingabe an die SQL-Abfrage im Output-Bereich.
also irgendwas mit AND CATART.idcat=XXX [fuer XXX gewuenschte Kategorienr. einsetzen) in dem WHERE-Teil der SQL-Anweisung.

Verfasst: So 16. Jan 2005, 02:26
von i-fekt
Das hattee ich schon versucht, lieferte allerdings x mal den selben Artikel. :?

Verfasst: So 16. Jan 2005, 02:50
von Halchteranerin
Craxx hat geschrieben:Das hattee ich schon versucht, lieferte allerdings x mal den selben Artikel. :?
Das kann nicht sein! Ich hab's gerade mit

Code: Alles auswählen

$sql = "SELECT ARTLANG.title, ARTLANG.idart, CAT.idcat, STAT.visited
           FROM {$cfg['tab']['art_lang']} AS ARTLANG,
                    {$cfg['tab']['cat_art']} AS CATART,
                    {$cfg['tab']['cat']} AS CAT,
                    {$cfg['tab']['stat']} AS STAT
           WHERE ARTLANG.online = '1'
                      AND ARTLANG.idart = CATART.idart
                      AND ARTLANG.idlang = STAT.idlang
                      AND CATART.idcatart = STAT.idcatart
                      AND CATART.idcat = CAT.idcat
                      AND CATART.idcat = 3
                      AND STAT.idlang= '$lang'
                      AND STAT.idclient = '$client'
           ORDER BY STAT.visited desc
           LIMIT 0,".$anzahl; 
probiert, und es hat geklappt (fuer die Kategorie Nr. 3)

Verfasst: So 16. Jan 2005, 03:03
von i-fekt
Ach so das muss dazu, ich habe es nur ersetzt. Mehrere Kategorien oder besser gesagt Unterordner einer Kategorie gehen dann nicht so einfach, oder?

Verfasst: So 16. Jan 2005, 04:12
von Halchteranerin
Craxx hat geschrieben:Mehrere Kategorien oder besser gesagt Unterordner einer Kategorie gehen dann nicht so einfach, oder?
Klar, du musst nur weitere Zeilen hinzufuegen, nach dem obigen Muster. Nur dass du die Abfragen nach der idcat mit OR verbinden musst, also so etwas:

Code: Alles auswählen

$sql = "SELECT ARTLANG.title, ARTLANG.idart, CAT.idcat, STAT.visited
           FROM {$cfg['tab']['art_lang']} AS ARTLANG,
                    {$cfg['tab']['cat_art']} AS CATART,
                    {$cfg['tab']['cat']} AS CAT,
                    {$cfg['tab']['stat']} AS STAT
           WHERE ARTLANG.online = '1'
                      AND ARTLANG.idart = CATART.idart
                      AND ARTLANG.idlang = STAT.idlang
                      AND CATART.idcatart = STAT.idcatart
                      AND CATART.idcat = CAT.idcat
                      AND (CATART.idcat = 3
                      OR CATART.idcat = 4711
                      OR CATART.idcat = 0815)
                      AND STAT.idlang= '$lang'
                      AND STAT.idclient = '$client'
           ORDER BY STAT.visited desc
           LIMIT 0,".$anzahl;

Verfasst: Di 15. Mär 2005, 09:43
von mäci
also bei mir werden keine besuchten seiten angezeigt, es steht nur der titel "zuletzt besuchte seiten". wo stelle ich den diese konfiguration ein?
danke