お世話になります。phpを触り出している初心者です。携帯に対応させたいのですが、phpだけでいっぱいなので助けてください.
数字が0だったら非表示
2だったら2の画像・・・というようなものを作りたいのですが
imgタグの埋め込み方・記述方法がよくわかりません。
↓数字を文字で表示する方法はこれで一応やってみました。
<?php
$number1 = 0;
$number2 = 2;
$number3 = 3;
$number4 = 4;
if ($number1 == true) {
echo"<p>0は非表示です。";
}
if ($number2 == true) {
echo"<p>1の画像です。";
}
if ($number3 == true) {
echo"<p>2の画像です。";
}
if ($number4 == true) {
echo"<p>3の画像です。";
}
?>
しかし画像がうまくいかずIE6では一種類の画像だけ表示されて
他の新しいブラウザでは文字化けしてる状態です。
それぞれ違う画像を当てはめる場合
どのように数値を増やして記述したらよいのでしょう?
色々試していますがこの記述も正しいのがわかりません。
<?php
$gazou = imagecreatefromgif("img/01.gif");
imagegif($gazou);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="content-Type" content="application/xhtml+xml; charset=shift_jis" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<title>数字で分岐して画像を表示</title>
</head>
<body>
<div style="text-align:center;">
<?php
$number1 = 0;
$number2 = 1;
$number3 = 2;
$number4 = 3;
if ($number1 == true) {
echo'<img src="gazou.php" />';
}
if ($number2 == true) {
echo'<img src="gazou.php" />';
}
if ($number3 == true) {
echo'<img src="gazou.php" />';
}
if ($number4 == true) {
echo'<img src="gazou.php" />';
}
?>
</div>
</body>
</html>
No.11ベストアンサー
- 回答日時:
複数の回答者が同時に別々の方法論を説明しているため、質問者さんは混乱されているように見受けます。
■hogehoge78のパターンに関して
説明が若干雑だったようです。
私の説明した方法は、「test19.php」というファイルと、「gazou.php」というファイルを別々に分ける方法です。
<img src="xxxx">というタグは知ってのとおり画像パスを指定するとその画像を出力します。
なので、src="gazou.php"として、PHPスクリプトを指定すると、
それは当然PHPスクリプトと認識されますので、画像が表示されません。
なので、header("Content-Type:image/gif");という記述をgazou.php内に記述してやり、
「これは画像だ」という風にブラウザに認識させて、
最後にimagegif()関数にて、画像を出力させています。
その為、「test19.php」の中に、上記の記述を含めると、正常に動作いたしません。
■koke29さん、Slyarさんのパターンに関して
hogehoge78のやり方は、画像をPHPスクリプトで表現する、ということで、
上記のように色々考えなければいけませんが、お二方のやり方は、
素直に<img src="xxxx">に記述したいimgフォルダに入っている01.gif/02.gifなどを
if文などの条件式を用いることで、動的にファイル名を変更して、ファイル名の記述を書き出す
というものです。
■imagecreatefromgif/imagegif関数の意味に関して
これらの関数は、GDライブラリという、画像を編集するときに使う関数です。
例えばある画像の上に動的に任意の文字を挿入して出力したい、とか
アクセスカウンタでimgタグで00.gif~09.gifをいちいち指定しないで、
アクセス数に応じて一個の画像として表示したいときなどに使います。
なので、今回の質問者さんのサンプルのスクリプトにはあまり適合する内容ではないかもしれません。
以上、長文失礼しました。
ご丁寧なフォローありがとうございましす。
php本の画像に関するページが少なく
imagecreatefromgifというのをたまたまサンプルで見つけ
使えるのかと試したんですがどうも目的が違うようですね。
>その為、「test19.php」の中に、上記の記述を含めると、正常に動作いたしません。
test19.phpで保存しないで
上の項目だけはgazou.phpで保存して別にするということですか?
基本がわかっていなくてすみません。勉強します!
No.13
- 回答日時:
解決されたようでよかったです!
横から口を出してしまったために混乱してしまったんですね
hogehoge78様の適切なまとめが解決の早道になったようで助かりました
解決済みですが、私の提案でご希望の処理を作る方法も一応
$numberに何を代入するかで、希望の使い方も可能です
私の場合はフォームで送信されるものとして提案していたので
$_REQUEST[number] としていますが、文字列から取り出した値を代入で
後半部分はそのままでも流用可能です
$number = 文字列から取り出した値;
という書き方が出来ればOKです
配列を利用する方法ですので、最初はとっつきにくいかもしれませんが
覚えるととっても便利なので提案してみました
今回のような使い方なら長々とif文を書く必要もないので便利ですよー
(配列に無い値と0の時はimgタグ自体を非表示にする処理は必要です)
では。質問者様&回答者の皆様、お疲れ様でした。
すみません。大変遅くなりまして申し訳ありません。
皆様には本当に感謝しております。
今は第二段の疑問に悩んでいますが質問に至らない事でなかなか
前に進めません。^^;
とりあえず赤ん坊のような私にご親切に色々教えてくださって
ありがとうございます!
本当は皆様に同じポイントを差し上げたいのですがシステム上申しありません。
また、別便で質問を出すつもりですがまたご指導いただけたら嬉しいです。
No.12
- 回答日時:
>test19.phpで保存しないで
>上の項目だけはgazou.phpで保存して別にするということですか?
⇒その通りです。
「gazou.php」というファイルを画像であると見立てて、img srcにパス指定します。
PHPスクリプトも画像も他のファイルExcelファイルやWordファイルも全て、バイナリデータとして表現されます。
それらの画像ファイルなどをメモ帳(notepad)にドラッグ&ドロップしてみるとなにやら文字化けしたようなものが表示されてくると思います。
メモ帳は文字データを編集するソフトなので、文字データではないものをドラッグ&ドロップすると、文字データではないのに、がんばって文字データとして読み込もうとします。その為、文字っぽいところは文字に変換して変換できないところは適当な文字に割り振ったりして表現し、文字化けしたような変な文字列が羅列されます。
つまり、gazou.php内では、echo文を使ってやって、そのバイナリデータをメモ帳で表示したように表示します。
ブラウザは、画像データも文字データも扱うことが出来るわけですが、そのechoされたデータ列が文字なのか、はたまた画像なのか、指定がされていないまま表示しろと命令しても、上手く解釈できず、画像と認識してくれません。
そこで、header('image/gif');
という指定をしてやって、「今から出力する(echoする)ものはGIF画像ですよ」と先に指定(HTTPヘッダとして出力)してやります。
そうするとブラウザは画像と判断して表示します。
と、いうのが、gazou.phpで処理することの概要になります。
ありがとうございます!できました。三つ画像が並んで見えるようになりました。
そういうことだったのですね・・
これをもとに1つづつ数字を読み込んで画像を表示させるのをやりたいです。
ご説明も納得いきました。本当に感謝しています!
No.9
- 回答日時:
ちゃんと動いてますよ?
http://hot-soup.sakura.ne.jp/test/test19_01.php? …
↑これで見てみてください
実際にどういう風に使うのか不明なのですが
リンクさせるなら<a href=ここに↑のようなURL>にするとか
フォームならnumberを入力か選択させるものを作って送るとか
やり方は人それぞれだと思います
前にも書きましたが、こういう方法もありますよっていう一提案なので
これが普通ってことは無いと思います
あ~なるほど・・そうやるのですね?
ど初心者ですみません。
問題はこの数字を文字列のファイルを読み込んで
その文字列の何番目が0だったら非表示、1だったら赤い画像・・・という風にやりたいのです。
if文使うんでしょうけど・・・まとめ方を良く知らない為
長ったらしくなりそうです。まだたどりつきません。
でもここまではよくわかりました。ありがとうございます。
No.8
- 回答日時:
#1.2.6です
提示頂いたコードで試してみたところエラーになったので
header('Content-type: image/gif');
imagegif($gazou);
↑この2行をコメントアウト
私が提案した方法では、この2行は入れちゃダメみたいですね
また
if ($number1 == true) {
は
if ($number == true) { // $numner のあとの 1をとる
としないと、if文が真にならないので、ここも修正箇所です
以上でたぶん表示は出来るようになると思いますー
(サンプルコードで試したら表示出来ました)
大変遅くなりすみません。
直してみたのですが
http://hot-soup.sakura.ne.jp/test/test19_01.php
やはり変わらないようです。
サンプルコードとはどんな環境なのですか?
通常はその方法でやるのがいいのですか?
どうもXHMLの問題なのでしょうか?その辺をさぐってみます。
ありがとうございました。
No.7
- 回答日時:
若干記述に間違いがありました。
PHP部分を下記にしたらいかがでしょう。
-----test19.php
<?php
$number1 = true;
$number2 = true;
$number3 = true;
$number4 = false;
if ($number1 == true) {
echo'<img src="gazou.php?n=01" />';
}
if ($number2 == true) {
echo'<img src="gazou.php?n=02" />';
}
if ($number3 == true) {
echo'<img src="gazou.php?n=03" />';
}
if ($number4 == true) {
echo'<img src="gazou.php?n=04" />';
}
?>
大変遅くなりすみません。
おっしゃるとおりやってみましたが
http://hot-soup.sakura.ne.jp/test/test19.php
IEではファイルが三つならんでいますがファイルが壊れた状態。
firefoxは壊れていますとの事です。
XHTMLとの相性がわるいんでしょうか?
色々やってみます。
ありがとうございました。
No.6
- 回答日時:
配列の方法での補足です
$number = 2;なら 2が表示
$number = 3;なら 3が表示
実用的に考えると$numberの値は$_REQUEST/$_POST/$_GETの
どれかで受け取ります
HTML側で$numberにあたる数値を入力または選択した上でsubmit
↓
PHP側の処理
$number = $_REQUEST[number];
$gazo = array(
"1" => "01.gif",
"2" => "02.gif"
);
echo'<img src="img/'.$gazo[$number].'" />';
とすると、HTMLで入れた値によって表示される画像が変わります
こういう方法もありますよっていうことで、他の方の教えて下さっている
方法も試してみて扱いやすいもので作ってみて下さいねー
ご丁寧にありがとうございます。
考え方がそこまでいかないというのが現状ですが・・
http://hot-soup.sakura.ne.jp/test/test19_01.php
やはり画像が壊れて表示されます。
しかし私のやり方が悪いのかもしれないですが
こんな感じで入れてみました。
<?php
$number = $_REQUEST[number];
// 画像をブラウザに出力します
header('Content-type: image/gif');
imagegif($gazou);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="content-Type" content="application/xhtml+xml; charset=shift_jis" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<title>数字で分岐して画像を表示-numberを変数にするREQUEST</title>
</head>
<body>
<div style="text-align:center;">
<?php
$gazou = array(
"1" => "01.gif",
"2" => "02.gif",
"3" => "03.gif"
);
if ($number1 == true) {
echo'<img src="img/'.$gazou[$number].'" />';
}
?>
</div>
</body>
</html>
何度もすみません。
No.5
- 回答日時:
質問のニュアンスが分かりづらかったのですが、こういうことでしょうか。
-----gazou.php-------
<?php
$num = $_GET['n'];
$gazou = imagecreatefromgif("img/{$num}.gif");
// 画像をブラウザに出力します
header('Content-type: image/gif');
imagegif($gazou);
?>
-----mainのHTMLのほう-------
if ($number1 == true) {
echo'<img src="gazou.php?n=1" />';
}
if ($number2 == true) {
echo'<img src="gazou.php?n=2" />';
}
if ($number3 == true) {
echo'<img src="gazou.php?n=3" />';
}
if ($number4 == true) {
echo'<img src="gazou.php?n=4" />';
}
どうでしょう。
またありがとうございます。質問自体も結果があやふやな状態だったので、すみません。(本当はその数字をどうしたいのか・・ですよね?)
画像を変数にするのですね?
昨日その方法を試したところ(コピーしただけですが)
上に記述したところが
http://hot-soup.sakura.ne.jp/test/test19.php
このようになり画像が壊れた状態で表示されるようです。
ソースはこのようにただコピーしただけですが
どこかがちがうのでしょうか?
<?php
$num = $_GET['n'];
$gazou = imagecreatefromgif("img/{$num}.gif");
// 画像をブラウザに出力します
header('Content-type: image/gif');
imagegif($gazou);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja">
<head>
<meta http-equiv="content-Type" content="application/xhtml+xml; charset=shift_jis" />
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<title>数字で分岐して画像を表示-numberを変数にするGET</title>
</head>
<body>
<div style="text-align:center;">
<?php
if ($number1 == true) {
echo'<img src="gazou.php?n=1" />';
}
if ($number2 == true) {
echo'<img src="gazou.php?n=2" />';
}
if ($number3 == true) {
echo'<img src="gazou.php?n=3" />';
}
if ($number4 == true) {
echo'<img src="gazou.php?n=4" />';
}
?>
</div>
</body>
</html>
No.4
- 回答日時:
$numberを変数として、
<?
if($number=="0"){
echo '<p>0は非表示です。</p>';
}else{
echo '<img src="img/'.$number.'.gif">';
echo '<p>'.$number.'の画像です。</p>';
}
?>
としてみては?
>画像がうまくいかずIE6では一種類の画像だけ表示されて
>他の新しいブラウザでは文字化けしてる状態です。
ブラウザの問題じゃないかと。
文字化けについてはエンコードの指定を確認してみてください。
ありがとうございました。遅くなりすみません。
すっきりした記述ですね
早速htmlのbody部分に
<?
if($number=="0"){
echo '<p>0は非表示です。</p>';
}else{
echo '<img src="img/'.$number.'.gif">';
echo '<p>'.$number.'の画像です。</p>';
}
?>
を入れてみたら
画像は壊れていましたが、”の画像です。”と表示されました。
そこでhogehogeさんに教えられた様に↓を上の部分に追加したところ
1の画像のみが表示されるだけで’の画像です’はきえてしまっています。
<?php
$gazou = imagecreatefromgif("img/01.gif");
// 画像をブラウザに出力します
header('Content-type: image/gif');
imagegif($gazou);
?>
上の部分の記述が間違っているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCPDFについて
-
PHPで取得したHTML内のdiv要素...
-
Wordpressのタグを使ったPHPで...
-
セッション管理に関する質問
-
リダイレクト元のURLの取得方法...
-
imgタグでのphpの呼び出しについて
-
phpはサーバーサイドの言語であ...
-
php 完了画面の送信メールのコ...
-
CFileDialogの最初のディレクト...
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
phpのftp_get()でエラーが出ます。
-
phpでget_headers()が使えない?
-
Content-Typeが機能していない?
-
awsにApacheとPHPを入れて、何...
-
XAMPPでApacheが起動しなくなり...
-
PHPのif文でその処理を途中で抜...
-
ワードプレスサイト PHP8.0.25...
-
拡張子php画像をjpg画像等に変...
-
mb_send_mail関数が利用出来ない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
PHPSpreadsheetによる書き出し...
-
PHPにおける時間計算、時間足し...
-
PHPで取得したHTML内のdiv要素...
-
TCPDFについて
-
エクスプローラーでフォルダを...
-
¥マークを出力したいがバック...
-
ob_end_clean と ob_clean の違...
-
リダイレクト元のURLの取得方法...
-
PHPで`headers already sent`と...
-
PerlからPHPへ移行したときの注...
-
PHPでデータベースからデータを...
-
phpでの画像表示
-
image関数でMS Pゴシックを使い...
-
smarty foreach 半角スペース
-
webroot以外の画像の表示
-
phpにcssを適応させたい...
-
phpexcelにてsubmitボタンを押...
-
文字列を段落で分ける方法を教...
-
Spreadsheet_Excel_Writerのイ...
おすすめ情報