Brokiss
Grünschnabel
Hallo ich bin neu hier im Forum und auch noch ein richtiger JS Anfänger.
Nun zu meinem Problem.
Ich habe ein Formular mit zwei Auswahllisten, wobei die zweite Liste eine multiple Selectbox ist. Ich möchte nun das die zweite Liste sich abhängig von der Auswahl der ersten Liste ändert.
Mein Versuch bis jetzt:
das klappt ja jetzt auch so lange ich selbst die Werte in die Arrays schreibe.
Ich möchte nun aber, dass die Werte der zweiten Liste aus einer Datenbank gelesen werden. Im Netz habe ich auch schon was gefunden und es an mein Script angepasst, aber erstens wird die zweite Liste nicht gefüllt und zweitens verstehe ich es auch nicht.
Ich hab eine Datenbanktabelle die aus 4 Spalten besteht "datenid", "name", "bezeichner" und "format" und ich möchte halt nun das wenn ich in der ersten Liste "Werbung" auswähle das dann in der zweiten Liste alle "bezeichner" angezeigt werden die "format" = HTML haben und als value soll "name" übergeben werden, da ich ja die Werte später noch mit php weiterverarbeiten will.
Konform dazu soll dann wenn ich dann Video in der ersten Liste auswähle eben alle Werte angezeigt werden die "format"=Video haben.
Ist das irgendwie möglich? Wie gesagt ich bin noch Anfänger und verstehe manche Zusammenhänge noch nicht so genau.
Und ich würde mich sehr freuen wenn mir jemand helfen würde.
Nun zu meinem Problem.
Ich habe ein Formular mit zwei Auswahllisten, wobei die zweite Liste eine multiple Selectbox ist. Ich möchte nun das die zweite Liste sich abhängig von der Auswahl der ersten Liste ändert.
Mein Versuch bis jetzt:
HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
<title>Kundendaten</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="Design.css" />
<script language="javascript" type="text/javascript">
<!--
var arrKat = new Array();
// Erste Komponente - Kategorie-ID ist Index
arrKat["1"] = new Array();
// Unterkategorien zur ersten Kategorie-ID
arrKat["1"][0] = "lipo-med";
arrKat["1"][1] = "heinzsoft";
arrKat["1"][2] = "Uni";
// Zweite Komponente - Kategorie-ID ist Index
arrKat["2"] = new Array();
// Unterkategorien zur ersten Kategorie-ID
arrKat["2"][0] = "Bacardi.mpeg";
arrKat["2"][1] = "Children.avi";
arrKat["2"][2] = "JurrasicFart.wmv";
function updateSub(objForm, strKey){
var objSelSub = objForm.Anzeigezone;
// Bestehende Liste löschen
objSelSub.options.length = 0;
// Falls der default-Zustand gewählt wird
if(strKey == "default") return;
// Unterkategorie-Array durchlaufen
for(var i=0; i<arrKat[strKey].length; i++){
// Neues Options-Objekt (value = Hauptkat_Unterkat)
objOption = new Option(arrKat[strKey][i], arrKat[strKey][i], false, false);
// Option in Liste einhängen
objSelSub.options[objSelSub.length] = objOption;
}
}
-->
</script>
</head>
<body bgcolor="#000077"><br>
<select name="Aufteilung" size=1 onchange="updateSub(this.form, this.value)">
<option value="default">Bitte wählen</option>
<option value="1">Werbung</option>
<option value="2">Video</option>
</select>
</body>
</html>
das klappt ja jetzt auch so lange ich selbst die Werte in die Arrays schreibe.
Ich möchte nun aber, dass die Werte der zweiten Liste aus einer Datenbank gelesen werden. Im Netz habe ich auch schon was gefunden und es an mein Script angepasst, aber erstens wird die zweite Liste nicht gefüllt und zweitens verstehe ich es auch nicht.
HTML:
<?php
session_start();
require("connect.inc.php");//einbinden der Datei connect.inc.php
?>
<html>
<head>
<title>Test der Formularfunktion</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
<?php
// abhängiges Kombifeld erzeugen
global $PHP_SELF, $dbName, $frm_auswahl;
$rs=mysql($dbName, "SELECT name,bezeichner,format FROM daten");
//$rs=mysql_query("select * from tbl_artikel");
$rows=mysql_num_rows($rs);
echo "\tvar liste2=new Array($rows)\n"
. "\tfor(var i=0;i<liste2.length;i++)\n"
. "\t\tliste2[i]=new Array(2);\n";
$n=0;
while(list($name,$bezeichner,$format) = mysql_fetch_row($rs)){
//while($zeile=mysql_fetch_assoc($rs)) {
echo "\tliste2[$n][0]=".$name.";\n"
. "\tliste2[$n][1]=".$bezeichner.";\n"
. "\tliste2[$n][2]=".$format.";\n";
$n++;
}
?>
function update_drp2() {
var x=document.frm_auswahl.drp2.length;
for(var n=0; n<x; n++)
document.frm_auswahl.drp2.options[0]=null;
for(n=0; n<liste2.length; n++) {
if(liste2[n][2]==document.frm_auswahl.drp1.value) {
var NeuerEintrag=new Option(liste2[n][1], liste2[n][0]);
document.frm_auswahl.drp2.options[]=NeuerEintrag;
}
}
}
</script>
</head>
<body>
<form name="frm_auswahl">
<select name="drp1" size="1" onChange="update_drp2()">
<option value="default">Bitte wählen</option>
<option value="1">Werbung</option>
<option value="2">Video</option>
</select>
</select>
<select name="drp2" size="1">
<option>Start</option>
</select>
</form>
<script type="text/javascript">
<!--
update_drp2()
-->
</script>
</body>
</html>
Ich hab eine Datenbanktabelle die aus 4 Spalten besteht "datenid", "name", "bezeichner" und "format" und ich möchte halt nun das wenn ich in der ersten Liste "Werbung" auswähle das dann in der zweiten Liste alle "bezeichner" angezeigt werden die "format" = HTML haben und als value soll "name" übergeben werden, da ich ja die Werte später noch mit php weiterverarbeiten will.
Konform dazu soll dann wenn ich dann Video in der ersten Liste auswähle eben alle Werte angezeigt werden die "format"=Video haben.
Ist das irgendwie möglich? Wie gesagt ich bin noch Anfänger und verstehe manche Zusammenhänge noch nicht so genau.
Und ich würde mich sehr freuen wenn mir jemand helfen würde.