2015-10-26 99 views
0

我遇到了一個問題,我計劃使用來自mysql的javascript獲取值。關於PHP,MYSQL,AJAX的問題

我想要做的是,當你加載一個PHP頁面來編輯信息,你使用JavaScript添加一個div,會有一堆類型可供選擇,但我想通過檢索數據庫。但它似乎不起作用,所以我繼續使用另一種類型的代碼。

<!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 

$mysql_server_name="localhost"; 
$mysql_username ="root"; 
$mysql_password ="root"; 
$mysql_database ="master_db"; 

$conn =mysql_connect($mysql_server_name,$mysql_username,$mysql_password); 

     if (!$conn) 
       { 
       die('Could not connect: ' . mysql_error()); 
       } 

mysql_select_db($mysql_database,$conn); 
$sql="SELECT * FROM `bopl_certification_type`"; 
$result = mysql_query($sql); 

echo "<div class='span6 form-horizontal'><i class='icon-remove'  onclick='removeDiv(this)'></i><div class='control-group'><label class='control- label'>Certificate Name: </label><div class='controls'><select   style='width:250px' name='certType[]'>"; 
//To get option 
while($row = mysql_fetch_array($result)) { 
echo "<option value=$row[certName]>$row[certName]</option>"; 
} 
//End of option 
echo "</select><input type='text' class='input-xlarge' name='test' style='width:235px' name='fileInServ[]' readonly='readonly' /><input type='file' name='docupload[]' /></div><div class='control-group'><label class='control-label'>Issue date: </label><div class='controls'><input type='text' id='datepickerIs' name='certIsDate[]' placeholder='dd-mm-yyyy' class='comboDate' /></div></div><div class='control-group'><label class='control-label'>Expired date: </label><div class='controls'><input type='text' id='datepickerEx' name='certExDate[]' placeholder='dd-mm-yyyy' class='comboDate' /></div></div> </div>"; 
?> 
</body> 
</html> 

那是getuser.php,這是index.html的

<html> 
<head> 
<script> 
function showUser() { 
    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 (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      document.getElementById("txtHint").innerHTML = xmlhttp.responseText; 
     } 
    } 
    xmlhttp.open("GET","getuser.php",true); 
    xmlhttp.send(); 
    } 
</script> 
</head> 
<body> 

<form> 
<select name="users" onclick="showUser()"> 
</select> 
</form> 
<br> 
<div id="txtHint"><b>Person info will be listed here...</b></div> 

</body> 
</html> 

這是正確的結果,我想。但似乎我試圖融入現有的代碼。它根本不起作用。有沒有其他解決方法?

+0

你從W3schools拿走了這個。 –

+0

在PHP(當前版本)5.5版本中不推薦使用舊的mysql_ *擴展名,並且在PHP(下一版本)的版本7中將其刪除,您需要將其從mysqli_ *擴展名或PDO移開。 PDO更好,因爲它在處理準備好的語句時允許命名參數 – SpacePhoenix

+0

@ Fred-ii-是的,因爲它在集成到我的系統之前仍處於測試階段。這是我希望它成爲的例子之一。 – BrandonLooi

回答

0

首先我會爲你的服務器調用創建一個函數來簡化事情。這是我使用的,但它使用主線程,所以如果你想它是異步的,那麼你將不得不添加readystatechange,並在初始聲明中將true改爲false,但是,這是我的檢索函數。

function httpGet(theUrl){ 
 
\t //FETCH Data From Server 
 
\t xmlhttp=new XMLHttpRequest(); 
 
\t xmlhttp.open("GET", theUrl , false); 
 
\t xmlhttp.send(); 
 
\t return xmlhttp.responseText; 
 
}

然後從腳本中任何你現在可以調用

document.getElementById("txtHint").innerHTML = httpGet("getUser.php"); 

任何額外的幫助,我們真的需要知道,什麼樣的錯誤你接收。

+0

這真的簡化了很多我的問題。我已經掌握了一切。感謝您對此的回答。這真的很有幫助。 這是一個快速反應,雖然考慮我的第一篇文章。 乾杯! – BrandonLooi