![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_16.png?5a7ff87)
リロードする度に違う画像を表示させたいのですが
なかなかうまくいかないのでお力を貸してください!
・boxaには5枚の中から1枚をランダム表示させる
・boxbには10枚の中から3枚をランダム表示させる(重複させないで表示)
-----index.php-----
<div class="boxa">
<?php
require("test.php");
?>
</div>
<div class="boxb">
<?php
require("test2.php");
?>
<br />
<?php
require("test2.php");
?>
<br />
<?php
require("test2.php");
?>
</div>
-----test.php(http://php.eweb-design.com/0203_rt.phpさんのサンプルソースです)-----
<?php
$hit[0] = 1; $rtxt[0] = '<a href="http://hogehoge.com"><img src="http://hogehoge.com/image1.gif" alt="バナー1" width="500" height="200" /></a>';
~~省略~~
$hit[4] = 1; $rtxt[4] = '<a href="http://hogehoge.com"><img src="http://hogehoge.com/image4.gif" alt="バナー5" width="500" height="200" /></a>';
$length = count($hit) - 1;
for($i=0; $i<=$length; $i++) {
$m += $hit[$i];
}
srand( (double)microtime()*1000000 );
$n = round(rand(1,$m) );
for($i=0; $i<=$length; $i++) {
$x = $y;
$y += $hit[$i];
if($x<$n && $n<=$y) $ad = $rtxt[$i];
}
print("$ad");
?>
-----test2.php-----
<?php
$hit[0] = 1; $rtxt[0] = '<a href="http://hogehoge.com"><img src="http://hogehoge.com/image6.gif" alt="バナー1" width="200" height="200" /></a>';
~~省略~~
$hit[9] = 1; $rtxt[9] = '<a href="http://hogehoge.com"><img src="http://hogehoge.com/image15.gif" alt="バナー10" width="200" height="200" /></a>';
$length = count($hit) - 1;
for($i=0; $i<=$length; $i++) {
$m += $hit[$i];
}
srand( (double)microtime()*1000000 );
$n = round(rand(1,$m) );
for($i=0; $i<=$length; $i++) {
$x = $y;
$y += $hit[$i];
if($x<$n && $n<=$y) $ad = $rtxt[$i];
}
print("$ad");
?>
boxaにはtest.phpで指定した画像がランダム表示されるのですが
boxbにはtest.phpとtest2.phpで指定した画像が出てしまい重複表示されてしまいます。
boxbにはtest2.phpで指定した画像のみを重複しないでランダム表示
させたいのですがどのようにしたらよいのでしょうか?
No.2
- 回答日時:
あ、安易に書いてました原因は1個ずれてた。
file()を使うと配列のインデックスが0から代入されるから。
-1しとかないと、空の値になってしまい、表示されなくなります。
[誤]
$rand_n=rand(0,$row);
[正]
$rand_n=rand(0,$row-1);す。
test1.php
<?php
$fn="data1.txt";
$af=file($fn);
$row=count($af);
$rand_n=rand(0,$row);
print ("$af[$rand_n]");
?>
test2は『;』が抜けてました。
[正]
$hyoji=array_rand($af,3);
[誤]
$hyoji=array_rand($af,3)
test2.php
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$hyoji=array_rand($af,3);
for($i=0;$hyoji[$i];$i++)
{
echo $hyoji[$i];
}
?>
phpについて知識がないということだったので
test2をそのまま実行すると3つの画像が連続でるので
好きな場所に配置する際は
test2.php
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$hyoji=array_rand($af,3);
?>
index.phpには
<div>
<?php
require("test1.php");
?>
</div>
<div>
<?php
require("test2.php");
?>
</div>
<?php
echo $hyoji[0]; //1枚目の画像表示箇所
?>
<?php
echo $hyoji[1]; //2枚目の画像表示箇所
?>
<?php
echo $hyoji[2]; //3枚目の画像表示箇所
?>
というふうにやればいいです。
この回答への補足
こんばんはwidowwさん。またまたご丁寧にありがとうございます。^^
test1.phpも何度リロードしても空になることはなく表示できるようになりました☆
test2.phpはエラーがなくなったのですが1つ問題があります。
test2.php
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$hyoji=array_rand($af,3);
?>
index.phpには
<div>
<?php
require("test1.php");
?>
</div>
<div>
<?php
require("test2.php");
?>
</div>
<?php
echo $hyoji[0]; //1枚目の画像表示箇所
?>
<?php
echo $hyoji[1]; //2枚目の画像表示箇所
?>
<?php
echo $hyoji[2]; //3枚目の画像表示箇所
?>
としました。
すると画像ではなく012が重複なしで表示されるのですが画像を出す為にはどのようにするのでしょうか?
数字が表示されているようなので試しに[ ]内に<a href~~><img~~></a>と入れてみたのですが見事にエラーでした^^;
data2.txtにはdata1.txtと同様の形式で
<a href="http://hogehoge.com"><img src="img/banner4.gif" alt="バナー4" width="200" height="200" /></a>
<a href="http://hogehoge.com"><img src="img/banner5.gif" alt="バナー5" width="200" height="200" /></a>
<a href="http://hogehoge.com"><img src="img/banner6.gif" alt="バナー6" width="200" height="200" /></a>
としています。
No.1
- 回答日時:
配列名を変えてやればいいと思います。
$hit[0] = 1; $rtxt[0]
とかの部分をすべて
hit → hit2
rtxt → rtxt2
にするとかがいいと思います。
あと重複を許さずにとるときは
array_randを使えばいいと思います。
後半部分の $x,$n,$yがなんのためにあるのか不明です(汗)
あと画像をランダム表示させるようなプログラムなら
こんななんか手間かけなくてもいいきがします。
私なら。
test1.php
<?php
$fn="data1.txt";
$af=file($fn);
$row=count($af);
$rand_n=rand(0,$row);
print ("$af[$rand_n]");
?>
test2.php
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$rand_n=rand(0,$row);
print ("$af[$rand_n]");
?>
これでまったく同じ挙動をするはずですw
別途テキストファイルを用意します。
data1.txt
<a href="http://hogehoge.com"><img src="http://hogehoge.com/image6.gif" alt="バナー1" width="200" height="200" /></a>
<a href="http://hogehoge.com"><img src="http://hogehoge.com/image4.gif" alt="バナー5" width="500" height="200" /></a>
-data.txt--
タグ1
タグ2
タグ3
タグ4
のように1行で1データ入れてください^^
重複を許さずにとる場合は
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$hyoji=array_rand($af,3) // 4つなら array_rand($af,4);
for($i=0;$hyoji[$i];$i++)
{
echo "$hyoji[$i]";
}
?>
<タグ>
この回答への補足
data.txtの?がいらなかったようでその部分を消したら画像が出てきました☆^^
しかし何回かリロードを繰り返すと画像を読み込まない時があり画像が表示されません。
test2.phpのエラーについてはいまだに原因がわかりませんが自分なりになんとか試行錯誤してみます^^;
ありがとうございます。私自身phpに覚えがないもので質問のソースは
サンプルを基にしていましたがwidowwさんの方法がスッキリしているのでそちらを使わせて頂きたいと思います。
早速参考にtest1.phpには、widowwさんの方法をそのまま記述し
test2.phpには
<?php
$fn="data2.txt";
$af=file($fn);
$row=count($af);
$hyoji=array_rand($af,3) // 4つなら array_rand($af,4);
for($i=0;$hyoji[$i];$i++)
{
echo "$hyoji[$i]";
}
?>
data1,data2のtxtを作成し
その中に一行記述でdata1.txtには
<a href="?http://hogehoge.com"><img? src="?img/banner1.gif"? alt="バナー1" width="500" height="200" /></a>
<a href="?http://hogehoge.com"><img? src="?img/banner2.gif"? alt="バナー2" width="500" height="200" /></a>
<a href="?http://hogehoge.com"><img? src="?img/banner3.gif"? alt="バナー3" width="500" height="200" /></a>
としdata2.txtには
<a href="?http://hogehoge.com"><img? src="?img/banner4.gif"? alt="バナー4" width="200" height="200" /></a>
<a href="?http://hogehoge.com"><img? src="?img/banner5.gif"? alt="バナー5" width="200" height="200" /></a>
<a href="?http://hogehoge.com"><img? src="?img/banner6.gif"? alt="バナー6" width="200" height="200" /></a>
としました。
index.phpには
<div>
<?php
require("test1.php");
?>
</div>
<div>
<?php
require("test2.php");
?>
</div>
としたのですが画像が表示されませんでした。
test2.phpの方には以下のようなエラーがでます。
Parse error: syntax error, unexpected T_FOR in サーバーのパスtest2.php on line 6
画像のパスを変えたりしてみたのですが結果は変わらずで何が原因なのかはわかりませんでした・・・
どのようにしたらいいでしょうか?お手数お掛けしますが宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- PHP ランキングを表示する際の画像の大きさを固定することは可能でしょうか? <?php if ( has_ 1 2022/07/21 14:55
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数のファイルで同じ定数を定...
-
<A href ~ と一緒に値を渡すには
-
HYのAM11:00のラップの部分の歌...
-
qmail+phpでfwriteができません
-
フォームで戻った際に入力済み...
-
PHPのバージョンアップに関して
-
PHPINFOが見えない
-
.htaccessのURL書き換えができ...
-
検索エンジンへの反映
-
暦について
-
sendmail_fromについて(xampp)
-
3人の旅人が
-
ページ移動について
-
複数ページのセッションの送り方
-
カテゴリ別に振り分け
-
PEAR(Image_QRCode)のエラー
-
セッションについての設定なの...
-
html構文をPHPの変数に正しく格...
-
Apacheの設定ファイルにPHPの設...
-
php界のCPANのような場所はある...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
.htaccessにphp_valueが使用できな
-
<A href ~ と一緒に値を渡すには
-
フォームで戻った際に入力済み...
-
HYのAM11:00のラップの部分の歌...
-
phpの中でphpを書けないか
-
require_once()でファイルが読...
-
PHPからMSSQLへの接続結果の文...
-
PHPINFOが見えない
-
<大至急!>ご教授願います。
-
テキストエリアの内容がメール...
-
Apache 2.4.0でphp5.3を使うには?
-
メレンゲの歴史
-
*.php、*.php3、*.phtmlの違い
-
これの対応OSを教えて下さい。p...
-
PHPで別PHPを呼び出す。
-
header(Location:~)で$_SESS...
-
PHP PDOライブラリが読み込まれ...
-
apache・phpが起動しない・・・
-
iframeで読み込んだ別のphpファ...
-
服にかいた油性ペンがにじまな...
おすすめ情報