0

ユーザーがページを更新するたびにランダムなバナーを表示しようとしています。私が直面している問題は、最初のバナーが再度表示され、バナーがデータベースからフェッチされることです。私はphp..soのbiegnerですので、バナー更新のコードを提案しました。

4

1 に答える 1

0

PHPのrand関数を使用して、最小値を0に、最大値を行数-1に設定できます。これは、バナーをランダムに選択するために使用されます。

MySQLデータベースを使用していると仮定して、これを行う方法は次のとおりです(明らかに、MySQLパラメーターを独自のパラメーターに置き換える必要があります)。

$conn = mysql_connect("localhost", "username", "password");
$db = mysql_select_db("database_name_here", $conn);
$query = mysql_query("SELECT * from banner_table);
$max = mysql_num_rows($query) - 1;
$image = mysql_result($query, rand(0, $max), "Image_Url_Column");

次に、画像が含まれている場所:

<img src="<?php echo $image; ?>" alt="Banner image" />

または、要素全体をPHPで出力する場合:

echo "<img src=\"" . $image . "\" alt=\"Banner image\" />";

更新: 3つのバナーが同時に表示される場合は、次のようにすることができます。

$conn = mysql_connect("localhost", "username", "password");
$db = mysql_select_db("database_name_here", $conn);
$query = mysql_query("SELECT * from banner_table);
$rows = mysql_num_rows($query);

$bannerToRetrieve; //the banner (database row number) to be retrieved from database
$alreadyRetrieved = array(); //holds values of previous numbers generated by rand() so the same banner isn't output again

for($i = 0; $i < 3; $i++)
{

    //Only set $bannerToRetrieve to a row that hasn't already been called (stored in $alreadyRetrieved)
    do
    {
        $bannerToRetrieve = rand(0, $rows - 1);
    }
    while(in_array($bannerToRetrieve, $alreadyRetrieved)); //if number is in array, it will generate another number

    $image = mysql_result($query, $bannerToRetrieve, "Image_Url_Column");
    echo "<img src=\"" . $image . "\" alt=\"Banner image\" />";

    $alreadyRetrieved[] = $bannerToRetrieve;
}

また、$ image変数は、ロードする画像ファイルのファイル名またはURLを表します(例: "banner1.png")。これはあなたがシステムを設計した方法ですか?

于 2012-05-05T12:58:18.887 に答える