0

我有 2 个 php 页面。第一个 php 页面有一个查询 MySQL 的函数。第二个 php 页面调用该函数。

查询 MySQL 的函数在被第二个 php 页面调用时可以正常工作:

`<?php myfunction($user_id); ?>`

但是,我似乎无法让该函数在第二个 php 页面加载时不触发,而是在用户通过 onclick 在第二个页面上的地图中某个区域的矩形坐标内单击时触发:

 `<map id="map_id_01" name="map_name_01"><area shape="poly" id="area_id_01" class="" title="area_title_01" onclick="myfunction($user_id)" coords="360,236,696,236,696,448,360,448,360,237"/></map>` 

不知道如何最好地解决这个问题,并将不胜感激任何想法。

4

2 回答 2

2

首先,您需要了解PHP 和 JavaScript 之间的区别

完成此操作后,您将了解需要onclick向服务器触发 AJAX 查询,以便服务器可以响应 MySQL 数据。

于 2012-12-18T01:43:15.877 回答
1

您需要结合使用 javascript 和 php。用户单击矩形,触发一个 javascript 函数,该函数对另一个页面进行 ajax 调用,然后运行 ​​php 函数并将结果返回到原始页面,然后您在 javascript 中对该结果进行操作,无论是显示它用户通过将其放置在 div 中或执行其他功能。PHP是在服务器端运行的,这意味着一旦用户调用页面,所有的php代码都会被执行。

编辑以显示代码:

<map id="map_id_01" name="map_name_01"><area shape="poly" id="area_id_01" class="" title="area_title_01" onclick="myfunction()" coords="360,236,696,236,696,448,360,448,360,237"/></map>
<script type='text/javascript'>
    var userId = '<?php echo $user_id; ?>';
    function myFunction() {
        $.ajax({
            async: false,
            type: 'POST',
            url: 'run_function.php',
            data: 'user_id=' + userId,
            dataType: 'json',
            success: function(msg) {
                if(msg.success) {
                   //Do whatever you want to with the return message here
                } else {
                   alert('failed to run the php function because: ' + msg.message);
                }
             }
        });
    </script>

然后在run_function.php...

$user_id = $_REQUEST['user_id'];
if($return = myfunction($user_id)) {
    $reply['success'] = true;
    $reply['message'] = $return;
} else {
    $reply['success'] = false;
    $reply['message'] = 'Failed to run function' // whatever error message you want
}
echo json_encode($reply);

**注意:这是一个非常简单的示例,使用 javascript 运行 php 函数并根据它们的回复采取行动。您可能需要编辑此代码以获得所需的结果。此外,要运行 $.ajax,您需要将 jquery 包含在您的 html 中。如果您不为 javascript 查找 xmlhttprequest

于 2012-12-18T01:43:36.790 回答