Zugriff auf den Wert aus einem FCE
| Autor | Nachricht |
|---|---|
|
Verfasst am: 04. 08. 2009 [17:54]
|
|
|
maxB
Themenersteller
Dabei seit: 02.01.2006
Beiträge: 49
|
Moin an alle Leser/innen, nachdem ich mittlerweile einige Stunden rumprobiert habe, weil ich unbedingt selbst den Knackpunkt finden wollte, wende ich mich nun hoffnungsvoll an die Benutzer von typo3.net Es geht um (m)eine (erste) winzige Extension, die folgendes erledigen soll: In einer Datenbank existieren tausende von Einträgen, die Kraftfahrzeuge mit Details zu Marke, Modell, Treibstoff, Türen etc. enthalten. Um eine URL für den Redakteur möglichst komfortabel bilden zu lassen, sollen aus dieser DB sowohl alle Marken als auch alle Modelle (in Abhängigkeit von der zuvor gewählten Marke) ausgewählt werden können - später wird damit eine URL zu einem Neuwagen-Konfigurator gebildet. Ich kann ohne Probleme die Datenbank auslesen und die Einträge in zwei Dropdowns in einem Flexible Content Element schreiben lassen. Allerdings fehlt mir die Abhängigkeit des Modells zur Marke. Ich muss also irgendwie abfragen, welche Marke zuvor gewählt wurde, um mir eben ausschließlich die zusammenhängenden Modelle ausgeben zu lassen. Folgendes habe ich zur Zeit (TYPO3 4.2.8, aktuelle PHP- & MySQL-Version, falls das interessiert class.tx_mbccdataimport_pi1.php PHP function addBrands($config) {
$optionList = array();
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery('manufacturer', 'cc_car_data', '', 'manufacturer', '', '');
$i=1;
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
$optionList[$i] = array(0 => $row['manufacturer'], 1 => $row['manufacturer']);
$i++;
}
$config['items'] = array_merge($config['items'],$optionList);
return $config;
}
function addModels($config) {
$optionList = array();
$result = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
'model',
'cc_car_data',
'manufacturer = "BMW"', // HIER MUSS DAS BMW ALSO DYNAMISCH SEIN UND AUS DEM ERGEBNIS DER METHODE ADDBRANDS KOMMEN
'model',
'',
''
);
$i=1;
while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($result)) {
$optionList[$i] = array(0 => $row['model'], 1 => $row['model']);
$i++;
}
$config['items'] = array_merge($config['items'],$optionList);
return $config;
}XML des betroffenen FCE HTML <field_cc_brand type="array"> <type>no_map</type> <tx_templavoila type="array"> <title>Direkteinstieg - Marke</title> <sample_data type="array"> <numindex index="0"></numindex> </sample_data> <etype>select</etype> </tx_templavoila> <tceforms type="array"> <config type="array"> <type>select</type> <items type="array"> <numindex index="0" type="array"> <numindex index="0"></numindex> <numindex index="1"></numindex> </numindex> </items> <default>0</default> <itemsprocfunc>tx_mbccdataimport_pi1->addBrands</itemsprocfunc> </config> <onchange>reload</onchange> <label>Direkteinstieg - Marke</label> </tceforms> </field_cc_brand> <field_cc_model type="array"> <type>no_map</type> <tx_templavoila type="array"> <title>Direkteinstieg - Modell</title> <sample_data type="array"> <numindex index="0"></numindex> </sample_data> <etype>select</etype> </tx_templavoila> <tceforms type="array"> <config type="array"> <type>select</type> <items type="array"> <numindex index="0" type="array"> <numindex index="0"></numindex> <numindex index="1"></numindex> </numindex> </items> <default>0</default> <itemsprocfunc>tx_mbccdataimport_pi1->addModels</itemsprocfunc> </config> <label>Direkteinstieg - Modell</label> </tceforms> </field_cc_model> Ich wäre für jeden Ansatz und jede Hilfe äußerst dankbar Max[/HTML][/PHP] |
|
Verfasst am: 13. 08. 2009 [11:40]
|
|
|
BlackPixel
Dabei seit: 22.04.2005
Beiträge: 193
|
Naja, ich wkann mir denken was du möchtest. Ich würde das so erledigen: Beim laden der Seite wird das erste Dropdown ausgefüllt angezeigt. Auf die options im Select legst Du ein onclick event. Wird ein option angeklickt wird ein ajaxrequest an eine registrierte eID Datei gestellt. Da wird die uid des Datensatzes übergeben. In der klasse für Dein ajax machst du dann lediglich eine DB abfrage mit der uid die übergeben wurde und schreibst alle kommenden options in das zweite select... Gruß manfred |



