php banner rotater问题

时间:2009-12-25 09:49:44

标签: php

我想创建动态横幅旋转器与php ajax我想将mysql_fetch_array()传递给一个数组来创建一个新的数组()来创建xml响应..........

这是我的代码

$sql = mysql_query("SELECT * FROM ads");
header('Content-type: text/xml');
echo '<?xml version="1.0" ?>';
while($row = mysql_fetch_array($sql)){
    $title = $row['title'];
    $img = $row['file'];
    $body = $row['body'];
    $ban = '<b>'.$title.'</b><br><br><img src="ads/'.$img.'"><br><br>'.$body;

    $banners = array(    
            $ban,    
    );    
    $html = $banners[array_rand($banners)];

}

<banner>
    <content><?php echo htmlentities($html); ?></content>
    <reload>3000</reload>    
</banner>

但只返回一个广告不返回多个广告我该如何修复

3 个答案:

答案 0 :(得分:0)

在while循环中使用它:

$banners[] = $ban

而不是

$banners = array(

                $ban,

);

$html = array_rand($banners);

而不是

$html = $banners[array_rand($banners)];

答案 1 :(得分:0)

对于bzabhi所说的,定义你的

$banners = array();
在while循环之前

,随机化部分必须在循环之后。

答案 2 :(得分:0)

问题在于:$banners = array($ban);。您要做的是将$banners数组中的所有广告作为条目包含在内,但您未能实现这一目标。

在数组中包含条目的正确代码是$banner[] = $ban。这样,来自您的查询的每个广告都将存储为单独的条目。

所以正确的代码是:

$sql = mysql_query("SELECT * FROM ads");
$banner = array(); //Define the array before trying to add elements.

header('Content-type: text/xml');

while($row = mysql_fetch_array($sql))
{
    $title = $row['title'];
    $img = $row['file'];
    $body = $row['body'];
    $ban = '<b>'.$title.'</b><br><br><img src="ads/'.$img.'"><br><br>'.$body;

    $banner[] = $ban;                //Adding a new entry at the end.
    $html = array_rand($banner);    //Getting a random entry.

}