Проверьте внешний массив из формы

Я создал форму в HTML. В этой форме вы можете указать операционную систему. Форма выглядит так:

<input type="hidden" name="toshibaproduct" value="001"/>
<input type="hidden" name="toshibamerk" value="toshiba"/>
<input type="hidden" name="toshibamodel" value="Sattelite A100-510"/>
Operating system <select name="beschikbaarheid" value="true">
<option value="xp">Windows XP</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>
Aantal: <input type="text" size=2 maxlength=3 name="toshibaaantal" value="0"/>
<input type="hidden" name="toshibaprijs" value="999.99"/>
<input type="image" src="bestel.jpg" border=0 value="bestellen"/>

Я также создал внешнюю функцию, которую я включил в страницу, которая выглядит следующим образом:

<?php
function beschikbaarheid($merk, $os)
{
$beschikbaar = array(
"Toshiba" => array("xp" => true, "vista" => false, "linux" => true),
"Acer" => array("xp" => true, "vista" => true, "linux" => true),
"Hp" => array("xp" => true, "vista" => false, "linux" => true));
return ($beschikbaar[$merk][$os]);
}
?>

Мой план состоит в том, чтобы позволить форме проверять во внешней функции, доступна ли операционная система или нет, и если нет, возвращать сообщение о том, что она распродана. если он доступен, он должен просто продолжить работу с остальным сценарием (который работает, между прочим, но здесь он не включен).

Дело в том, что я не знаю, как заставить форму проверять массив во внешней функции. Мне также интересно, если проблема в том, что во внешней функции проверяется только операционная система, а не в остальной части формы, например, в количестве.

0

Решение

Обновленный HTML

<head>
<!-- include jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
</head>

<input type="hidden" name="toshibaproduct" value="001" />
<input type="hidden" name="toshibamerk" value="toshiba" />
<input type="hidden" name="toshibamodel" value="Sattelite A100-510" />
Maker
<select name="maker" value="true" id="maker">
<option value="toshiba">Toshiba</option>
<option value="acer">Acer</option>
<option value="hp">Hp</option>
</select>
Operating system
<select name="beschikbaarheid" value="true" id="operationSystem">
<option value="xp">Windows XP</option>
<option value="vista">Windows Vista</option>
<option value="linux">Linux</option>
</select>
Aantal: <input type="text" size=2 maxlength=3 name="toshibaaantal" id="quantity" value="0" />
<input type="hidden" name="toshibaprijs" value="999.99" />
<input type="button" value="bestellen" id="submitData" />

<span id="messages"></span>

Ajax

<!-- Ajax -->
<script type="text/javascript">
$('#submitData').click(function(){
var selectedOs = $('#operationSystem').find('option:selected').val();
var selectedMaker = $('#maker').find('option:selected').val();
var selectedQuantity = $('#quantity').val();
if(selectedQuantity == 0 || selectedQuantity == ''){
$('#messages').text('Please provide valid information');
return false;
}
// You can perform an ajax request using the .ajax() method
$.ajax({
type: 'POST',
url: 'beschikbaarheid.php', // This is the url that will be requested
data: {operation_system: selectedOs, maker: selectedMaker, quantity: selectedQuantity},
success: function(data){
if(data){
$('#messages').text('Available');
}else{
$('#messages').text('Not available');
}
},
});

});
</script>

Серверный скрипт (beschikbaarheid.php)

<?php
if(isset( $_POST['quantity'] )) {
$operatingSystem  = $_POST['operation_system'];
$maker  = $_POST['maker'];
$quantity  = $_POST['quantity'];
echo beschikbaarheid($operatingSystem, $maker, $quantity);
}
function beschikbaarheid($operatingSystem, $maker, $quantity)
{
// I did't used the quantity section
// Please use it if needed
// Also this structure is not much prefered, I just used this becasuse you might have some out put like this.
$beschikbaar = array(
"toshiba" => array ("xp" =>false, "vista" => false, "linux" => true),
"hp" => array ("xp" =>true, "vista" => false, "linux" => true),
"acer" => array ("xp" =>true, "vista" => false, "linux" => true)
);
return $beschikbaar[$maker][$operatingSystem];
}
?>

Есть разные способы добиться этого, надеюсь, это поможет.

1

Другие решения

Попробуйте написать функции JavaScript или jQuery, если вам нужно проверить это перед отправкой формы. Иначе, вы можете вызвать функцию на странице, где данные отправляются. Затем вы можете проверить поле и сгенерировать ответ.

0

Если, например, у вас есть файл JSON со списком доступных операционных систем, вы можете использовать его для проверки выбора в списке.

`os.json`
[
"Windows Vista", "Windows XP", "OSX", "Linux"]
some other PHP file
<?php
function is_os_available($os) {
return in_array($os, json_decode(file_get_contents('os.json')));
}

Надеюсь это поможет,
Шон

0
По вопросам рекламы [email protected]