2016-02-16 91 views
-1

我有一個簡單的HTML選擇選項,它應該自動發送OnChange。我應該說,表單似乎發送或「重新加載頁面」。另一端我沒有收到任何數據。我已嘗試POSTGET我已將表格數據的每個部分重命名並更改了整個if(isset()信息。任何想法,爲什麼我沒有得到任何數據?爲什麼我在使用OnChange提交時無法訪問表單數據?

FORM:

<?php 
$system1 = mysqli_fetch_assoc(mysqli_query($conn, 
       "SELECT * FROM ap_system_status WHERE system_id = '1'")); 
$system_id_1 = $system1['system_id']; 
$system_name_1 = $system1['system_name']; 
$system_status_1 = $system1['system_status']; 
?> 
<strong><? echo $system_name_1; ?></strong> 
<div align="right" style="float:right"> 
    <div class="form-group"> 
     <form action="" method="GET" id="system_status" name="system_status"> 
      <input type="hidden" id="system_id" value="<? echo $system_id_1; ?>" /> 
      <select class="form-control" onchange="this.form.submit()" id="status"> 
       <option disabled="disabled" selected="selected" hidden="hidden"><? echo $system_status_1; ?></option> 
       <option value='<i class="fa fa-exclamation-triangle" style="color:#F60"></i> Experiencing Errors'>Experiencing Errors</option> 
       <option value='<i class="fa fa-exclamation-triangle" style="color:#F60"></i> Being Updated'>Being Updated</option> 
       <option value='<i class="fa fa-exclamation-triangle" style="color:#F60"></i> Maintenance Mode'>Maintenance Mode</option> 
       <option value='<i class="fa fa-times-circle-o" style="color:#F00"></i> System Offline'>System Offline</option> 
       <option value='<i class="fa fa-check-circle-o" style="color:#090"></i> Good Service'>Good Service</option> 
      </select> 
      <noscript><input type="submit" value="Submit"></noscript> 
     </form> 

數據收集(非常基本的,但只測試!!):

<?php 
if(isset($_POST['system_status'])){ 
    $system_id = $_POST['system_id']; 
    $status = $_POST['status']; 
    echo $system_id; 
    echo $status; 
}else{ 

} 
?> 
+0

您的選擇沒有'name'。 –

+0

我已經添加了一個名稱,並改爲'post',但仍然沒有任何內容 – Snappysites

+0

您檢查'if(isset($ _ POST ['system_status'))){',但我沒有看到將設置的位置。命名不會產生這種效果的表單。 –

回答

3

一對夫婦更改您的形式和PHP的應該得到這個工作。爲了將表單元素與表單一起提交,它們必須具有name屬性,並且表單method必須與您在PHP中訪問的超全局($_GET$_POST)匹配。

<!--Change the form method to match what you are using in your PHP--> 
<form action="" method="POST" id="system_status" name="system_status"> 
    <!--Add a name to this input--> 
    <input type="hidden" id="system_id" value="<? echo $system_id_1; ?>" name="system_id" /> 
    <!--Add a name to this select--> 
    <select class="form-control" onchange="this.form.submit()" id="status" name="status"> 
     <option disabled="disabled" selected="selected" hidden="hidden"><? echo $system_status_1; ?></option> 
     <!--Not related to your question, but switch the value attribute with the 
     option text so you can see your icons and get the value I assume you expect--> 
     <option value="Experiencing Errors"><i class="fa fa-exclamation-triangle" style="color:#F60"></i> Experiencing Errors</option> 
     ... 
    </select> 
    <noscript><input type="submit" value="Submit"></noscript> 

我真的不建議擺脫isset檢查完全的,但修改它,這樣它實際上驗證您要使用的值都存在。

<?php 
if (!empty($_POST['system_id']) && !empty($_POST['status'])) { 
    $system_id = $_POST['system_id']; 
    $status = $_POST['status']; 
    echo $system_id; 
    echo $status; 
} else { 
    // error handling for missing values 
} 
相關問題