2015-10-26 61 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