我正在尝试用横幅旋转器做一些不同的事情。
下面是我用来读取两个文本文件(以 .db 扩展名存储在我的根目录中)以在网站上旋转横幅的脚本。一个文件包含一个计数器 (FileDB),另一个包含 HTML 横幅代码 (URLDB)。
URLDB 文件当前包含六行 HTML 代码,用于显示超链接横幅。
以下脚本构建一个数组并在页面刷新时从 0 到 5 依次旋转这些横幅,它完美地做到了这一点:
<?php
define('FILEDB', '/WORKING DIRECTORY/count.db');
define('URLDB', '/WORKING DIRECTORY/url.db');
function readURLS()
{
$fo = fopen(URLDB, 'r');
if( null == $fo )
return false;
$retval = array();
while (($line = fgets($fo)) !== false)
{
$retval[] = $line;
}
return $retval;
}
$list = readURLS();
if( false === $list )
{
echo "No URLs available";
}
else
{
$fo = fopen(FILEDB, 'a+');
$count = (fread($fo, filesize(FILEDB)) + 1) % count($list);
ftruncate($fo, 0);
fwrite($fo, "{$count}");
fclose($fo);
echo $list[$count];
}
?>
在我要显示横幅的网页上,有八个占位符。但是我只有六个横幅。
以下是每个占位符中的 PHP 代码:
Placeholder 1: <?php echo $list[$count];?>
Placeholder 2: <?php echo $list[$count +1];?>
Placeholder 3: <?php echo $list[$count +2];?>
Placeholder 4: <?php echo $list[$count +3];?>
Placeholder 5: <?php echo $list[$count +4];?>
Placeholder 6: <?php echo $list[$count +5];?>
Placeholder 7: <?php echo $list[$count +6];?>
Placeholder 8: <?php echo $list[$count +7];?>
计数为 0 时,6 个横幅显示在占位符 1-6 中,占位符 7 和 8 为空白。
每次刷新计数器都会增加一个,显示第一个放置的横幅中的每个横幅,并将其他横幅从 5 到 0 拉过每个占位符,但将先前填充的占位符保留为空白,直到第六个横幅位于占位符一中。然后在下一次刷新横幅 1 - 6 再次显示。
发生这种情况是因为我已经对每个占位符中的值进行了硬编码,并且我显然试图引用文件中超出上述脚本构建的数组范围的条目。
您可以在此处查看一个工作示例。
我想要实现的是在 URLDB 中显示所有横幅,以便在显示最后一个条目时,第一个条目显示在下一个占位符中(在本例中为占位符 7),第二个条目显示在占位符 8 中.
这个想法是,横幅在每个占位符中不断移动,就像火车的车厢一样,每次页面刷新和计数器增加 - 一个接一个。
所以,现在你有了我的问题的背景。
Is there a way I can amend the script to store in a PHP variable the maximum number of entries in the URLDB file/array and subsequently add conditional processing in the placeholders to check when the counter reaches this maximum value, and reference the next valid value in the array (i.e. 0) such that the banners restart again in the surplus placeholders - so here are no blank or empty placeholders shown?
I imagine this might seem like a strange request. But of course I would appreciate any advice on how to achieve my goal based on where things are currently.