はじめまして。
質問させてください。
CSVでアップロードしたデータをランダムで表示させたいのですが、
私自身、PHPの知識がほとんどなく困っています。
CSVで15件程の商品データをアップロードし、その中から5件をhtml上に
ランダムに表示したいと考えています。
#CSV
hoge.jpg,商品名,価格,評価,レビュー
hoge.jpg,商品名,価格,評価,レビュー
hoge.jpg,商品名,価格,評価,レビュー
hoge.jpg,商品名,価格,評価,レビュー
hoge.jpg,商品名,価格,評価,レビュー
(15件ほど)
#PHP
<?php
$fp = fopen("hoge.csv", "r");
$count = 1;
while ($data = fgetcsv($fp, 10000)) {
if ($count == 6) break;
print <<<EOD
<div class="hoge">
<p class="hogehoge"><img src="hoge/$data[0]" /></p>
<dl>
<dt><a href="hoge.html">商品名:$data[1]</a></dt>
<dd>価格:$data[2]</dd>
<dd>評価: $data[3]</dd>
<dd>レビュー:$data[4]</dd>
</dl>
</div>
EOD;
$count++ ;
}
fclose($fp)
?>
と自分なりに試してみたのですが…
15件のうち5件だけを表示することはできたのですが、
それをランダムに表示するにはどこをどうしたらいいのやら…
といった状況です。
どうか、お力をお貸しください。
No.3ベストアンサー
- 回答日時:
No.5
- 回答日時:
回答No.3の方の shuffle を使えば簡単ですね。
shuffleは次のように使えばいいと思います。
$temp[0] = 一行目の内容
$temp[1] = 二行目の内容
・・・
となっていて
$shuffle($temp) を実行すれば
$temp[0] = 五行目の内容
$temp[1] = 七行目の内容
・・・
のようにランダムになるので
forやwhileで $temp[0]~$temp[4](5件の場合)を表示させるようにすればいいと思います。
ご教授ありがとうございます。
無事解決しましたのでご報告です。
shuffle()を使った様々な方法を試し、
このようなコードで落ち着きました。
$Data=file('hoge.csv');
shuffle ($Data);
for ( $i=1; $i<=3; $i++ ){
$line=explode(",",$Data[$i]);
あとは$line[0] $line[1] $line[3]...
のように割り当てました。
本当にありがとうございました。
No.4
- 回答日時:
ANo.1です。
rand()を使うより、No.3の方の挙げたshuffle()を使う方が楽に実現できますね。
ですのでrand()を使うことは考えなくてよいかと思います。
本件が解決して尚興味があれば試してみてください。
わざわざありがとうございます。
shuffle()を使うことにより解決いたしましたが、rand()も覚えておかなくてはと思っています。
私自身まだまだ未熟ですのでもっともっと勉強していこうと思います。
No.2
- 回答日時:
自分もphpを始めて間もないで、もっといい方法があるかもしれません。
その点に関してはご了承ください。
1:CSVをfile関数で読み込む
例:$temp = file('hoge.csv');
fileで読み込めば$temp[0]に一行目、$temp[1]に二行目・・・となります。
2:rand関数で$tempの[]に入る数字をランダムに決める
ランダムに0~14(15件の場合)から5つ表示するものを決めます。
3:split関数で行の内容を , で区切る
$temp[0] = "あああ,AAA,111" という行なら
$data = split(",",$temp[0])とすれば $data[0] = "あああ" $data[1] = "AAA"のようになります。
この3つを使えばできると思います。
詳しくは関数を検索などしてみてください。
ご教授頂いた事を参考に色々試してみたのですが、
同じ商品が5つ並んでしまいます。
ソースは以下の通りです。
<?php
$n = 5;
$file = @file("hoge.csv");
$i = rand(0, 14);
$data = split(",",$file[$i]);
$i = 0;
while ($i <= 4){
print <<<EOD
<div class="hogehoge">
<p class="hoge"><img src="hoge/$data[0]" /></p>
<dl>
<dt><a href="hoge.html">商品名:$data[1]</a></dt>
<dd>価格:$data[2]</dd>
<dd>評価: $data[3]</dd>
<dd>レビュー:$data[4]</dd>
</dl>
</div>
EOD;
$i++;
}
?>
No.1
- 回答日時:
rand関数を使って対応できるでしょう。
http://www.php.net/manual/ja/function.rand.php
fgetcsv()でcsvのデータを配列に格納した後、0から(配列の要素数-1)までの乱数を5個、重複しないように生成するといった感じになるでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS FC2カートのテンプレートでの商品表示について 1 2023/03/02 18:05
- その他(IT・Webサービス) アマゾン評価(素人が書いた評価)とプロが書いた評価、どちらを強く信じますか。 5 2023/02/02 11:47
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- 楽天市場 商品、サービスの「評価サイト」を作る予定なのですが、この分野はやめた方が良いの理由を述べれる方。 3 2023/01/31 00:37
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列同士の足し算のループ処理
-
doxygenを使用する環境について
-
mysqlと出力側PHPの文字コード...
-
複数行のデータのPOST処理に関して
-
エラーメッセージ(無効な間接...
-
別ファイルの構造体の値を読み...
-
VBAでcsvファイルもシートもあ...
-
2次元配列から1次元配列へのデ...
-
Resource id #3 と表示されま...
-
クラスで使用する「参照渡し」...
-
FortranのOPEN文
-
CSVファイルの最終行のデー...
-
行数が30万件ほどあるCSVから、...
-
fgetc関数について
-
php 1桁になるまでの和 スマー...
-
$_SESSIONに二次元配列を使える...
-
Smartyの自作プラグインで配列...
-
スカラーのベクトル微分
-
配列をループでたくさん宣言し...
-
配列にある文字列を1つの変数に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数行のデータのPOST処理に関して
-
Resource id #3 と表示されま...
-
別ファイルの構造体の値を読み...
-
バイナリファイルの内容を、そ...
-
PHPでCSVの一部の行を編集したい
-
CSVファイルの最終行のデー...
-
ヒアドキュメントの中のfor文
-
stdClass Objectを連想配列のよ...
-
◆速い、ファイル読み込みは?
-
C言語でCSVファイルの行数を読...
-
phpでCSVファイルの中身を多次...
-
rubyで複数列のデータを一行に...
-
多次元配列の一次元目の最大値...
-
行数が30万件ほどあるCSVから、...
-
配列同士の足し算のループ処理
-
FortranのOPEN文
-
自動で番号を振りたい
-
csvの内容を行単位で削除したい
-
CSVデータの行数カウントをした...
-
While文を使って配列の中身を全...
おすすめ情報