2017-04-10 40 views
1

我知道我需要使用AJAX來更新結果的網頁。我的想法是運行查詢並將結果發送回窗體。通常這只是查詢的成功或失敗,但有時需要返回文本。該平臺是Linux。我將如何通過網頁控制PostgreSQL?

+1

這看起來有點不限。你已經有什麼 - PHP腳本,客戶端代碼等? – Manngo

+0

什麼都沒有。這是一個綠地的情況。那麼,這不完全正確。有一堆SQL等待從舊式DBMS中應用。 –

+0

你可以通過ajax,json,jscript和php –

回答

0

這個例子是基於在網站上做出了榜樣https://www.w3schools.com

getuser.php

<!DOCTYPE html> 
<html> 
<head> 
<style> 
table { 
    width: 100%; 
    border-collapse: collapse; 
} 

table, td, th { 
    border: 1px solid black; 
    padding: 5px; 
} 

th {text-align: left;} 
</style> 
</head> 
<body> 

<?php 
$q = intval($_GET['q']); 

$dbconn = pg_connect('localhost','peter','abc123','my_db'); 
if (!$con) { 
    die('Could not connect'); 
} 



$query = "SELECT * FROM user WHERE id = $1"; 
$result = pg_prepare($dbconn, "my_query", $query); 

$data = array($q); 
$result = pg_execute($dbconn, "my_query", $data); 


echo "<table> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Age</th> 
<th>Hometown</th> 
<th>Job</th> 
</tr>"; 
while($row = pg_fetch_row($result)) { 
    echo "<tr>"; 
    echo "<td>" . $row[0] . "</td>"; 
    echo "<td>" . $row[1] . "</td>"; 
    echo "<td>" . $row[2] . "</td>"; 
    echo "<td>" . $row[3] . "</td>"; 
    echo "<td>" . $row[4] . "</td>"; 
    echo "</tr>"; 
} 
echo "</table>"; 
pg_close($dbconn); 
?> 
</body> 
</html> 

在HTML

<html> 
<head> 
<script> 
function showUser(str) { 
    if (str == "") { 
     document.getElementById("txtHint").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (this.readyState == 4 && this.status == 200) { 
       document.getElementById("txtHint").innerHTML = this.responseText; 
      } 
     }; 
     xmlhttp.open("GET","getuser.php?q="+str,true); 
     xmlhttp.send(); 
    } 
} 
</script> 
</head> 
<body> 

<form> 
<select name="users" onchange="showUser(this.value)"> 
    <option value="">Select a person:</option> 
    <option value="1">Peter Griffin</option> 
    <option value="2">Lois Griffin</option> 
    <option value="3">Joseph Swanson</option> 
    <option value="4">Glenn Quagmire</option> 
    </select> 
</form> 
<br> 
<div id="txtHint"><b>Person info will be listed here...</b></div> 

</body> 
</html> 

這是一個簡單的例子,讓你明白基本。如果你想更多的幫助開始編程,並且如果你有任何困難問社區。

在上例中,當用戶在上面的下拉列表中選擇一個人時,會執行一個名爲「showUser()」的函數。

該函數由onchange事件觸發。代碼說明:

代碼說明:

首先,檢查是否有人被選中。如果沒有人被選中(str ==「」),清除txtHint的內容並退出該功能。如果選擇了一個人,執行下列操作:

1)創建一個XMLHttpRequest對象

2)創建的函數被執行時,服務器響應就緒

3)發送請求關閉到在服務器上的文件

注意到一個參數(q)被添加到URL(與下拉列表中的內容)

通過上述JavaScript調用服務器上的網頁被稱爲「的getUser PHP文件.PHP」。

「getuser.php」中的源代碼在PostgreSQL數據庫上運行更便宜的執行,並將結果返回到HTML表中。

說明:當查詢與JavaScript發送到PHP文件時,會發生以下情況:

1)PHP打開正確的人發現

一個PostgreSQL服務器

2)的連接

3)創建一個HTML表格,填充數據併發送回「txtHint」佔位符。

+0

是的,我認爲這是我想要的核心,謝謝。 –

+0

如果您覺得它有用,請給一個分數或一個標誌。對於其他尋求相同事物的人來說,發現速度更快。 –

+0

我確實擊中了向上箭頭,但我沒有聲望做這個節目。我如何評分答案? –

1

您可以使用spring boot + hibernate構建一個漂亮的應用程序。適用於postgresql。一個好方法是實施@restcontroller