Hallo,
ich habe 2 eigene Selectfelder die jeweils von einer eigenen DB-Tabelle mit Daten versorgt werden. Wird in dem ersten Feld etwas ausgewählt soll das JavaScript das zweite Selectfeld aktualisieren. Bei mir bleibt bisher aber immer das zweite Feld leer, kann es sein das die this-funktionen meines JCcodes innerhalb des Typo-Backends nicht zugelassen werden oder ungültig sind? (function relate)
Hier ist mein Code:
$this->doc->JScode = '
<SCRIPT LANGUAGE="JavaScript">
<!--
var supported = (window.Option) ? 1 : 0;
if (supported)
{
var active;
var modell = new Array();
modell[0] = new Array();
modell[0][0] = new makeOption("Alle Modelle","0");
modell[0][1] = new makeOption("alle Modelle","0");
modell[1] = new Array();
' ;
// Beginn der Skriptgenerierung
$sql = ("SELECT uid FROM tx_atautodb_hersteller");
$result = mysql_query($sql);
$zaehlhersteller=0 ;
while($row=mysql_fetch_row($result)) {
$zaehlhersteller = $zaehlhersteller+1 ;
$this->doc->JScode .= " modell[".$zaehlhersteller."] = new Array();
";
$sql_aufruf = ("SELECT uid,modell FROM tx_test_test WHERE herstellerid="$row[0]"");
$result_aufruf = mysql_query($sql_aufruf);
$zaehlmodell=0 ;
$this->doc->JScode .= " modell[".$zaehlhersteller."][".$zaehlmodell."] = new makeOption("Alle Modelle","0");
";
while($row_aufruf=mysql_fetch_row($result_aufruf)) {
$zaehlmodell = $zaehlmodell+1 ;
$this->doc->JScode .= " modell"."[".$zaehlhersteller."]"."[".$zaehlmodell."]"." = new makeOption("".htmlentities($row_aufruf[1])."".".""".htmlentities($row_aufruf[0])."");"."
";
}
}
// Ende der Skriptgenerierung
$this->doc->JScode .= '
}
function makeOption(text,value) {this.text = text;this.value = value;}
function relate(form)
{
if (!supported)
{
load(form, "HERSTELLER");
return;
}
var options = form.MODELL.options;
for (var i = options.length - 1; i > 0; i--)
{
options[i] = null;
}
var aktModell = modell[form.HERSTELLER.selectedIndex];
for (var j = 0; j < aktModell.length; j++)
{
options[j] = new Option(aktModell[j].text, aktModell[j].value);
}
options[0].selected = true;
}
// -->
</SCRIPT>
dann habe ich auch noch ein Funktion für das erste Select-Feld:
function build_select($formname, $sql, $defaultitem, $content) {
$result = mysql_query($sql);
$content.='<select name="'.$formname.'" size="1"'.'onChange="relate(this.form)">'."
";
$content.='<option value="0">Auswahl</option>'."
";
while($row=mysql_fetch_row($result)) {
$content.="<option ";
if($defaultitem==$row[0]) $content.='selected="selected" ';
$content.="value="$row[0]"> ".htmlentities($row[1])."</option>
";
}
$content.="</select>
";
mysql_free_result($result);
return $content;
}
und hier gebe ich die beiden Felder aus:
$content=tx_test_test::build_select("HERSTELLER","SELECT uid, hersteller FROM tx_test_test ORDER BY hersteller ASC", $hersteller, $content);
$content.="<select size="1" name="MODELL"><option value="0">".$LANG->getLL("choose")."</option></select>";