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

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
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
}