在我的数据库中,我有表Person (id, name, last_name, phone_number)
。我做这样的事情:
$queryPerson = mysqli_query($con, 'SELECT * FROM Person');
while ($person = mysqli_fetch_array($queryPerson)) {
echo '<option value="'.$person["id"].'">'.$person["name"].' '.$person["last_name"].'</option>';
}
我想使用javascipt函数将所选值从select复制到文本框:
function copyPerson(data) {
document.getElementById["name"].value = data.value;
}
...但是我希望他们的名字和姓氏以及电话号码显示在文本框中,而不是他们的ID。现在我提出了这个想法,从选项中读取值,将查询发送到DB SELECT * FROM Person WHERE id = ID_FROM_SELECT
,然后接收我想要接收的数据。我不确定这是不是一个好主意。
之前:是的,我需要$person["id"]
作为选项的值。
我的问题是:将查询发送到数据库是一个好主意 - 如果是的话,如何从javascript向MySQL发送值,如果不是 - 什么是更好的解决方案?
<小时/> 编辑:除了@Thanos Tourikas回答,我发现这个链接很有帮助:http://www.w3schools.com/php/php_ajax_database.asp
答案 0 :(得分:2)
通常,发送查询不是一个好主意。
解决方案是使用ajax发送id,并有一个处理该请求的php页面。
在那个php页面中,你只需要获取id,它作为参数发送给请求,并在那里构造db查询。然后只需将结果作为json对象回显,并使用JavaScript处理该响应。
首先,使用jQuery向发送person id的服务器发出请求:
$.ajax({
url: 'url_that_handles_request.php',
data: { id: person_id },
dataType: 'json',
success: function(response){
// here you handle the response from server.
// you can access the data returned doing something like:
var id = response.id;
var name = response.name;
}
});
然后,你需要提供一个php页面来处理ajax调用:
$person_id = $_POST["person_id"];
// here you make the query to the database using the person id
// and then just echo the db response as a json object
echo json_encode($db_response);
以下是一些有用的链接
jQuery的快速教程以及如何安装它: http://www.w3schools.com/jquery/default.asp
jQuery ajax的快速教程: http://www.w3schools.com/jquery/jquery_ajax_intro.asp
jQuery提供的ajax方法中的一些引用: http://www.w3schools.com/jquery/jquery_ref_ajax.asp
关于json的教程: http://www.w3schools.com/json/
最后是关于json_encode php函数的文档: http://php.net/manual/en/function.json-encode.php