Hallo,
Ich habe ein Formular, welches 3 Selects enthält. Das erste wird durch eine SQL Abfrage gefüttert.
Das zweite ist von der Auswahl des ersten Abhängig.
Das Dritte ist wiederum von der Auswahl im zweiten abhängig.
Ich habe jetzt soweit das erste und das zweite Dropdown dynamisch füllen können.
Jedoch beim Dritten bekomme ich in der Console den Fehler: "Unexpected token [ in JSON at line 8".
Das ist mein HTML und Javascript zum befüllen:
<form method=POST action="bestand-ausgabe.php">
<fieldset>
<legend>Daten eingeben</legend>
<div class="form-group">
<label for="typ">Typ: </label>
<select id="typ" name="typ" class="form-control" onChange="getHersteller(this.value);">
<option value="all" selected>Alle</option>
<?php
foreach ($conn->query($sql2) as $row) {
echo "<option value =" . $row['typ'] . ">" . $row['typ'] . "</option>";
}
?>
</select>
</div>
<script type="text/javascript">
$("#typ").val($("#typ option:eq(0)").val());
</script>
<div class="form-group">
<!-- Dropdown-Box erstellen und mit Hersteller Werten füllen -->
<label for="hersteller">Hersteller: </label>
<select id="hersteller" name="hersteller" class="form-control" onChange="getArtikel(this.value);">
<script type="text/javascript">
function getHersteller(val) {
$.ajax({
type:"POST",
url: "abfrage.php",
data: {
"typ": val
},
success: function(data){
data = JSON.parse(data);
var html = [];
html.push('<option value="all">Alle</option>')
for (var i in data) {
var hersteller = data[i];
html.push('<option value="'+hersteller+'">'+hersteller+'</option>')
}
$("#hersteller").html(html.join(''));
}
});
}
</script>
<option value="all" selected>Alle</option>
<?php
foreach ($conn->query($sql3) as $row) {
echo "<option value =" . $row['hersteller'] . ">" . $row['hersteller'] . "</option>";
}
?>
</select>
</div>
<script type="text/javascript">
$("#hersteller").val($("#hersteller option:eq(0)").val());
</script>
<div class="form-group">
<!-- Dropdown-Box erstellen und mit Modell Werten füllen -->
<label for="artikel">Artikel: </label>
<select id="artikel" name="artikel" class="form-control">
<script type="text/javascript">
function getArtikel(val) {
var typ = document.getElementById("typ").value;
$.ajax({
type:"POST",
url: "abfrage.php",
data: {
"hersteller": val,
"typ": typ
},
success: function(data){
data = JSON.parse(data);
var html = [];
html.push('<option value="all">Alle</option>')
var z = 1;
for (var i in data) {
html.push('<option value="'+data[i].ID+'">'+data[i].name+'</option>')
z = z+1;
}
$("#artikel").html(html.join(''));
}
});
}
</script>
<option value="all" selected>Alle</option>
<?php
foreach ($conn->query($sql4) as $row) {
echo "<option value =" . $row['ID'] . ">" . $row['artikel'] . "</option>";
}
?>
</select>
Alles anzeigen
Und hier meine PHP Datei welche die Abfragen macht:
<?php
include "db.php";
$typ=$_POST['typ'];
if($typ=='all'){
$response = array();
$query="SELECT DISTINCT hersteller FROM Artikel";
$stmt = $conn->prepare($query);
$stmt->execute(array($typ));
$data = $stmt->fetchAll();
foreach ($data as $row) {
$response[] = $row['hersteller'];
}
echo json_encode($response);
}else{
$response = array();
$query1="SELECT DISTINCT hersteller FROM Artikel WHERE typ=?";
$stmt = $conn->prepare($query1);
$stmt->execute(array($typ));
$data1 = $stmt->fetchAll();
foreach ($data1 as $row) {
$response[] = $row['hersteller'];
}
echo json_encode($response);
}
if(isset($_POST['hersteller'])){
$hersteller=$_POST['hersteller'];
$response = array();
$query2="SELECT ID, artikel FROM Artikel WHERE typ=? AND hersteller=?";
$stmt = $conn->prepare($query2);
$stmt->execute(array($typ, $hersteller));
$data2 = $stmt->fetchAll();
foreach ($data2 as $row) {
$response[] = array("ID" => $row['ID'], "artikel" => $row['artikel']);
}
echo json_encode($response);
}
?>
Alles anzeigen
Kann mir jemand sagen was der Fehler ist?
Mein Aray welches ich als Response zurück bekomme sieht so aus:
[{"ID":"1","artikel":"Optiplex 5050"},{"ID":"2","artikel":"Optiplex 7040"},{"ID":"10","artikel":"Latitude 5580"}]
Bin ein Javascript Neuling freu mich also über jede Hilfe.