Seite 2 von 4

Verfasst: Mi 10. Sep 2008, 09:51
von OliverL
Arrrgggggg!
Ein Fehler der bei mir in Fleisch und Blut übergegangen ist.

strtok("_", "CMS_VAR[1]")
muss
strtok( "CMS_VAR[1]", "_" )

Code: Alles auswählen

$sCurrentContainer = substr(strtok("CMS_VAR[1]","_"), 1, -3);
echo("ContainerID: ".$sCurrentContainer."");
mfg OliverL
(ich schreib es immer richtig dann Korregiere ich das richtige in das Falsche)

Verfasst: Mi 10. Sep 2008, 09:53
von _wiewo_
OliverL hat geschrieben:Arrrgggggg!
Ein Fehler der bei mir in Fleisch und Blut übergegangen ist.

strtok("_", "CMS_VAR[1]")
muss
strtok( "CMS_VAR[1]", "_" )

Code: Alles auswählen

$sCurrentContainer = substr(strtok("CMS_VAR[1]","_"), 1, -3);
echo("ContainerID: ".$sCurrentContainer."");
mfg OliverL
(ich schreib es immer richtig dann Korregiere ich das richtige in das Falsche)
bei mir funzt

Code: Alles auswählen

$sCurrentContainer = substr("CMS_VAR[1]", 1, 2);
echo("ContainerID: ".$sCurrentContainer."");
grad super :)
raus dabei kommt 30 :)

Verfasst: Mi 10. Sep 2008, 10:00
von OliverL
:)

und jetzt nimm mal für das Moidul den Container mit der ID 300.
Da kommt dann auch 30 raus!

mfg OliverL

Verfasst: Mi 10. Sep 2008, 10:02
von _wiewo_
OliverL hat geschrieben::)

und jetzt nimm mal für das Moidul den Container mit der ID 300.
Da kommt dann auch 30 raus!

mfg OliverL
arg mist :D ich geh eig nie über 100.. ach das jetzt erstmal nebensache.. ^^ :)

aber gleich ists fertig, gleich bekommst post, nurnoch eine sache is Buggy, aber krieg ich hin

Verfasst: Mi 10. Sep 2008, 10:11
von _wiewo_
hab das problem das ich so große sachen auslager in ne eigene klassen datei,
klappt auch alles, bis auf dein sql befehl zum template ID im output ausgeben
da kommt kein return =/ *weiter bastel*

Verfasst: Mi 10. Sep 2008, 11:18
von OliverL
1. setz doch einfach das neue Tok() von mir ein dann hast du niemals das Problem wenn du über 99 kommst.

2. das mit der SQL ist mein Fehler. der Prefix der Tabellen ist bei mir "con48" nicht wie bei dir "con"

Hier mal mit den Offizellen Ariablen für die Tabellen:

Code: Alles auswählen

$sql = "SELECT ca.idcat, ca.idart, tca.idtpl as tca, tcc.idtpl as tcc

FROM ".$cfg["tab"]["cat_art"]." as ca,
".$cfg["tab"]["art_lang"]." as al
LEFT JOIN ".$cfg["tab"]["tpl_conf"]." as tca
  ON al.idtplcfg = tca.idtplcfg,
".$cfg["tab"]["cat_lang"]." as cl
LEFT JOIN ".$cfg["tab"]["tpl_conf"]." as tcc
  ON cl.idtplcfg = tcc.idtplcfg

WHERE al.idart = ".$idart."
AND al.idlang = ".$lang."
AND ca.idart = al.idart
AND ca.idcat = cl.idcat";

$db->query($sql);

$iArtTpl = $db->f('tca');
$iCatTpl = $db->f('tcc');
if( $iArtTpl ) $iThisTpl = $iArtTpl;
else  $iThisTpl = $iCatTpl;
mfg OliverL

Verfasst: Mi 10. Sep 2008, 12:17
von _wiewo_
OliverL hat geschrieben: das mit der SQL ist mein Fehler. der Prefix der Tabellen ist bei mir "con48" nicht wie bei dir "con"

