Abfrage von Startartikel Online in der Navigation?

Gesperrt
cschwan2006
Beiträge: 70
Registriert: Do 21. Sep 2006, 10:56
Kontaktdaten:

Abfrage von Startartikel Online in der Navigation?

Beitrag von cschwan2006 » Do 24. Mai 2007, 11:58

Hallo Contenido freunde,

ich habe da ein problem bei der datenbankabfrage der Idcat.
ich möchte gern in meiner navigation überprüfen ob auch der startarikel online ist. Ich habe es schon mit Left Join probiert aber das will nicht so richtig. vielleicht kann mir jemand aushelfen wie man diese abfrage machen könnte?

Hier mal die derzeitige abfrage:

Code: Alles auswählen

                   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
                     B.idclient  = '$client' AND
                     C.idlang    = '$lang'   AND
                     C.visible   = '1'       AND
                     C.startidartlang != '0' AND
                     A.level <= $numberLevel AND
                     B.parentid  = '$cat'
                  ORDER BY
                     A.idtree";
Vielen Dank im vorraus

Gruss Christian

wosch

Beitrag von wosch » Do 24. Mai 2007, 14:06

Schau dir mal dieses Modul an,
da müßte eigentlich solch eine Abfrage drin sein:

http://www.contenido.org/forum/viewtopic.php?t=15801

cschwan2006
Beiträge: 70
Registriert: Do 21. Sep 2006, 10:56
Kontaktdaten:

Beitrag von cschwan2006 » Do 24. Mai 2007, 15:31

wosch hat geschrieben:Schau dir mal dieses Modul an,
da müßte eigentlich solch eine Abfrage drin sein:

http://www.contenido.de/forum/viewtopic.php?t=15801
Leider funktioniert der download link nicht mehr :?

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Fr 25. Mai 2007, 12:30

Ist der Kompatibilitätsmodus für Startartikel aktiv (siehe contenido/includes/config.php)?

Du kannst i.A. nur sehr aufwendig in einer Abfrage die Kategorien und den Stand des Startartikels ermitteln. Trenne das in die Kategorien und dann prüfe pro Kategorie (da der Anfang der Abfrage fehlt, weiß ich nicht, ob dieses Statement das bereits tun sollte). Wie man das macht, kannst Du z.B. der Ausgabe des Moduls Artikelliste Advanced entnehmen.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

cschwan2006
Beiträge: 70
Registriert: Do 21. Sep 2006, 10:56
Kontaktdaten:

Beitrag von cschwan2006 » Fr 25. Mai 2007, 16:47

HerrB hat geschrieben:Ist der Kompatibilitätsmodus für Startartikel aktiv (siehe contenido/includes/config.php)?

Du kannst i.A. nur sehr aufwendig in einer Abfrage die Kategorien und den Stand des Startartikels ermitteln. Trenne das in die Kategorien und dann prüfe pro Kategorie (da der Anfang der Abfrage fehlt, weiß ich nicht, ob dieses Statement das bereits tun sollte). Wie man das macht, kannst Du z.B. der Ausgabe des Moduls Artikelliste Advanced entnehmen.

Gruß
HerrB
Vielen Dank HerrB
Habe mir schon die artikelliste angesehen und auch die Join Left methote. Ich habe oben nur Select * stehen, kann man das überhaupt so machen? oder muss man das angeben? kann man das nicht alles in einer sql abfrage?

Gruss christian

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » So 27. Mai 2007, 00:12

Bitte Fragen lesen - und beantworten...
Ich habe oben nur Select * stehen, kann man das überhaupt so machen?
Sicher, aber es liefert alle Werte aus allen Spalten aus allen beteiligten Tabellen, die die Bedingung erfüllen. Nicht so performant...
kann man das nicht alles in einer sql abfrage?
Das ist abhängig von der Startartikel-Kompatibilitätseinstellung (siehe oben).

Wenn es der alte Weg ist, steht die Eigenschaft in _cat_art (und da könnte man dann sogar nur die Kategorien herausziehen, die Startartikel enthalten, die online sind).

Wenn es der neue Weg ist, steht die ID des Startartikels in _cat_lang - Du musst also in der ersten Abfrage die Kategorien (und die jeweilige ID des Startartikels) ermitteln, um dann separat in _art_lang nachzusehen, ob der Artikel online ist (das geht auch in einer Abfrage - aber dies liefert dann nur Kategorien, in denen definitiv ein Startartikel definiert wurde, der existiert).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

