2017-03-22 77 views
0

我真的在爲我的課程努力完成這項任務,希望有人不介意幫助或只是在此提供指導。基本上,我試圖創建一個簡單的Javascript XML Http請求來顯示基本信息(country_name & country_capital字段)從數據庫只是在html頁面。下面我只描述指南中的明顯階段,以及我所做的。從數據庫中獲取和顯示數據(Javascript XML HTTP請求)

首先,'database.html'頁面包含JavaScript XHR代碼,我認爲它大部分是正確的,但可能有錯誤。說實話,我不是100%確定除了以某種方式引用getcountries.php文件外,還有什麼其他功能。

其次getcountries.php文件是我真正掙扎的地方,因爲我從來沒有用PHP編碼過。我認爲它應該從本地服務器獲取數據(我正在運行XAMPP)並在網頁上回顯結果。

在phpMyAdmin的數據庫是隻有一個國家的表,包括一個主鍵ID號,國名,首都和貨幣,與下面的詳細信息很簡單: 數據庫名稱= countries_db 表名= countries_table 表字段: COUNTRY_ID(主鍵) COUNTRY_NAME country_capital country_currency 一個示例項:2,美國,華盛頓,美元

總之,我的問題是:如何編輯我做了什麼正確取來自數據庫的數據並將其顯示在頁面上?

非常感謝您的幫助或建議,非常感謝。

<!-- Code on Page 1 (database.html) --> 
 

 
<p id="txtHint"></p> 
 
<p id="hint"></p> 
 

 
<script> 
 
function showUser(str) { 
 
\t if (str=="") { 
 
\t \t document.getElementById("txtHint").innerHTML=""; 
 
\t \t return; 
 
\t } 
 
\t if (window.XMLHttpRequest) { // detects whether the browser has XMLHttpRequest functionality 
 
\t // code for modern browsers 
 
\t \t xmlhttp=new XMLHttpRequest(); // creates an XMLHttpRequest object 
 
\t } else { // code for old browsers 
 
\t \t xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
 
\t } 
 
\t xmlhttp.onreadystatechange=function() { // onreadystatechange defines the function to be called when the readyState property changes 
 
\t \t if (this.readyState==4 && this.status==200) { 
 
\t \t \t document.getElementById("hint").innerHTML=this.responseText; 
 
\t \t } 
 
\t } 
 
\t xmlhttp.open("GET","getcountries.php?q="+str,true); 
 
\t xmlhttp.send(); 
 
} 
 
</script> 
 

 
<!-- Code on Page 2 (getcountries.php) --> 
 

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

 
$con = mysqli_connect('localhost','root',''); 
 
if (!$con) { 
 
\t die('Could not connect: ' .mysqli_error($con)); 
 
} 
 

 
mysqli_select-db($con,"countries_db"); 
 
$sql="SELECT country_name AND country_capital FROM records"; 
 
$result = mysqli_query($con,$sql); 
 

 
echo "Results:" 
 

 
error_reporting(E_ERROR | E_PARSE); 
 

 
\t \ 
 
while($row = mysqli_fetch_array($result)) { 
 
\t echo $row['country_name'] . "<br>"; 
 
\t echo $row['country_capital'] . "<br>"; 
 
} 
 
mysqli_close($con); 
 
?>

回答

0

使用mysqli_select_db,而不是mysqli_select-db在getcountries.php:

mysqli_select_db($con,"countries_db"); 
1

假設這是你的數據庫的結構:

Database name = countries_db 
Table name = countries_table 
Table fields: 
    country_ID (primary key) 
    country_name 
    country_capital 
    country_currency 

的問題是,喲u必須在你的代碼改變了一些語法錯誤此行:

mysqli_select-db($con,"countries_db"); 
$sql="SELECT country_name AND country_capital FROM records"; 

有:

mysqli_select_db($con,"countries_db"); 
$sql="SELECT country_name, country_capital FROM countries_table"; 

替代:使用PDO:

嘗試,而不是你getcountries.php實現這個

<?php 
$driver = 'mysql'; 
$database = "dbname=countries_db"; 
$dsn = "$driver:host=localhost;unix_socket=/home/cg/mysql/mysql.sock;$database"; 

$username = 'root'; 
$password = 'root'; 

try { 
    $conn = new PDO($dsn, $username, $password); 
    echo "<h2>Database countries_db Connected<h2>"; 
}catch(PDOException $e){ 
    echo "<h1>" . $e->getMessage() . "</h1>"; 
} 
$sql = 'SELECT country_name, country_capital FROM countries_table'; 
$stmt = $conn->prepare($sql); 
$stmt->execute(); 

echo "Results:"; 
echo "<table style='width:100%'>"; 
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ 
    echo "<tr>"; 
    foreach($row as $value) 
    { 
    echo sprintf("<td>%s</td>", $value); 
    } 
    echo "</tr>"; 
} 
echo "</table>"; 
?>