我试图在互联网上找到一些简单的解决方案,用于制作新闻自动收录器,它将自己从数据库中使用数据进行更新。这就是我现在所拥有的。你能帮帮我吗?
<html>
<body>
<?php
$dbhost='localhost';
$dbuser='root';
$dbpass='password';
$db='base';
$conn = @mysql_connect($dbhost,$dbuser,$dbpass);
mysql_select_db($db);
$query= "SELECT * FROM mbblog ORDER BY id DESC";
$result= mysql_query ($query);
$news = $mbblog['short_news'];
?>
<marquee behavior="scroll" direction="left"
onmouseover="this.stop();"
onmouseout="this.start();">
<h1><?php echo $news; ?></h1>
</marquee>
</body>
</html>
谢谢
答案 0 :(得分:1)
我猜你的问题是你没有从数据库中获取数据? 如果是这样,看起来您缺少一行代码来读取您从查询中获取的信息。
我相信这应该是它的样子......
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = 'password';
$db = 'base';
$conn = mysql_pconnect($dbhost,$dbuser,$dbpass);
mysql_select_db($db, $conn);
$result = mysql_query("SELECT * FROM mbblog ORDER BY id DESC");
$mbblog = mysql_fetch_assoc($result);
$news = $mbblog['short_news'];
mysql_close($conn);
?>
如果您希望它自动更新(例如每5秒钟)您可以使用AJAX,只需将上面的代码放在外部页面上,确保echo
是您的$news
变量,并使用一个JavaScript循环,使用AJAX更新<div>
的内容,以便每次循环运行时调用外部页面的内容。
这样可以这样......
window.setInterval(function get()
{
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","LOCATION_OF_CODE.php?session=" + Math.random(),true);
xmlhttp.send();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("ELEMENT_TO_DISPLAY_CONTENT").innerHTML=xmlhttp.responseText;
}
}
}, 5000);
因此,对于您的字幕代码,您可以在<div>
中放置一个<marquee>
标记,并为其指定一个ID以链接到AJAX。
希望这有帮助!
答案 1 :(得分:0)
除了人们评论过的问题......
实现此目的的最佳方法是设置ajax调用以在计时器上运行。一旦计时器被触发,然后对数据库进行ajax调用并提取数据。您甚至可以添加功能以在每次更新时查找最大ID,并检查该ID与数据库中的最大ID以减少某些执行。
答案 2 :(得分:0)
您可以将jQuery用于此
var ajax_call = function() {
//your jQuery ajax code
};
var interval = 1000 * 60 * X; // where X is your every X minutes
setInterval(ajax_call, interval);