Я программист-любитель, поэтому, пожалуйста, будьте милы: -)
Я пытался (часами и часами!) Разработать веб-форму, которая при отправке одного элемента формы (например, номера сотрудника) извлекает данные с удаленного веб-сервера SQL и заполняет другие поля веб-страницы. (например, имя, адрес, номер телефона и т. д.). Все довольно обычные вещи, и я пытался принять и адаптировать многочисленные примеры из StackOverflow.
Подходом является HTML-форма для сбора EmployeeID, javascript getJSON для запроса данных через скрипт php удаленного сервера, который подключается к базе данных SQL, запрашивает базу данных, создает возвращаемый массив и json_encodes-кодирует его обратно в веб-форму.
Постоянная проблема заключается в том, что данные не передаются обратно в веб-форму и поэтому не заполняют другие поля.
Итак, я искал и нашел учебник, в котором был загружаемый «рабочий» пример кода (подтверждение https://www.electrictoolbox.com/json-data-jquery-php-mysql/).. Этот пример заполняет опции выбора сорта, когда фрукт выбран, и очень прост в своем подходе к кодированию. используя это, чтобы заставить работать базовую функциональность, но даже этот простой код не хочет играть красиво :-) Я уверен, что это что-то простое, но я просто не могу найти проблему.
Я изменил соединение с базой данных SQL с PDO на Mysqli, поскольку не мог заставить PDO вообще работать с SQL Server.
Я ожидаю, что в форме будут отображаться элементы в раскрывающемся списке «Разнообразие», извлеченные из базы данных, в соответствии с типом фруктов.
Вот файл fruit.html с Javascript:
<!doctype html>
<html>
<head>
<title>Untitled 1</title>
</head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
function populateFruitVariety() {
$.getJSON('https://mysite.com.au/Secure/fruit-varieties.php', {fruitName:$('#fruitName').val()}, function(data) {
var select = $('#fruitVariety');
var options = select.prop('options');
$('option', select).remove();
$.each(data, function(index, array) {
options[options.length] = new Option(array['variety']);
});
});
}
$(document).ready(function() {
populateFruitVariety();
$('#fruitName').change(function() {
populateFruitVariety();
});
});
</script>
<body>
<form name="testfruit" onsubmit="populateFruitVariety();">
Fruit: <select id="fruitName" name="name">
<option>Apple</option>
<option>Banana</option>
<option>Orange</option>
<option>Pear</option>
</select> Variety: <select id="fruitVariety" name="variety"></select>
<input type="submit" name="submit" value="Search">
</form>
</body>
</html>
и вот тот файл fruit-variety.php, который работает на удаленном сервере SQL:
<?php
// Connect using SQL Server Authentication.
$con = mysqli_connect($serverName, $username, $password);
if (!$con) {
echo 'Unable to connect to SQL server: ' . mysqli_error();
die('Unable to connect to SQL server: ' . mysqli_error());
}
// Select database
mysqli_select_db($con,$databaseName);
if (!$con) {
echo 'Unable to open database: ' . mysqli_error();
die('Unable to open database: ' . mysqli_error());
}
$fruitName = $_GET['fruitName'];
echo $fruitName.'|';
$rows = array();
if(isset($_GET['fruitName'])) {
$sql= "SELECT variety FROM fruit WHERE name = '$fruitName' ORDER BY variety";
$rows = mysqli_fetch_assoc(mysqli_query($con, $sql));
if (!$con) {
echo 'Query failed: ' . mysqli_error();
die('Query failed: ' . mysqli_error());
}
}
echo json_encode($rows);
?>
и, наконец, вот конструкция базы данных SQL и примеры данных:
SQL to create the table and populate with example data
CREATE TABLE IF NOT EXISTS `fruit` (
`fruit_id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`variety` varchar(50) NOT NULL,
PRIMARY KEY (`fruit_id`)
);
INSERT INTO `fruit` (`fruit_id`, `name`, `variety`) VALUES
(1, 'Apple', 'Red Delicious'),
(2, 'Pear', 'Comice'),
(3, 'Orange', 'Navel'),
(4, 'Pear', 'Bartlett'),
(5, 'Orange', 'Blood'),
(6, 'Apple', 'Cox''s Orange Pippin'),
(7, 'Apple', 'Granny Smith'),
(8, 'Pear', 'Anjou'),
(9, 'Orange', 'Valencia'),
(10, 'Banana', 'Plantain'),
(11, 'Banana', 'Burro'),
(12, 'Banana', 'Cavendish');
Спасибо всем - очень ценю любую помощь, которую вы можете мне оказать!
Приветствие
... Стив