Guten Abend,
durch das Forum konnte ich schon einige lernen. Hab mich nun entschlossen hier anzumelden da ich einfach nicht mehr weiter kommen. Ich hoffe mein Vorhaben ist nicht so schwer umzusetzen. ich bin schon am verzweifeln.
Ich habe in meiner Datenbank zwei Tabellen (an diesen kann ich leider auch nichts mehr ändern, da diese bereits mehrere Tausend Einträge haben)
CREATE TABLE IF NOT EXISTS `web_hersteller` (
`h_id` int(11) NOT NULL,
`h_titel` varchar(100) NOT NULL,
`h_titelURL` varchar(100) NOT NULL,
`h_status` varchar(2) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=38 DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `web_serien` (
`s_id` int(11) NOT NULL,
`s_hID` varchar(100) NOT NULL,
`s_titel` varchar(200) NOT NULL,
`s_titelUrl` varchar(200) NOT NULL,
`s_status` varchar(1) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=127 DEFAULT CHARSET=utf8;
In der ersten Tabelle in alle Hersteller vorhanden z.B.
Brother
Canon
Dell
In der zweiten Tabelle in alle Serien aufgelistet z.B.
AX
BSE
CE
Das erste Auswahlfeld mit den Herstellern lasse ich durch diesen (auch hier im Forum gefunden und angepassten) Code füllen:
function hersteller($mysqli) {
$stmt = $mysqli->prepare("SELECT id, titel, titelURL, status FROM web_hersteller");
$stmt->execute();
$stmt->bind_result($id, $titel, $titelURL, $status);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$hersteller[] = array(
'id' => $id,
'titel' => $titel,
'titelURL' => $titelURL,
'status' => $status
);
}
return $hersteller;
}
}
Alles anzeigen
<select name="hersteller" id="hersteller">
<option>-- Bitte wählen --</option>
<?php
$hersteller = hersteller($mysqli);
foreach($hersteller as $array){ ?>
<option value="<?php echo $array['id'];?>"<?php echo ($s_hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
<?php } ?>
</select>
Klappt auch alles wunderbar. Nun habe ich ein zweites Auswahlfeld mit allen Serien dieses wird mit diesem PHP Code gefüllt
function serien($mysqli) {
$stmt = $mysqli->prepare("SELECT id, hID, titel, titelUrl, status, titel FROM web_serien LEFT JOIN web_hersteller ON web_hersteller.id = web_serien.hID");
$stmt->execute();
$stmt->bind_result($id, $hID, $titel, $titelUrl, $status, $titel);
$stmt->store_result();
if($stmt->num_rows() > 0) {
while ($stmt->fetch()){
$serien[] = array(
'id' => $id,
'hID' => $hID,
'titel' => $titel,
'titelUrl' => $titelUrl,
'status' => $status,
'titel' => $titel
);
}
return $serien;
}
}
Alles anzeigen
<select name="serien" id="serien">
<option>-- Bitte wählen --</option>
<?php
$serien = serien($mysqli);
foreach($serien as $array){ ?>
<option value="<?php echo $array['id'];?>"<?php echo ($hID == $array['id'] ? "selected" : "");?>><?php echo $array['titel'];?></option>
<?php } ?>
</select>
Ab jetzt fangen meine Probleme an. Das zweite Auswahlfeld darf natürlich nur diese Daten beinhalten, die zum Hersteller passen, welchen ich im ersten Auswahlfeld ausgewählt habe. Ist im ersten noch nichts ausgewählt, sollte das untere leer sein. Gut währe, wenn die Seite nicht neu aufgebaut wird. Ich habe hier http://www.blogrammierer.de/jq…-boxen-mit-ajax-befullen/ auch etwas gefunden, aber das sieht für mich nicht wirklich gut aus, denn dann hätte ich ja ständig alle Daten in einer Datei stehen?
Ich hoffe ich habe es so geschrieben, dass ihr mein Problem erkennt und mir wenn möglich helfen könnt. Hoffe es ist nicht all zuschwer.