質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

1282閲覧

PHPのランダム画像が表示されません

Kitami

総合スコア19

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2019/02/11 05:50

編集2019/03/13 08:07

https://webnetamemo.com/coding/php/201608313448
このサイトを参考に、ランダムで一枚だけ表示されるコードを書いていて、仮想(AtomIDE)で見ると上手く行っているぽいのですが、サーバー(ロリポップ)のサイトで見ると表示されない状態です。

PHP

1<?php 2 $image_rand=array( 3 "img/img_6521.png", 4 "img/img_6522.png", 5 "img/img_6524.png", 6 "img/img_6525.png", 7 "img/img_6526.png", 8 "img/img_6527.png", 9 ); 10 $image_rand=$image_rand[mt_rand(0,count($image_rand)-1)]; 11 echo '<img src=".$image_rand."alt="">'; 12 ?>

チェックしたのは
・画像ファイルの階層と指定(置き場所)
・ファイル名ミス(大文字小文字など)
・サーバーにアップロードしたか
で、それらは問題なしでした。

仮想では

HTML

1<img src=".$image_rand."alt=""> 2

と(たぶん)ちゃんとHTML化されています。
どうしたらサイトに画像を表示できますか?
コード内どこかで間違えているところがあったら教えていただきたいです

追記:
jpg階層
画像で載せたんですが、HTMLのファイルと画像は同階層になっていますか?(私の思っていたのと違うかもしれないので確認していただけると助かります)
あと、ブラウザで確認したソースでは画像部分が

PHP

1<img src="$image_rand."alt="">

になっていました。この時点で$image_rand.ではなくファイル名(img_6521.pngなど)が指定されていないとダメということでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2019/02/11 07:10

出力部分を「echo "<img src=\"$image_rand\" alt=\"\">"; 」に書き換えた場合、動作に変化は見られますか?
Kitami

2019/02/11 07:21

回答ありがとうございます。 ブラウザの表示、ソースともに変化は見られませんでした…
Kitami

2019/02/11 07:45

仮想サーバーはatomのパッケージにある script を使い、ブラウザではロリポップのレンタルサーバーを使っています
Kitami

2019/02/11 07:57 編集

php-serverでひらいてみたところ、うまくいきました!なのでロリポップサーバーへのアップロード関連がうまく行ってないんだとわかりました。色々チェックし直して見ます。 ありがとうございます!
gouf

2019/02/11 07:59

1歩前進ですね。状況をまとめた自己回答をベストアンサーに設定して、また改めて質問してみると良いかもしれません
Kitami

2019/02/11 08:06

嬉しいです! 確かに、状況まとめた方が良いですね。ついさっきベストアンサーを設定しましたが、後からでも自己回答はできるみたいなのでやってみます!
guest

回答3

0

ベストアンサー

php

1<?php 2 3 $image_array = array( 4 "img/img_6521.png", 5 "img/img_6522.png", 6 "img/img_6524.png", 7 "img/img_6525.png", 8 "img/img_6526.png", 9 "img/img_6527.png", 10 ); 11 $image_rand = $image_array[mt_rand(0,count($image_array)-1)]; 12 echo '<img src="'.$image_rand.'" alt="">';

で動作確認できてる。

ちゃんと動かないとしたら、編集中phpファイルを保存し忘れていないかとか、
アップロードし忘れていないかとか、
基本的なところを点検するべし。

個人的には、
配列データだったところに突然配列じゃないデータが入るのは気持ち悪いので、
あえて別の変数名を使うようにした。
代入演算子「=」の前後に空白を挿入して見やすくしたりもした。

投稿2019/02/11 07:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kitami

2019/02/11 07:37

ありがとうございます。 コピペしてやって見たところ、仮想では <img src="img/img_6522.png" alt=""> という感じでちゃんとランダム表示されるようになりました! サーバーで見るとまだ表示されないのでコード以外をもう一度チェックして見ます
guest

0

まとめメモです
kei344さん、m6uさん、goufさん、3人のすごい方々に助けていただきました。
本当にありがとうございました!


1:画像の状態から

PHP

1 $image_rand = $image_array[mt_rand(0,count($image_array)-1)]; 2 echo '<img src="'.$image_rand.'" alt="">';

に変更。
(・ここで’’の打ちミス直しと

PHP

1$image_rand=$image_rand 23$image_rand=$image_array

に変更している)

結果↓
出力が

HTML

1<img src="$image_rand."alt=""> 2から 3<img src="img/img_6522.png" alt="">

と、ちゃんとランダム出力されるようになる。(仮想・ローカル・ロリポップサーバー全て)

2:(ここでAtom php-serverを導入して仮想とローカルサーバーでは表示も出来ていることを確認)

3:ロリポップサーバーの画像表示のみ、上手くいかないのでアップロードやパス、フォルダの階層に問題があるとわかる。

4:アップロードがファイルごとでなく画像毎にやっているのでファイルの階層がローカルとロリポップサーバーの方で違ってしまって表示されないのでは?と推測。
ファイルごとアップロードする方法が見つからなかったので画像それぞれをHTMLと同じ階層に移してアップロードし直す
(これは画像ファイルが増えてきたら見づらいので、まとめたフォルダに入れたまま上手くアップロードする方法を探したいと思います)
→3/13追記:ロリポップアップロードページにて、「新規ファイル」を作成すると、その中に階層分けして画像をアップロードできました。(なのでファイル内で画像とテキストファイルが混在することなく見易くなりました)


5:ロリポップサーバーでも表示成功!いえーい

投稿2019/02/11 09:09

編集2019/03/13 08:07
Kitami

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

とりあえず。

PHP

1// echo '<img src=".$image_rand."alt="">'; 2// ↓ ↓ 3 echo '<img src="'.$image_rand.'"alt="">';

投稿2019/02/11 05:52

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kitami

2019/02/11 05:55

ありがとうございます! 直してみたんですがやはり表示されません…
kei344

2019/02/11 06:20

<img src="img/img_6522.png"alt="">とかが出力されているはずですよね。出力されたHTML(ブラウザで「ページのソースを表示」)で確認してください。 PHPファイルと同階層にフォルダimgがあって、そのなかにimg_6522.pngなど画像が有るか確認してみてください。
Kitami

2019/02/11 06:43

追記しましたので確認していただけると助かります…!よろしくお願いいたします。
kei344

2019/02/11 06:49

カンマが多いですので、確認してみてください。
Kitami

2019/02/11 07:25

echo '<img src="'’.$image_rand.'’"alt="">'; ↓ echo '<img src="'.$image_rand.'"alt="">'; に直しました!が変化なしで表示されませんでした…
kei344

2019/02/11 08:03

出力されたHTML(ブラウザで「ページのソースを表示」)で確認してください。 表示されるかどうかの前に、HTMLとして正しい物が出ているかどうかが先です。 正しくHTMLが出力されているならば、パスの問題か、画像がパスから探せない状態かどちらかだと思います。
Kitami

2019/02/11 08:33

atomの仮想、ローカルサーバー、ロリポップサーバー共にHTMLは正しく出力されるようになったので、最終的に画像それぞれの階層をHTMLと同じにしてアップロードし直したところ、万事うまくいきました! 本当にありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問