我正在使用d3散点图,在图表上将纸张显示为点。它连接到具有多个表的数据库。我想要做的是当我点击图表上的一个点上的时,我希望它引用的论文出现在图表上。数据库中的引用表如下 - 其中ID_from是纸质ID列表,ID_to是纸张引用的纸张ID:
ID_from ID_to
1 12
1 40
2 7
3 2
3 50
3 N
...
N 13
因此,例如,如果我点击纸张ID 3,我希望纸张2,50和N在图表上显示为点。 我有一个非常模糊的想法,这应该如何工作,即在onClick函数中执行php函数?但我的问题是如何做到这一点?我可以使用相同的PHP脚本与其中定义的其他查询? 这是我的PHP脚本连接到数据库与我需要执行的其他查询没有点击。
<?php
$username = "xxx";
$password = "";
$host = "xxx";
$database="xxx";
$server = mysql_connect($host, $username, $password);
$connection = mysql_select_db($database, $server);
$data = array(
'query1Results' => array(),
'query2Results' => array()
);
$myquery = "SELECT `ID`, `TITLE`, `YEAR`,`In_library` FROM `papers` where In_library = 1";
$query1 = mysql_query($myquery);
if ( ! $query1 ) {
echo mysql_error();
die;
}
for ($x = 0; $x < mysql_num_rows($query1); $x++) {
$data['query1Results'][] = mysql_fetch_assoc($query1);
}
$query2 = mysql_query("SELECT `ID_to`, count(*) as `counter` from `citations` group by `ID_to` DESC");
if ( ! $query2 ) {
echo mysql_error();
die;
}
for ($x = 0; $x < mysql_num_rows($query2); $x++) {
$data['query2Results'][] = mysql_fetch_assoc($query2);
}
echo json_encode($data);
mysql_close($server);
?>
我对查询的内容还有一个完整的空白(我是sql的新手)并且在变量ID上让自己感到困惑
感谢您提前反馈
编辑:以下是我的数据库的结构 论文表:
ID TITLE YEAR IN_LIBRARY
ID1 TITLE1 YEAR 1
ID2 TITLE2 YEAR 0
引文表(例如上文):
ID_from ID_to
作者表:
ID AUTHOR
1 AUTHOR1
1 AUTHOR1.2
2 AUTHOR2
3 AUTHOR3
3 AUTHOR3.1
3 AUTHOR3.2
答案 0 :(得分:1)
您可以使用包含在.click()处理程序中的jQuery ajax调用来执行PHP。
https://api.jquery.com/jQuery.ajax/
如果你正确考虑了PHP,那么你应该可以使用相同的文件来点击任何点。
<?php
// Grab posted variables
$fromID = $_POST['fromID']; // From what you explained this will always be a single value.
$toID = $_POST['toID']; // From what you explained this will be an array, you could accomplish this easily by crating a hidded input for each value of the toID on the scatterplot dot I have given an example of this code below
$toID = join(',',$toID);
/*
<input type="hidden" name="toID[]" value="2">
<input type="hidden" name="toID[]" value="50">
<input type="hidden" name="toID[]" value="N">
*/
$query = mysql_query("SELECT * FROM `citations` WHERE `ID_from` = {$toID} AND `ID_to` IN {$toID}");
if ( ! $query ) {
echo mysql_error();
die;
}else{
// You will then need to return the HTML to the browser for the ajax call to create the new dots on the scatter plot
$html="html here"
$html.= "next line of html"
echo $html;
}
// I would also consider using mysqli or mysql pdo
// Hope this helps
?>
以下是mysqli和mysql PDO的起始位置
http://php.net/manual/en/ref.pdo-mysql.php
http://php.net/manual/en/book.mysqli.php
如果您需要任何澄清,请告诉我。