Я пытаюсь создать выпадающий список, который динамически заполняется из моей базы данных. Существует 9 выпадающих списков, и 10-й должен автоматически распечатать номер продукта на основе вышеуказанных вариантов.
Код в настоящее время функционирует, но только частично. Он будет использовать только данные из непосредственного предыдущего выбора для заполнения следующего списка; вместо ссылки на все предыдущие выборы. Все данные находятся в одной таблице в базе данных.
Это приводит к тому, что опции отображаются внизу в списках, которые больше не должны быть доступны после предыдущих выборов, а номер продукта в 10-й позиции выплевывает огромное количество номеров продуктов, потому что он ссылается только на выбор чуть выше Это.
Мне нужно, чтобы каждый выбор выбирался ссылками для каждого выбора после него.
Я пытался добавить '". $ _ POST [' ']."' К моему оператору select, к моему предложению where, чтобы попытаться сослаться на предыдущие выборы, но это либо ничего не возвращает, либо приводит к внутренней ошибке сервера.
Я не уверен, что это правильный путь или что отсутствует в моем коде, чтобы заставить это работать.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Product Builder Tool</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$(".product_type").change(function()
{
var product_type=$(this).val();
var dataString = 'product_type='+ product_type;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".voltage").html(html);
}
});
});
$(".voltage").change(function()
{
var voltage=$(this).val();
var dataString = 'voltage='+ voltage;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".capacity").html(html);
}
});
});
$(".capacity").change(function()
{
var capacity=$(this).val();
var dataString = 'capacity='+ capacity;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".modes").html(html);
}
});
});
$(".modes").change(function()
{
var modes=$(this).val()
var dataString = 'modes='+ modes;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".connection").html(html);
}
});
});
$(".connection").change(function()
{
var connection=$(this).val();
var dataString = 'connection='+ connection;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".status").html(html);
}
});
});
$(".status").change(function()
{
var status=$(this).val();
var dataString = 'status='+ status;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".enclosure").html(html);
}
});
});
$(".enclosure").change(function()
{
var enclosure=$(this).val();
var dataString = 'enclosure='+ enclosure;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".ul_type").html(html);
}
});
});
$(".ul_type").change(function()
{
var ul_type=$(this).val();
var dataString = 'ul_type='+ ul_type;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".options").html(html);
}
});
});
$(".options").change(function()
{
var options=$(this).val();
var dataString = 'options='+ options;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".product_number").html(html);
}
});
});
$(".product_number").change(function()
{
var product_number=$(this).val();
var dataString = 'product_number='+ product_number;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".price").html(html);
}
});
});
$(".price").change(function()
{
var price=$(this).val();
var dataString = 'price='+ price;
$.ajax
({
type: "POST",
url: "get_ajax.php",
data: dataString,
cache: false,
success: function(html)
{
$(".picture_link").html(html);
}
});
});
});
</script>
<style>
label
{
font-weight:bold;
padding:10px;
}
div
{
margin-top:100px;
}
select
{
width:400px;
height:35px;
border:2px solid #456879;
border-radius:10px;
}
.color {
color:blue;
}
.link {
color:red;
}
</style>
</head>
<body>
<h1 align="center" class="color">Product Builder Tool</h1>
<center>
<div>
<label>Product Type:</label>
<select distinct name="product_type" class="product_type">
<option selected="selected">--Select Product Type--</option>
<?php
$stmt = $DB_con->prepare("SELECT DISTINCT product_type FROM surge_unit");
$stmt->execute();
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['product_type']; ?>"><?php echo $row['product_type']; ?></option>
<?php
}
?>
</select>
<br><br>
<label>Voltage and Phase:</label> <select name="voltage" class="voltage">
<option selected="selected">--Select Voltage and Phase--</option>
</select>
<br><br>
<label>Capacity:</label> <select name="capacity" class="capacity">
<option selected="selected">--Select Capacity--</option>
</select>
</select>
<br><br>
<label>Modes:</label> <select name="modes" class="modes">
<option selected="selected">--Select Modes Protected--</option>
</select>
</select>
<br><br>
<label>Connection Type:</label> <select name="connection" class="connection">
<option selected="selected">--Select Connection Type--</option>
</select>
</select>
<br><br>
<label>Status Indication:</label> <select name="status" class="status">
<option selected="selected">--Select Status Indication--</option>
</select>
</select>
<br><br>
<label>Enclosure:</label> <select name="enclosure" class="enclosure">
<option selected="selected">--Select Enclosure--</option>
</select>
</select>
<br><br>
<label>UL 1449 Location Type:</label> <select name="ul_type" class="ul_type">
<option selected="selected">--Select UL 1449 Type--</option>
</select>
</select>
<br><br>
<label>Options:</label> <select name="options" class="options">
<option selected="selected">--Select Options--</option>
</select>
<br>
<label>Product Number:</label>
<echo selected="selected" name="product_number" class="product_number">Product Number</echo>
<br><br><br>
</div>
<br />
</center>
</body>
</html>
И это файл get для AJAX.
<?php
include('dbconfig.php');
if($_POST['product_type'])
{
$voltage=$_POST['product_type'];
$stmt = $DB_con->prepare("SELECT DISTINCT voltage FROM surge_unit WHERE product_type=:product_type");
$stmt->execute(array('product_type' => $voltage));
?><option selected="selected">Select Voltage & Phase</option><?php
while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['voltage']; ?>"><?php echo $row['voltage']; ?></option>
<?php
}
}
if($_POST['voltage'])
{
$capacity=$_POST['voltage'];
$stmt = $DB_con->prepare("SELECT DISTINCT capacity
FROM surge_unit WHERE voltage =:voltage" );
$stmt->execute(array('voltage' => $capacity));
?><option selected="selected">Select Capacity</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['capacity']; ?>"><?php echo $row['capacity']; ?></option>
<?php
}
}
if($_POST['capacity'])
{
$modes=$_POST['capacity'];
$stmt = $DB_con->prepare("SELECT DISTINCT modes FROM surge_unit WHERE capacity=:capacity");
$stmt->execute(array(':capacity' => $modes));
?><option selected="selected">Select Modes Protected</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['modes']; ?>"><?php echo $row['modes']; ?></option>
<?php
}
}
if($_POST['modes'])
{
$connection=$_POST['modes'];
$stmt = $DB_con->prepare("SELECT DISTINCT connection FROM surge_unit WHERE modes=:modes");
$stmt->execute(array(':modes' => $connection));
?><option selected="selected">Select Connection Type</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['connection']; ?>"><?php echo $row['connection']; ?></option>
<?php
}
}
if($_POST['connection'])
{
$status=$_POST['connection'];
$stmt = $DB_con->prepare("SELECT DISTINCT status FROM surge_unit WHERE connection=:connection");
$stmt->execute(array(':connection' => $status));
?><option selected="selected">Select Status Indication</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['status']; ?>"><?php echo $row['status']; ?></option>
<?php
}
}
if($_POST['status'])
{
$enclosure=$_POST['status'];
$stmt = $DB_con->prepare("SELECT DISTINCT enclosure FROM surge_unit WHERE status=:status");
$stmt->execute(array(':status' => $enclosure));
?><option selected="selected">Select Enclosure</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['enclosure']; ?>"><?php echo $row['enclosure']; ?></option>
<?php
}
}
if($_POST['enclosure'])
{
$ul_type=$_POST['enclosure'];
$stmt = $DB_con->prepare("SELECT DISTINCT ul_type FROM surge_unit WHERE enclosure=:enclosure");
$stmt->execute(array(':enclosure' => $ul_type));
?><option selected="selected">Select UL 1449 Type</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['ul_type']; ?>"><?php echo $row['ul_type']; ?></option>
<?php
}
}
if($_POST['ul_type'])
{
$options=$_POST['ul_type'];
$stmt = $DB_con->prepare("SELECT DISTINCT options FROM surge_unit WHERE ul_type=:ul_type");
$stmt->execute(array(':ul_type' => $options));
?><option selected="selected">Select Options</option>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<option value="<?php echo $row['options']; ?>"><?php echo $row['options']; ?></option>
<?php
}
}
if($_POST['options'])
{
$product_number=$_POST['options'];
$stmt = $DB_con->prepare("SELECT DISTINCT product_number FROM surge_unit WHERE options=:options");
$stmt->execute(array(':options' => $product_number));
?>
<?php while($row=$stmt->fetch(PDO::FETCH_ASSOC))
{
?>
<?php echo $row['product_number']; ?><?php $row['SELECT product_number FROM surge_unit WHERE options=id9']; ?>
<?php
}
}
?>
Чего мне не хватает, чтобы заставить эту работу работать правильно?
Я почти уверен, что в моих операторах select должно быть несколько предложений AND в предложении WHERE, но я не могу заставить его работать вообще, когда пытаюсь. Разве Ajax не посылает правильную информацию, чтобы он мог выбрать более ранние варианты?