Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新a<;部门>;当数据库发生变化时,使用ajax php和mysql?_Javascript_Php_Html_Mysql - Fatal编程技术网

Javascript 如何更新a<;部门>;当数据库发生变化时,使用ajax php和mysql?

Javascript 如何更新a<;部门>;当数据库发生变化时,使用ajax php和mysql?,javascript,php,html,mysql,Javascript,Php,Html,Mysql,我真的需要这样做。 我想要一种使div像(实时)一样工作的方法,当数据库更改时自动更新div 如果我有一个值为5的div,这个值是从mysql数据库中得到的 然后用php在一个div上取出来,然后我必须用javascript处理来自php的值,当数据库上的值真的发生变化时,如何使这个div变为6。 以下是我的代码(mysite.php): //此javascript将在页面加载时加载。 jQuery(文档).ready(函数($){ //初始化谷歌地图 var地理编码器; var映射; va

我真的需要这样做。 我想要一种使div像(实时)一样工作的方法,当数据库更改时自动更新div

如果我有一个值为5的div,这个值是从mysql数据库中得到的 然后用php在一个div上取出来,然后我必须用javascript处理来自php的值,当数据库上的值真的发生变化时,如何使这个div变为6。 以下是我的代码(mysite.php):


//此javascript将在页面加载时加载。
jQuery(文档).ready(函数($){
//初始化谷歌地图
var地理编码器;
var映射;
var-markersArray=[];
var-infos=[];
geocoder=新的google.maps.geocoder();
变量myOptions={
缩放:8,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
//将地图加载到Map_canvas div中
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
//初始化一个变量,该变量将自动调整地图的大小,使其与正在打印的内容一致
var bounds=new google.maps.LatLngBounds();
//初始化编码字符串
var编码环;
//初始化将保存拆分字符串内容的数组
var stringArray=[];
//从隐藏输入中获取编码字符串的值
encodedString=document.getElementById(“encodedString”).value;
//将编码字符串拆分为一个数组,并分隔每个位置
stringArray=encodedString.split(“****”);
var x;
对于(x=0;x0){
infos[0]。设置(“标记”,空);
infos[0]。关闭();
infos.length=0;
}
}
});

您必须实现一个Ajax机制,必须有一个定期运行的Ajax调用,以从DB获取值并更新该特定分区的内部html。

如果不使用node.js之类的服务器端语言,您就无法像侦听器一样自动执行此操作

见:

但是

您可以每x秒检查一次数据库,查看javascript是否有任何可用的更改

你的代码乱七八糟,所以我看不懂发生了什么

这样做

我建议您使用像jQuery这样的javascript框架/库

使用jquery ajax:

$(document).ready(function(){
    setInterval(function(){
        $.ajax({
            url: 'your-php-file.php',
            dataType: 'json',
            success: function(response) {
                // Do some stuff
            }
        });
    }, 5000);
});

我试着按照你的建议添加代码

$(document).ready(function(){
setInterval(function(){
    $.ajax({
        url: 'mysite.php',
        dataType: 'json',
        success: function(response) {
            // Do some stuff
        }
    });
}, 5000);
});
然后回显从mysql获取的$encodedString,我发现当数据库发生变化时,值并没有更新

 <body>
<div id='input'>

    <?php


    //Initialize your first couple variables
    $encodedString = ""; //This is the string that will hold all your location data
    $x = 0; //This is a trigger to keep the string tidy

    //Now we do a simple query to the database

    // DB  INFO CONNECTION IS HERE AND WORKS

    $result = mysql_query("SELECT * FROM `ulocation` WHERE `ul_lat`!='' AND `ul_long`!='' AND `ul_onduty`='1'",$db1);

    //Multiple rows are returned
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
        //This is to keep an empty first or last line from forming, when the string is split
        if ( $x == 0 )
        {
             $separator = "";
        }
        else
        {
             //Each row in the database is separated in the string by four *'s
             $separator = "****";
        }
        $status='0';
        $cadd  = sql::getval('cal_address', 'call', "WHERE    `cal_id`='$row[14]'");
        $num  = sql::getval('cal_num', 'call', "WHERE `cal_id`='$row[14]'");
        $pcond  = sql::getval('cal_pcond', 'call', "WHERE `cal_id`='$row[14]'");
        $list="$num $cadd";
        //Saving to the String, each variable is separated by three &'s
        $encodedString = $encodedString.$separator.
        "<table border=0 width='350' height='20' class='maincolm' cellpadding=0   cellspacing=0><td align=left valign=top><h2></h2></td><tr><td width=100%><font size=3  face=arial><p><b>".$row[2].
        "</b>".
        "<br>Address: $list".
        "<br>Call Type: $pcond".
        "<br><br>Lat: ".$row[5].
        "<br>Long: ".$row[6].
        "</td></table>".
        "</p>&&&".$row[5]."&&&".$row[6]."&&&".$row[8]."&&&".$row[14];
        $x = $x + 1;
    }        
    ?>

    <input type="hidden" id="encodedString" name="encodedString" value="<?php echo   $encodedString; ?>" />




  <? echo "<body oncontextmenu=\"return false\" style=\"overflow: hidden; \"   topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>";


  <div id=\"map_canvas\"></div>
  </body>
  </html>";

  ?>
</div>


你能给我举个例子吗?
 <body>
<div id='input'>

    <?php


    //Initialize your first couple variables
    $encodedString = ""; //This is the string that will hold all your location data
    $x = 0; //This is a trigger to keep the string tidy

    //Now we do a simple query to the database

    // DB  INFO CONNECTION IS HERE AND WORKS

    $result = mysql_query("SELECT * FROM `ulocation` WHERE `ul_lat`!='' AND `ul_long`!='' AND `ul_onduty`='1'",$db1);

    //Multiple rows are returned
    while ($row = mysql_fetch_array($result, MYSQL_NUM))
    {
        //This is to keep an empty first or last line from forming, when the string is split
        if ( $x == 0 )
        {
             $separator = "";
        }
        else
        {
             //Each row in the database is separated in the string by four *'s
             $separator = "****";
        }
        $status='0';
        $cadd  = sql::getval('cal_address', 'call', "WHERE    `cal_id`='$row[14]'");
        $num  = sql::getval('cal_num', 'call', "WHERE `cal_id`='$row[14]'");
        $pcond  = sql::getval('cal_pcond', 'call', "WHERE `cal_id`='$row[14]'");
        $list="$num $cadd";
        //Saving to the String, each variable is separated by three &'s
        $encodedString = $encodedString.$separator.
        "<table border=0 width='350' height='20' class='maincolm' cellpadding=0   cellspacing=0><td align=left valign=top><h2></h2></td><tr><td width=100%><font size=3  face=arial><p><b>".$row[2].
        "</b>".
        "<br>Address: $list".
        "<br>Call Type: $pcond".
        "<br><br>Lat: ".$row[5].
        "<br>Long: ".$row[6].
        "</td></table>".
        "</p>&&&".$row[5]."&&&".$row[6]."&&&".$row[8]."&&&".$row[14];
        $x = $x + 1;
    }        
    ?>

    <input type="hidden" id="encodedString" name="encodedString" value="<?php echo   $encodedString; ?>" />




  <? echo "<body oncontextmenu=\"return false\" style=\"overflow: hidden; \"   topmargin=0 leftmargin=0 rightmargin=0 bottommargin=0>";


  <div id=\"map_canvas\"></div>
  </body>
  </html>";

  ?>
</div>