gpt4 book ai didi

php - 使用 AJAX 根据图像映射点击区域编辑 PHP 查询代码

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:30 25 4
gpt4 key购买 nike

所以我的网站上有一个图像 map (带有 usemap 和区域),当我单击特定区域时,我希望执行特定的 MySQL 查询。基本上它是一个表格,当点击图像 map 的特定区域时,应该在同一页面上显示不同的数据。认为我必须使用 jQuery 或 AJAX(我是这方面的初学者)。

这是图像映射:

<img id="harta" src="img/hartap.png" alt="testmap" usemap="#Map" />
<map name="Map" id="Map">
<area class="area1" alt="area1" title="area1" href="#table" shape="poly" coords="898,3071,902,3553,1108,3561,1129,3419,1254,3419,1278,3273,1472,3261,1476,3100" />
<area class="area2" alt="area2" title="area2" href="#table" shape="poly" coords="842,2759,846,3035,1896,3076,1917,2816,1345,2774" />
<area class="area3" alt="area3" title="area3" href="#table" shape="poly" coords="942,2327,934,2752,1342,2764,1380,2333" />
</map>

下面是 PHP 代码部分:

<section id="table" class="row">
<?php

require_once('config.php');

$reg = "theclickedarea"; // THIS VARIABLE HAS TO BE MODIFIED DEPENDING ON THE CLICKED AREA

$con = mysql_connect("$host", "$username", "$password") or die(mysql_error());
$db = mysql_select_db("$db_name") or die(mysql_error());
$sql=mysql_query("SELECT name, score FROM table WHERE game='".$reg."'") or die(mysql_error());
$count=0;

echo '<table>
<thead>
<tr>
<th>name</th>
<th>score</th>
</tr>
</thead>
<tbody>';
while($row = mysql_fetch_array($sql))
{
$name=$row['name'];
$score=$row['score'];

echo
'<tr>
<td>'.$name.'</td>
<td>'.$score.'</td>
</tr>';

$count++;
}
echo ' </tbody> </table> ';

?>
</section>

最佳答案

您应该使用 jQuery 来执行此操作。首先,您应该绑定(bind)一个事件监听器以单击区域元素。然后获取它的值并使用 AJAX 将区域标题作为参数发送给 PHP 脚本的 GET 请求。 PHP 脚本将查询数据库并构建一个响应,然后您会将其提供给页面。

下面是jQuery添加事件监听器获取面积值调用PHP脚本。

<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.area').bind("click", function () {
var area = $(this).attr('title');
var response = getTable(area);

$('#table-holder').html(response);

});

function getTable(area) {
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else {
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var httpURL = "the_php_page.php?area=" + area;
xhttp.open("GET", httpURL, false);
xhttp.send();
return xhttp.responseText;
}
});
</script>

html 页面变成如下所示。请注意,我已将区域元素的类更改为同一类,因为我在 jQuery 中按类获取它们。

<img id="harta" src="img/No_Image_Available.png" alt="testmap" usemap="#Map" />
<map name="Map" id="Map">
<area class="area" alt="area1" title="area1" href="#table" shape="poly" coords="898,3071,902,3553,1108,3561,1129,3419,1254,3419,1278,3273,1472,3261,1476,3100" />
<area class="area" alt="area2" title="area2" href="#table" shape="poly" coords="842,2759,846,3035,1896,3076,1917,2816,1345,2774" />
<area class="area" alt="area3" title="area3" href="#table" shape="poly" coords="942,2327,934,2752,1342,2764,1380,2333" />
</map>

<div id="table-holder"></div>

最后,作为一个单独文件的 PHP 变成了这样的:

<?php
require_once('config.php');

$reg = $_GET['area']; // THIS VARIABLE HAS TO BE MODIFIED DEPENDING ON THE CLICKED AREA

$con = mysql_connect("$host", "$username", "$password") or die(mysql_error());
$db = mysql_select_db("$db_name") or die(mysql_error());
$sql = mysql_query("SELECT name, score FROM table WHERE game='" . $reg . "'") or die(mysql_error());
$count = 0;

$response = '<table>
<thead>
<tr>
<th>name</th>
<th>score</th>
</tr>
</thead>
<tbody>';
while ($row = mysql_fetch_array($sql)) {
$name = $row['name'];
$score = $row['score'];

$response .= '<tr>
<td>' . $name . '</td>
<td>' . $score . '</td>
</tr>';

$count++;
}
$response .= ' </tbody> </table> ';
header('Content-type: text/plain');
exit($response);
?>

此外,考虑使用我的 mysqsli 进行 SQL 连接,因为 mysql 已被弃用。 http://php.net/manual/en/book.mysqli.php

希望这对您有所帮助。

关于php - 使用 AJAX 根据图像映射点击区域编辑 PHP 查询代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36399366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com