Zwei Selects. Die erste holt die Hersteller. Die zweite soll nur die Produkte anzeigen, welche die BrandID(tabelle: brands) im Feld ProdBrandIDFS(tabelle: products) haben.
<select name="service_form_verkaufprodbrand" onChange="prodname()">
<?php
echo "<option value="0">---- Auswahl ----</option>";
$sql = "SELECT BrandName FROM brands";
$result = mysql_query($sql) OR die(mysql_error);
while($row = mysql_fetch_assoc($result)){
$BrandID = $row["BrandID"];
$BrandName = $row["BrandName"];
echo "<option value="".$BrandID."">".$BrandName."</option>";
}
?>
</select>
<select name="service_form_verkaufprodname">
<?php
$select = 3;
$sql = "SELECT * FROM products WHERE ProdBrandIDFS = '".$select."'";
$result = mysql_query($sql) OR die(mysql_error);
while($row = mysql_fetch_assoc($result)){
$ProdID = $row["ProdID"];
$ProdName = $row["ProdName"];
echo "<option value="".$ProdID."">".$ProdName."</option>";
}
?>
Ajax wäre wie auch von Norbert schon geschrieben eine Variante, um das zu lösen. Die zweite wäre, von vornherein sämtliche Daten aus der Tabelle products auszulesen, aber anstatt in das <select>-Feld in einen Javascript-Abschnitt zu legen, von wo aus sie bei Bedarf in Dein verkaufprodname-<select> kopiert werden. Die dritte wäre, alle Daten in das <select>-Feld zu legen und per Javascript nur zum jeweils ersten Produkt zu springen (d.h. selected-Attribut des ersten passenden <option> zu setzen).
Variante 3 hat den Vorteil, auch ohne Javascript zu funktionieren, was mir persönlich immer am liebsten ist. Der Komfort, bei Auswahl einer Marke die dazugehörigen Produkte angezeigt zu bekommen, ist dann ein zusätzlicher Pluspunkt, aber kein Zwang.
Variante 2 ist am weitesten verbeitete Weg, Deine Aufgabenstellung zu lösen, aber ohne Javascript bleibt der Besucher im Gegensatz zu Variante 3 im Regen stehen. Der Vorteil gegenüber Variante 3 ist, je nach Produktanzahl, dass die Auswahlliste nicht extrem lang wird. Wenn so viele Produkte in der Liste stehen, dass der Schiebebalken nur noch ein winziger Knopf ist, verliert er seine Brauchbarkeit.
Nachteil sowohl von 2 und 3 kann sein, dass bei einer sehr großen Anzahl von Produkten der Umfang der zu übertragenden Seite entsprechend riesig wird. Ob die Produkte nun direkt in <select> stehen (Variante 3) oder als Feld in der Funktion prodname() (Variante 2), ist dabei unerheblich, es müssen beim Seitenabruf immer alle Produkte übertragen werden.
Und da wäre dann auch der einzige Vorteil von Variante 1, der Verwendung von Ajax: Es werden nur die Produkte übertragen, die auch tatsächlich benötigt werden. Nachteil ist, mal abgesehen vom Javascript-Zwang, dass die Produktübertragung erst beim Markenwechsel passiert. Das Formular reagiert also etwas später als bei den beiden anderen Varianten, wo alle Produkte schon im Browser vorliegen.
Ich würde Ajax deshalb wirklich nur da einsetzen, wo es um viele hundert oder gar tausende Produkte geht. Bereits übertragene Produktlisten müssten auch unbedingt zwischengespeichert werden, damit nicht bei jedem Wechsel von Grundig nach Blaupunkt und zurück nach Grundig wieder die Grundig-Produkte vom Server geholt werden müssen.
Tipp zum Schluss: Die Javascript-Bibliothek prototype bietet einige nützliche Funktionen, sowohl was den Zugriff auf HTML-Elemente angeht als auch insbesondere Ajax.