Hier mal mit den Offizellen Ariablen für die Tabellen:

Code: Alles auswählen

$sql = "SELECT ca.idcat, ca.idart, tca.idtpl as tca, tcc.idtpl as tcc

FROM ".$cfg["tab"]["cat_art"]." as ca,
".$cfg["tab"]["art_lang"]." as al
LEFT JOIN ".$cfg["tab"]["tpl_conf"]." as tca
  ON al.idtplcfg = tca.idtplcfg,
".$cfg["tab"]["cat_lang"]." as cl
LEFT JOIN ".$cfg["tab"]["tpl_conf"]." as tcc
  ON cl.idtplcfg = tcc.idtplcfg

WHERE al.idart = ".$idart."
AND al.idlang = ".$lang."
AND ca.idart = al.idart
AND ca.idcat = cl.idcat";

$db->query($sql);

$iArtTpl = $db->f('tca');
$iCatTpl = $db->f('tcc');
if( $iArtTpl ) $iThisTpl = $iArtTpl;
else  $iThisTpl = $iCatTpl;
mfg OliverL
das hab ich schon geändert ;)

wenn ich den $sql string returne bekomme ich

Code: Alles auswählen

TemplateID: SELECT ca.idcat, ca.idart, tca.idtpl AS tca, tcc.idtpl AS tcc FROM con_cat_art AS ca, con_art_lang AS al LEFT JOIN con_template_conf AS tca ON al.idtplcfg = tca.idtplcfg, con_cat_lang AS cl LEFT JOIN con_template_conf AS tcc ON cl.idtplcfg = tcc.idtplcfg WHERE al.idart = 2 AND al.idlang = 1 AND ca.idart = al.idart AND ca.idcat = cl.idcat LIMIT 0 , 30
bastel ich damit in phpMyAdmin rum bekomm ich auch nen ergebnis
aaaaaaaaaber, irgendwie funzt das

Code: Alles auswählen

$iArtTpl = $db->f('tca');
nicht wenn ichs auslager

hier mal nen Teil des Code meiner eigenen Klasse

Code: Alles auswählen

class Hauptklasse{
	function __construct(){
		$this->db			=	$GLOBALS['db'];
		$this->cfg			=	$GLOBALS['cfg'];
		$this->client		=	$GLOBALS['client'];
		$this->lang			=	$GLOBALS['lang'];
		$this->cfgClient	=	$GLOBALS['cfgClient'];
		$this->sess			=	$GLOBALS['sess'];
	}
}

class TemplateID extends Hauptklasse {
	function auslesen($idart){
		$this->idart = $idart;
		
		$sql = 'SELECT ca.idcat, ca.idart, tca.idtpl AS tca, tcc.idtpl AS tcc'
        . ' FROM con_cat_art AS ca, con_art_lang AS al'
        . ' LEFT JOIN con_template_conf AS tca ON al.idtplcfg = tca.idtplcfg, con_cat_lang AS cl'
        . ' LEFT JOIN con_template_conf AS tcc ON cl.idtplcfg = tcc.idtplcfg'
        . ' WHERE al.idart = '.$this->idart.''
        . ' AND al.idlang = '.$this->lang.''
        . ' AND ca.idart = al.idart'
        . ' AND ca.idcat = cl.idcat'
        . ' LIMIT 0 , 30';
		$this->db->query($sql);
		
		$iArtTpl = $this->db->f('tca');
		$iCatTpl = $this->db->f('tcc');
		if( $iArtTpl ) $iThisTpl = $iArtTpl;
		else  $iThisTpl = $iCatTpl;
		
		
		
		return $iThisTpl;
	}
}
und im output gehts dann so

Code: Alles auswählen

cInclude('classes', 'webtischlerei.class.php');

