2016-05-17 102 views
1

我有一個網絡程序,其目標是繪製用戶選擇的某個窯的數據點。我的問題是,當一個用戶想要選擇一個新的窯,我怎麼能更新所有單獨的JSON頁數據從他們選擇的新表中拉出的地方?我怎樣纔能有一個PHP查詢基於下拉列表選擇選擇某個表?

這是我的下拉列表creater代碼。

<p class="navleft"> 
 
Kiln Number:<br> 
 
<select name="kilns" id="kilns"> 
 
<?php 
 
$sql = "SHOW TABLES FROM history"; 
 
$result = mysqli_query($con,$sql); 
 

 
while($table = mysqli_fetch_array($result)) { // go through each row that was returned in $result 
 
\t echo ("<option value='". $table[0] . "'>" . $table[0] . "</option>"); 
 
} 
 
?> 
 
</select> 
 
</p>

這裏是我從一個表中的值選擇所有的數據,並把它變成一個JSON文件中的PHP頁面。

<?php 
 
$con = mysqli_connect("localhost","KilnAdmin","KilnAdmin","history"); 
 

 
// Check connection 
 
if (mysqli_connect_errno()) 
 
    { 
 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
 
    } 
 

 
mysqli_select_db($con,"history") or die ("no database"); 
 

 
//Fetch Data 
 
$query = "SELECT * FROM k1_history LIMIT 1000"; 
 
$result = mysqli_query($con,$query); 
 

 
if ($result) { 
 
\t $data = array(); 
 
\t while($row = mysqli_fetch_assoc($result)) { 
 
\t \t //$data[] = $row; 
 
     $data[] = array(
 
\t \t \t "date" => $row[ 'Timestamp' ], 
 
\t \t \t "value" => $row[ 'DryBulbFront' ] 
 
\t \t); 
 
    } 
 
\t echo json_encode($data); 
 
} 
 
else { 
 
\t echo "Error"; 
 
} 
 
?>

凡說k1_history,我怎麼能得到這從從其他網頁保管箱菜單中的用戶的選擇?

+0

沒有真正得到的問題,但不能只是將選定的值保存在db \文件中? – 2016-05-17 21:56:10

+0

你的問題很奇怪,因爲上面的代碼顯示了你不知道如何在腳本之間傳遞變量的情況下得不到的知識水平。要理解你必須理解表單,動作,服務器變量或ajax。創建一個答案讓你理解所有這些概念是非常棘手的。特別考慮到上述事實。你從哪裏得到這個代碼? –

回答

0

如果我正確理解你想要的東西,那麼你需要的是Ajax。

您必須像選擇一樣填充選擇對象,並對每個選擇項進行Ajax調用,以處理用戶選擇的內容.php。在你的情況下,這個.php文件將採用用戶選擇的表名,運行一個查詢並將一些結果返回給html。爲了演示目的,我會用一個例子來解釋。

讓我們在你的.html說你有一個選擇是這樣的:

Select Value: 
    <select name="kilns" id="kilns"> 
     <option value="1">Option 1</option> 
     <option value="2">Option 2</option> 
     <option value="3">Option 3</option> 
    </select> 

什麼在選項的值屬性定義就是你要傳遞給我提到的PHP文件。要做到這一點,你使用Ajax,所以裏面的一些script標籤必須:

$('#kilns').on('change', function(e) { 
    var data = {'kilns': this.value}; 
    $.ajax({ 
     type: 'POST', 
     url: 'submit.php', 
     data: data, 
     dataType: 'json' 
    }).done(function(msg) { 
     alert(msg); 
    }); 
}); 

這裏做的事情是,每次用戶選擇從select的東西,那麼這個函數被調用,其中選擇的值(var data = {'kilns': this.value}; )正在通過POST發送到名爲submit.php的文件。該submit.php看起來是這樣的:

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $kilns_error = 0; 

    if (isset($_POST['kilns']) && !empty($_POST['kilns'])) { 
     $kilns = $_POST['kilns']; 
    } else { 
     $kilns = null; 
     $kilns_error = 1; 
    } 

    if ($kilns_error != 1) { 
     echo json_encode($kilns); 
    } 
} 

這裏發生的是在我們確認我們確實是一個POST REQUEST,我們檢查值是否是未定義或空。在這個簡單的檢查之後,我們繼續到echo json_encode($kilns);,我們返回最初發送給.php腳本的值,這實際上是用戶選擇的值。

在你的情況下,你必須做的是在.php腳本中實際做一些事情,而不只是返回你調用它的值。此外,請務必傳遞您通過白名單的值,以確保用戶選擇實際的表並且不會爲您的數據庫創建問題,因爲只需更改他將要執行的操作的值就很容易選擇之前選擇它。看看mysqli和PDO的準備好的語句。

+1

非常感謝!完美的作品。 –

+0

我很高興聽到! :)如果答案滿足你要求幫助未來訪問者的問題,請將此答案標記爲解決方案。 –

相關問題