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