$oIDtpl = new TemplateID();
$sIDtpl = $oIDtpl->auslesen($idart);
und $sIDtpl ist dann halt leer :(

Verfasst: Mi 10. Sep 2008, 15:57
von OliverL
Must du ldie Variablen nicht vorab erstellen?
oder ist das in php5 nicht mehr so?
z.B.:

Code: Alles auswählen

class Hauptklasse{

  var $db;
  var $cfg;
  var $client;
  var $lang;
  var $cfgClient;
  var $sess;
  /* ... usw ...  */

   function __construct(){
      ...

Verfasst: Mi 10. Sep 2008, 16:07
von _wiewo_
ne das funzt schon, andere sachen laufen schon die auf die werte da zugreifen

Verfasst: Mi 10. Sep 2008, 16:59
von OliverL
Zeigt das System-Log etwas?
Weil wenn phpmyadmin da was zeigt sollte Contenido auch was zeigen.

mfg OliverL

(habe das oben noch ergänzt mit "var ...")

Verfasst: Mi 10. Sep 2008, 17:03
von _wiewo_
OliverL hat geschrieben:Zeigt das System-Log etwas?
Weil wenn phpmyadmin da was zeigt sollte Contenido auch was zeigen.

mfg OliverL

(habe das oben noch ergänzt mit "var ...")
var ist ja mal ganz böse :) also wenn dann public, protected oder private ;)

log.. *mal gucken* ne zeigt nichts an, alles leer

ich versteh es einfach nicht
returne ich "$this->db->query($sql);" bekomm ich als ausgabe "Resource id #191"
aber return ich alles was dadrunter steht.. nichts, der gibt einfach nichts zurück :/

Verfasst: Mi 10. Sep 2008, 22:48
von OliverL
wat is en mit:


echo $this->db->f('idcat');

Verfasst: Do 11. Sep 2008, 07:44
von _wiewo_
OliverL hat geschrieben:wat is en mit:


echo $this->db->f('idcat');
TemplateID: 1

:) das richtig

aber idcat is in dem fall eig 19, warum gibt der 1 aus? xD

Verfasst: Do 11. Sep 2008, 07:46
von _wiewo_

Code: Alles auswählen

Create object with
 * $obj = new Article(idart, client, lang [, idartlang]);
 * 
 * You can now read the article properties with
 * $obj->getField(property);
 *
 * List of article properties: 
 *
 * idartlang		 - Language dependant article id
 * idart			 - Language indepenant article id 
 * idclient			 - Id of the client
 * idtplcfg 		 - Template configuration id
auszug aus der "class.article.php"

hoffe du siehst was in der letztel zeile des auszuges steht :)
man ich benutz die klasse so oft, aber nciht dran gedacht da mal nachzugucken ><

bloß für die kategorie find ich nicht so nen kurzen weg, mal noch weiter suchen

also artikel auslesen ist dann so =>

Code: Alles auswählen

class TemplateID extends Hauptklasse {
	function auslesen($idart){
		$oArticle = new Article($idart, $this->client, $this->lang);
		$sAtplID = $oArticle->getField('idtplcfg');

                // hier muss noch die TPL ID der kategorie ausgelesen werden
                
                $sTplID = $sAtplID;
                return $sTplID;
	}
}

Verfasst: Do 11. Sep 2008, 07:49
von kummer
du hast den query zwar abgesetzt, aber du befindest dich noch auf zeile 0. du musst mindestens einen aufruf von $this->db->next_record() vornehmen um auf den ersten eintrag zu gelangen.

normalerweise schlaufst du ja durch die ergebnisse mit

Code: Alles auswählen

while ($this->db->next_record()) {
    $meinWert = $this->db->f('meinFeldBezeichner');
}
wenn du nur ein ergebnis erwartest (einen einzelnen record) kannst du auch sowas machen:

Code: Alles auswählen

if ($this->db->next_record()) {
    $meinWert = $this->db->f('meinFeldBezeichner');
} else {
    // der query gab kein ergebnis zurück
}