cschwan2006
Beiträge: 70
Registriert: Do 21. Sep 2006, 10:56
Kontaktdaten:

Beitrag von cschwan2006 » Mo 28. Mai 2007, 17:52

HerrB hat geschrieben:Bitte Fragen lesen - und beantworten...
Ich habe oben nur Select * stehen, kann man das überhaupt so machen?
Sicher, aber es liefert alle Werte aus allen Spalten aus allen beteiligten Tabellen, die die Bedingung erfüllen. Nicht so performant...
kann man das nicht alles in einer sql abfrage?
Das ist abhängig von der Startartikel-Kompatibilitätseinstellung (siehe oben).

Wenn es der alte Weg ist, steht die Eigenschaft in _cat_art (und da könnte man dann sogar nur die Kategorien herausziehen, die Startartikel enthalten, die online sind).

Wenn es der neue Weg ist, steht die ID des Startartikels in _cat_lang - Du musst also in der ersten Abfrage die Kategorien (und die jeweilige ID des Startartikels) ermitteln, um dann separat in _art_lang nachzusehen, ob der Artikel online ist (das geht auch in einer Abfrage - aber dies liefert dann nur Kategorien, in denen definitiv ein Startartikel definiert wurde, der existiert).

Gruß
HerrB
Sorry habe vergessen die erste frage zu beantworten, es steht in der cat_lang also somit ist der Startartikel-Kompatibilitätseinstellung auf flase in der config gesetzt.

Hier mal mein programmiert ansatz der sehr warscheinlich total falsch ist und deshalb nicht funktionieren kann:

Code: Alles auswählen

  $sql = "SELECT
                     *
                   FROM
                     {".$cfg["tab"]["cat_tree"]."} AS A,
                     {".$cfg["tab"]["cat"]."} AS B,
                     {".$cfg["tab"]["cat_lang"]."} AS C
LEFT JOIN {$cfg['tab']['cat_art']} AS D ON A.idcat = C.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
                          )
                         )  
                    A.idcat = $cat AND 
                    C.idcat = $cat AND

                     B.idclient  = '$client' AND
                     C.idlang    = '$lang'   AND
                     C.visible   = '1'       AND
                     C.startidartlang != E.idartlang AND
E.online != 1 AND
                     A.level <= $numberLevel AND
                     B.parentid  = A.idcat
                  ORDER BY
                     A.idtree";
Vielen dank schon mal im vorraus für eure hilde

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Mo 28. Mai 2007, 18:50

es steht in der cat_lang also somit ist der Startartikel-Kompatibilitätseinstellung auf flase in der config gesetzt
Ob die Einstellung gesetzt ist, kann man nur in der contenido/includes/config.php erkennen - ist sie dort auf false gesetzt?

Ich habe mir das Statement nur kurz angesehen, aber könnte funktionieren - es liefert (wenn es denn funktioniert) u.a. alle Artikel, die nicht online und nicht Startartikel sind. Ich dachte Du wolltest ermitteln, ob der Startartikel online ist?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

cschwan2006
Beiträge: 70
Registriert: Do 21. Sep 2006, 10:56
Kontaktdaten:

Beitrag von cschwan2006 » Mo 28. Mai 2007, 18:56

HerrB hat geschrieben:
es steht in der cat_lang also somit ist der Startartikel-Kompatibilitätseinstellung auf flase in der config gesetzt
Ob die Einstellung gesetzt ist, kann man nur in der contenido/includes/config.php erkennen - ist sie dort auf false gesetzt?

Ich habe mir das Statement nur kurz angesehen, aber könnte funktionieren - es liefert (wenn es denn funktioniert) u.a. alle Artikel, die nicht online und nicht Startartikel sind. Ich dachte Du wolltest ermitteln, ob der Startartikel online ist?

Gruß
HerrB
jepp ist auf false gesetzt, jepp das stimmt ich will schauen ob der startartikel online ist von der variable $cat.

habe mir mal deine artikelliste zum vorbild genommen aber da habe ich garkein join gefunden.

ich will meine navigation abfragen lassen ob für die idcat ein startartikel vorhanden ist und ob dieser auch online ist.

gruss christian

Gesperrt