2015-12-11 1 views
0

Я создал форму в html. в этой форме вы можете указать операционную систему. Форма выглядит следующим образом:php - проверить внешний массив из формы

<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]); 
} 
?> 

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

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

ответ

1

Обновлено 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]; 
} 
?> 

Существуют различные способы для достижения этой цели, я надеюсь, что это помогает.

+0

Спасибо Nikhil, Это дает мне много информации, чтобы добраться до решения! – Lennart

+0

Рад знать бутон :-) – Nikhil

0

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

+0

Вещь, мое учебное пособие требует от меня использовать внешнюю функцию и придерживаться html и php. Может быть, это не очень хорошая работа, чтобы быть почетным, но я пытаюсь придерживаться книги. – Lennart

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

Привет, Шон, спасибо за ответ! Кажется, это лучший выбор! Дело в том, что я придерживаюсь своего учебника, которое требует, чтобы я использовал функцию php во внешнем файле. Может быть, это то, что книга, которую она меня спрашивает, нереалистична? – Lennart

+0

Возможно, ваша книга ссылается на инструкцию [include] (https://secure.php.net/manual/en/function.include.php). В котором вы бы просто вызвали функцию, как если бы она была в вашем файле –

+0

Привет, Шон, это было! Оказалось, что я неправильно интерпретирую функцию. После использования функции правильно она работала как шарм! – Lennart

Смежные вопросы