1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

PHPでDBから取得したデータをランダムに表示させる方法

Last updated at Posted at 2016-11-09

やりたいこと

・DBの画像情報を一部だけweb上に表示する(毎回ランダム)
・その後の処理のために、全画像の情報も取得しておく

処理内容

<?php 
//変数宣言
$FullData = array();
$TmpData = array();
$RandData = array();

//fetchでDBデータをすべて取得し、配列に格納($StmtはPDOで取得済み)
while ($DbData= $Stmt->fetch(PDO::FETCH_ASSOC)) {
   array_push($FullData,array(image => $DbData['フィールド名']));
}

//データのシャッフル
shuffle($pai_data); 

//array_randでランダムに値を取得
$TmpData = array_rand($FullData, 4);
//更にシャッフル
shuffle($pais_tmp);

//TmpDataで作ったデータをもとに、RandDataにランダム情報を格納
foreach ($TmpData as $data) {
        array_push($RandData, $FullData[$data]);
    }
?>

<!DOCTYPE html>
//HTMLに描画
<?php for ($i = 0; $i< count($pai_data_start); $i++) { ?>
// current処理を使って、配列に格納した画像情報を表示
  <img src=<?= current($pai_data_start[$i])?> > 
<?php } ?>
 

→ページを表示する度にランダムでデータが表示される。

つまづきポイント

・array_randでは配列の番号しか取得できないので、その値をもとにループ処理でデータの取得が必要だった。
・配列をそのままechoで表示すると、"Array"と表示されてしまうので、current関数を使うとうまく表示ができた。

ランダムのデータ取得は奥が深そうだが、一旦これでよしとする。

・以下参考にさせていただきました
http://kihon-no-ki.com/get-value-at-random-from-array
http://bluesky.holy.jp/blog/bluesky/2015/07/20150729.html
http://doremi.s206.xrea.com/php/tips/array.html
http://qiita.com/shuntaro_tamura/items/784cfd61f355516dfff0

1
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?