尝试从基于click事件的数据库中获取信息,并将数据加载到稍后在表单中使用的变量中。这是代码的一部分。使用PDO ::
建立了与reps表的连接function fill_contact(evt) //display click event
{
var country_id = evt.target.id
document.getElementById('country_name').firstChild.data = country_id
<?php
$country = $_GET['country_name'];
try {
// Establish server connection and select database
$dbh = new PDO("mysql:host=$host;dbname=$database", $user, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
die("Sorry, we could not connect you to this database, please contact the Administrator to sort this out.". $e->getMessage());/** try open contact form here**/
}
/** run prepare to select records **/
$stmt = $dbh->prepare("SELECT firstname, lastname, email, photo FROM reps WHERE country = :country");
$stmt->bindParam(':country', $country, PDO::PARAM_STR);
$stmt->execute();
?>
<script language="javascript" type="text/javascript">
function fill_contact(evt) //display click event
{
var country_id = evt.target.id
document.getElementById('country_name').firstChild.data = country_id
/* need to get a ajax http fetch statement here???*/
}
function getDataFile(mapString , useData)
{
/** call getURL() if available **/
if (window.getURL) {
getURL(mapString , useData);
}
else
/** call XMLHttpRequest() if available **/
if (window.XMLHttpRequest)
{
function XMLHttpRequestCallback()
{
if (xmlRequest.readyState == 4) { useData({success:xmlRequest.status,content:xmlRequest.responseText,contentType:xmlRequest.getResponseHeader("Content-Type")})
}
}
var xmlRequest = null;
xmlRequest = new XMLHttpRequest();
xmlRequest.open("GET",mapString,true);
xmlRequest.onreadystatechange = XMLHttpRequestCallback;
xmlRequest.send(null);
}
/** write an error message if either method is not available **/
else {
alert("your browser/svg viewer neither supports window.getURL nor window.XMLHttpRequest!");
}
}
</script>
<body>
<div id="IndexPage_Left_top">
<h1>Country: <span class="label" id="country_name"> </span> </h1>
<table >
<tbody>
<tr>
<td><h4>Regional Representative: </h4></td>
<td><h4><span class="label" id="firstname">$firtname</span> <span class="label" id="lastname">$lastname</span></h4></td><!--get Rep name from database based on country from svg to display-->
</tr>
<tr></tr>
<tr height="300px" align="top">
<td ><h4> Photo:</h4></td><!--get Rep photo from database based on country from svg to display-->
<td><span class="photo" id="photo"></td>
</tr>
<tr>
<td></td>
<td><input style='margin-top: 20px;' type="submit" value="Contact me" id='jqxButton' /></td>
</tr><!-- if clicked, it opens a contact form below, the email address is hidden-->
</tbody>
</table>
</div>
<div id="IndexPage_Left_bottom">
<h4>email form here<h4>
<p> email address is <span class="label" id="email">$email</span> </p><!-- if email is clicked, it opens a contact form here with email address from above -->
</div>
</div>
<div id="IndexPage_Right">
<svg id="map" version="1.1" rest of svg code
这与我关于svg的另一个问题有关。 (displaying data from sql from clicking on svg map)一旦我点击一个svg,它会填充用于显示有关所点击国家/地区的数据的变量。变量也用于填充联系表格。
它不想填充表格?
答案 0 :(得分:0)
您在PHP代码中有错误
更改您的代码$query = $dbh->prepare('SELECT firstname, lastname, email FROM reps WHERE 'country_id' = :country');
要
$query = $dbh->prepare('SELECT firstname, lastname, email FROM reps WHERE country_id = :country');
答案 1 :(得分:0)
问题在于这些问题,这就是他们应该看的样子:
$query = $dbh->prepare('SELECT firstname, lastname, email FROM reps WHERE country = :country_id');
$query->bindValue(':country_id', $country, PDO::PARAM_INT);
在一端,参数名为country_id
,但您将值绑定到参数country
。 PDO很棒,但它还不能做心灵感应。
我非常喜欢使用位置参数,删除所有这些容易出错的手写:
$query = $dbh->prepare('SELECT firstname, lastname, email FROM reps WHERE country = ?');
$query->execute(array($country));
您始终可以使用要绑定的值将数组传递给execute()
方法。对于位置参数,数组必须是0索引数组,其中包含与查询中的顺序匹配的值 。您也可以使用命名参数执行此操作,而无需匹配订单:
$query->execute(array(':country_id'=>$country));
请注意,您无法将两者混合在一起。如果使用命名参数准备查询,它们必须全部都是命名参数,并且如此绑定,如果使用位置占位符,它们必须都是位置占位符,并且必须这样绑定。